libcaf  0.15.3
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
caf::io::network::multiplexer Class Referenceabstract

Low-level backend for IO multiplexing. More...

#include <multiplexer.hpp>

Inheritance diagram for caf::io::network::multiplexer:
caf::execution_unit caf::io::network::asio_multiplexer

Classes

class  runnable
 Simple wrapper for runnables. More...
 
class  supervisor
 Makes sure the multipler does not exit its event loop until the destructor of supervisor has been called. More...
 

Public Types

using supervisor_ptr = std::unique_ptr< supervisor >
 

Public Member Functions

 multiplexer (actor_system *sys)
 
virtual expected< connection_handlenew_tcp_scribe (const std::string &host, uint16_t port)=0
 Tries to connect to host on given port and returns an unbound connection handle on success. More...
 
virtual expected< void > assign_tcp_scribe (abstract_broker *ptr, connection_handle hdl)=0
 Assigns an unbound scribe identified by hdl to ptr. More...
 
virtual connection_handle add_tcp_scribe (abstract_broker *ptr, native_socket fd)=0
 Creates a new TCP doorman from a native socket handle. More...
 
virtual expected< connection_handleadd_tcp_scribe (abstract_broker *, const std::string &host, uint16_t port)=0
 Tries to connect to host on port and returns a new scribe managing the connection on success. More...
 
virtual expected< std::pair< accept_handle, uint16_t > > new_tcp_doorman (uint16_t port, const char *in=nullptr, bool reuse_addr=false)=0
 Tries to create an unbound TCP doorman bound to port, optionally accepting only connections from IP address in. More...
 
virtual expected< void > assign_tcp_doorman (abstract_broker *ptr, accept_handle hdl)=0
 Assigns an unbound doorman identified by hdl to ptr. More...
 
virtual accept_handle add_tcp_doorman (abstract_broker *ptr, native_socket fd)=0
 Creates a new TCP doorman from a native socket handle. More...
 
virtual expected< std::pair< accept_handle, uint16_t > > add_tcp_doorman (abstract_broker *ptr, uint16_t port, const char *in=nullptr, bool reuse_addr=false)=0
 Tries to create a new TCP doorman running on port p, optionally accepting only connections from IP address in. More...
 
virtual supervisor_ptr make_supervisor ()=0
 Creates a supervisor to keep the event loop running.
 
virtual void run ()=0
 Runs the multiplexers event loop.
 
template<class F >
void dispatch (F fun)
 Invokes fun in the multiplexer's event loop, calling fun() immediately when called from inside the event loop. More...
 
template<class F >
void post (F fun)
 Invokes fun in the multiplexer's event loop, forcing execution to be delayed when called from inside the event loop. More...
 
virtual boost::asio::io_service * pimpl ()
 Retrieves a pointer to the implementation or nullptr if CAF was compiled using the default backend. More...
 
const std::thread::id & thread_id () const
 
void thread_id (std::thread::id tid)
 
- Public Member Functions inherited from caf::execution_unit
 execution_unit (actor_system *sys)
 
 execution_unit (execution_unit &&)=delete
 
 execution_unit (const execution_unit &)=delete
 
virtual void exec_later (resumable *ptr)=0
 Enqueues ptr to the job list of the execution unit. More...
 
actor_systemsystem () const
 Returns the enclosing actor system. More...
 
proxy_registryproxy_registry_ptr ()
 Returns a pointer to the proxy factory currently associated to this unit.
 
void proxy_registry_ptr (proxy_registry *ptr)
 Associated a new proxy factory to this unit.
 

Static Public Member Functions

static std::unique_ptr< multiplexermake (actor_system &sys)
 Creates an instance using the networking backend compiled with CAF.
 

Protected Attributes

std::thread::id tid_
 Identifies the thread this multiplexer is running in. More...
 
- Protected Attributes inherited from caf::execution_unit
actor_systemsystem_
 
proxy_registryproxies_
 

Detailed Description

Low-level backend for IO multiplexing.

Member Function Documentation

virtual accept_handle caf::io::network::multiplexer::add_tcp_doorman ( abstract_broker ptr,
native_socket  fd 
)
pure virtual

Creates a new TCP doorman from a native socket handle.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

virtual expected<std::pair<accept_handle, uint16_t> > caf::io::network::multiplexer::add_tcp_doorman ( abstract_broker ptr,
uint16_t  port,
const char *  in = nullptr,
bool  reuse_addr = false 
)
pure virtual

Tries to create a new TCP doorman running on port p, optionally accepting only connections from IP address in.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

virtual connection_handle caf::io::network::multiplexer::add_tcp_scribe ( abstract_broker ptr,
native_socket  fd 
)
pure virtual

Creates a new TCP doorman from a native socket handle.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

virtual expected<connection_handle> caf::io::network::multiplexer::add_tcp_scribe ( abstract_broker ,
const std::string &  host,
uint16_t  port 
)
pure virtual

Tries to connect to host on port and returns a new scribe managing the connection on success.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

virtual expected<void> caf::io::network::multiplexer::assign_tcp_doorman ( abstract_broker ptr,
accept_handle  hdl 
)
pure virtual

Assigns an unbound doorman identified by hdl to ptr.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

virtual expected<void> caf::io::network::multiplexer::assign_tcp_scribe ( abstract_broker ptr,
connection_handle  hdl 
)
pure virtual

Assigns an unbound scribe identified by hdl to ptr.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

template<class F >
void caf::io::network::multiplexer::dispatch ( fun)

Invokes fun in the multiplexer's event loop, calling fun() immediately when called from inside the event loop.

virtual expected<std::pair<accept_handle, uint16_t> > caf::io::network::multiplexer::new_tcp_doorman ( uint16_t  port,
const char *  in = nullptr,
bool  reuse_addr = false 
)
pure virtual

Tries to create an unbound TCP doorman bound to port, optionally accepting only connections from IP address in.

Warning
Do not call from outside the multiplexer's event loop.

Implemented in caf::io::network::asio_multiplexer.

virtual expected<connection_handle> caf::io::network::multiplexer::new_tcp_scribe ( const std::string &  host,
uint16_t  port 
)
pure virtual

Tries to connect to host on given port and returns an unbound connection handle on success.

Implemented in caf::io::network::asio_multiplexer.

virtual boost::asio::io_service* caf::io::network::multiplexer::pimpl ( )
virtual

Retrieves a pointer to the implementation or nullptr if CAF was compiled using the default backend.

Reimplemented in caf::io::network::asio_multiplexer.

template<class F >
void caf::io::network::multiplexer::post ( fun)

Invokes fun in the multiplexer's event loop, forcing execution to be delayed when called from inside the event loop.

Member Data Documentation

std::thread::id caf::io::network::multiplexer::tid_
protected

Identifies the thread this multiplexer is running in.

Must be set by the subclass.


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