unilink  0.4.3
A simple C++ library for unified async communication
unilink::builder::BuilderInterface< T, Derived > Class Template Referenceabstract

Generic Builder interface for fluent API pattern. More...

#include <ibuilder.hpp>

Public Member Functions

virtual ~BuilderInterface ()=default
 
 BuilderInterface ()=default
 
 BuilderInterface (const BuilderInterface &)=default
 
 BuilderInterface (BuilderInterface &&)=default
 
BuilderInterfaceoperator= (const BuilderInterface &)=default
 
BuilderInterfaceoperator= (BuilderInterface &&)=default
 
virtual std::unique_ptr< T > build ()=0
 Build and return the configured product. More...
 
virtual Derived & auto_manage (bool auto_manage=true)=0
 Enable auto-manage functionality. More...
 
virtual Derived & on_data (std::function< void(const wrapper::MessageContext &)> handler)=0
 Set data handler callback. More...
 
template<typename U , typename F >
Derived & on_data (U *obj, F method)
 Set data handler callback using member function pointer. More...
 
virtual Derived & on_connect (std::function< void(const wrapper::ConnectionContext &)> handler)=0
 Set connection handler callback. More...
 
template<typename U , typename F >
Derived & on_connect (U *obj, F method)
 Set connection handler callback using member function pointer. More...
 
virtual Derived & on_disconnect (std::function< void(const wrapper::ConnectionContext &)> handler)=0
 Set disconnection handler callback. More...
 
template<typename U , typename F >
Derived & on_disconnect (U *obj, F method)
 Set disconnection handler callback using member function pointer. More...
 
virtual Derived & on_error (std::function< void(const wrapper::ErrorContext &)> handler)=0
 Set error handler callback. More...
 
template<typename U , typename F >
Derived & on_error (U *obj, F method)
 Set error handler callback using member function pointer. More...
 
Derived & use_line_framer (std::string_view delimiter="\n", bool include_delimiter=false, size_t max_length=65536)
 Use LineFramer for message segmentation (e.g., newline delimited) More...
 
Derived & use_packet_framer (const std::vector< uint8_t > &start_pattern, const std::vector< uint8_t > &end_pattern, size_t max_length)
 Use PacketFramer for message segmentation (binary pattern matching) More...
 
Derived & on_message (std::function< void(memory::ConstByteSpan)> handler)
 Set message handler callback (for framed messages) More...
 
template<typename U , typename F >
Derived & on_message (U *obj, F method)
 Set message handler callback using member function pointer. More...
 

Protected Attributes

std::unique_ptr< framer::IFramerframer_
 
std::function< void(memory::ConstByteSpan)> on_message_
 

Detailed Description

template<typename T, typename Derived>
class unilink::builder::BuilderInterface< T, Derived >

Generic Builder interface for fluent API pattern.

This interface provides a common base for all builder classes, enabling a consistent fluent API across different wrapper types.

Template Parameters
TThe product type that this builder creates
DerivedThe derived builder type (CRTP)

Definition at line 45 of file ibuilder.hpp.

Constructor & Destructor Documentation

◆ ~BuilderInterface()

template<typename T , typename Derived >
virtual unilink::builder::BuilderInterface< T, Derived >::~BuilderInterface ( )
virtualdefault

◆ BuilderInterface() [1/3]

template<typename T , typename Derived >
unilink::builder::BuilderInterface< T, Derived >::BuilderInterface ( )
default

◆ BuilderInterface() [2/3]

template<typename T , typename Derived >
unilink::builder::BuilderInterface< T, Derived >::BuilderInterface ( const BuilderInterface< T, Derived > &  )
default

◆ BuilderInterface() [3/3]

template<typename T , typename Derived >
unilink::builder::BuilderInterface< T, Derived >::BuilderInterface ( BuilderInterface< T, Derived > &&  )
default

Member Function Documentation

◆ auto_manage()

template<typename T , typename Derived >
virtual Derived& unilink::builder::BuilderInterface< T, Derived >::auto_manage ( bool  auto_manage = true)
pure virtual

Enable auto-manage functionality.

Parameters
auto_manageWhether to automatically manage the wrapper lifecycle
Returns
Derived& Reference to this builder for method chaining

Implemented in unilink::builder::UdpBuilder, unilink::builder::TcpServerBuilder, unilink::builder::TcpClientBuilder, and unilink::builder::SerialBuilder.

◆ build()

template<typename T , typename Derived >
virtual std::unique_ptr<T> unilink::builder::BuilderInterface< T, Derived >::build ( )
pure virtual

Build and return the configured product.

Returns
std::unique_ptr<T> The configured wrapper instance

Implemented in unilink::builder::UdpBuilder, unilink::builder::TcpServerBuilder, unilink::builder::TcpClientBuilder, and unilink::builder::SerialBuilder.

◆ on_connect() [1/2]

template<typename T , typename Derived >
virtual Derived& unilink::builder::BuilderInterface< T, Derived >::on_connect ( std::function< void(const wrapper::ConnectionContext &)>  handler)
pure virtual

Set connection handler callback.

Parameters
handlerFunction to handle connection events with context
Returns
Derived& Reference to this builder for method chaining

Implemented in unilink::builder::UdpBuilder, unilink::builder::TcpServerBuilder, unilink::builder::TcpClientBuilder, and unilink::builder::SerialBuilder.

◆ on_connect() [2/2]

template<typename T , typename Derived >
template<typename U , typename F >
Derived& unilink::builder::BuilderInterface< T, Derived >::on_connect ( U *  obj,
method 
)
inline

Set connection handler callback using member function pointer.

Template Parameters
UClass type
FMember function type
Parameters
objObject instance
methodMember function pointer
Returns
Derived& Reference to this builder for method chaining

Definition at line 103 of file ibuilder.hpp.

◆ on_data() [1/2]

template<typename T , typename Derived >
virtual Derived& unilink::builder::BuilderInterface< T, Derived >::on_data ( std::function< void(const wrapper::MessageContext &)>  handler)
pure virtual

Set data handler callback.

Parameters
handlerFunction to handle incoming data with context
Returns
Derived& Reference to this builder for method chaining

Implemented in unilink::builder::UdpBuilder, unilink::builder::TcpServerBuilder, unilink::builder::TcpClientBuilder, and unilink::builder::SerialBuilder.

◆ on_data() [2/2]

template<typename T , typename Derived >
template<typename U , typename F >
Derived& unilink::builder::BuilderInterface< T, Derived >::on_data ( U *  obj,
method 
)
inline

Set data handler callback using member function pointer.

Template Parameters
UClass type
FMember function type
Parameters
objObject instance
methodMember function pointer
Returns
Derived& Reference to this builder for method chaining

Definition at line 83 of file ibuilder.hpp.

◆ on_disconnect() [1/2]

template<typename T , typename Derived >
virtual Derived& unilink::builder::BuilderInterface< T, Derived >::on_disconnect ( std::function< void(const wrapper::ConnectionContext &)>  handler)
pure virtual

Set disconnection handler callback.

Parameters
handlerFunction to handle disconnection events with context
Returns
Derived& Reference to this builder for method chaining

Implemented in unilink::builder::UdpBuilder, unilink::builder::TcpServerBuilder, unilink::builder::TcpClientBuilder, and unilink::builder::SerialBuilder.

◆ on_disconnect() [2/2]

template<typename T , typename Derived >
template<typename U , typename F >
Derived& unilink::builder::BuilderInterface< T, Derived >::on_disconnect ( U *  obj,
method 
)
inline

Set disconnection handler callback using member function pointer.

Template Parameters
UClass type
FMember function type
Parameters
objObject instance
methodMember function pointer
Returns
Derived& Reference to this builder for method chaining

Definition at line 123 of file ibuilder.hpp.

◆ on_error() [1/2]

template<typename T , typename Derived >
virtual Derived& unilink::builder::BuilderInterface< T, Derived >::on_error ( std::function< void(const wrapper::ErrorContext &)>  handler)
pure virtual

Set error handler callback.

Parameters
handlerFunction to handle error events with context
Returns
Derived& Reference to this builder for method chaining

Implemented in unilink::builder::UdpBuilder, unilink::builder::TcpServerBuilder, unilink::builder::TcpClientBuilder, and unilink::builder::SerialBuilder.

◆ on_error() [2/2]

template<typename T , typename Derived >
template<typename U , typename F >
Derived& unilink::builder::BuilderInterface< T, Derived >::on_error ( U *  obj,
method 
)
inline

Set error handler callback using member function pointer.

Template Parameters
UClass type
FMember function type
Parameters
objObject instance
methodMember function pointer
Returns
Derived& Reference to this builder for method chaining

Definition at line 143 of file ibuilder.hpp.

◆ on_message() [1/2]

template<typename T , typename Derived >
Derived& unilink::builder::BuilderInterface< T, Derived >::on_message ( std::function< void(memory::ConstByteSpan)>  handler)
inline

Set message handler callback (for framed messages)

Parameters
handlerFunction to handle complete messages
Returns
Derived& Reference to this builder

Definition at line 180 of file ibuilder.hpp.

◆ on_message() [2/2]

template<typename T , typename Derived >
template<typename U , typename F >
Derived& unilink::builder::BuilderInterface< T, Derived >::on_message ( U *  obj,
method 
)
inline

Set message handler callback using member function pointer.

Template Parameters
UClass type
FMember function type
Parameters
objObject instance
methodMember function pointer
Returns
Derived& Reference to this builder

Definition at line 194 of file ibuilder.hpp.

◆ operator=() [1/2]

template<typename T , typename Derived >
BuilderInterface& unilink::builder::BuilderInterface< T, Derived >::operator= ( BuilderInterface< T, Derived > &&  )
default

◆ operator=() [2/2]

template<typename T , typename Derived >
BuilderInterface& unilink::builder::BuilderInterface< T, Derived >::operator= ( const BuilderInterface< T, Derived > &  )
default

◆ use_line_framer()

template<typename T , typename Derived >
Derived& unilink::builder::BuilderInterface< T, Derived >::use_line_framer ( std::string_view  delimiter = "\n",
bool  include_delimiter = false,
size_t  max_length = 65536 
)
inline

Use LineFramer for message segmentation (e.g., newline delimited)

Parameters
delimiterDelimiter string (default: "\n")
include_delimiterWhether to include delimiter in the message
max_lengthMaximum message length
Returns
Derived& Reference to this builder

Definition at line 156 of file ibuilder.hpp.

◆ use_packet_framer()

template<typename T , typename Derived >
Derived& unilink::builder::BuilderInterface< T, Derived >::use_packet_framer ( const std::vector< uint8_t > &  start_pattern,
const std::vector< uint8_t > &  end_pattern,
size_t  max_length 
)
inline

Use PacketFramer for message segmentation (binary pattern matching)

Parameters
start_patternStart pattern bytes
end_patternEnd pattern bytes
max_lengthMaximum packet length
Returns
Derived& Reference to this builder

Definition at line 169 of file ibuilder.hpp.

Member Data Documentation

◆ framer_

template<typename T , typename Derived >
std::unique_ptr<framer::IFramer> unilink::builder::BuilderInterface< T, Derived >::framer_
protected

Definition at line 199 of file ibuilder.hpp.

◆ on_message_

template<typename T , typename Derived >
std::function<void(memory::ConstByteSpan)> unilink::builder::BuilderInterface< T, Derived >::on_message_
protected

Definition at line 200 of file ibuilder.hpp.


The documentation for this class was generated from the following file: