libcaf  0.15.5
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 scribe_ptr new_scribe (native_socket fd)=0
 Creates a new scribe from a native socket handle. More...
 
virtual expected< scribe_ptrnew_tcp_scribe (const std::string &host, uint16_t port)=0
 Tries to connect to host on given port and returns a scribe instance on success. More...
 
virtual doorman_ptr new_doorman (native_socket fd)=0
 Creates a new doorman from a native socket handle. More...
 
virtual expected< doorman_ptrnew_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 supervisor_ptr make_supervisor ()=0
 Creates a supervisor to keep the event loop running.
 
virtual bool try_run_once ()=0
 Exectutes all pending events without blocking. More...
 
virtual void run_once ()=0
 Runs at least one event and blocks if needed.
 
virtual void run ()=0
 Runs events until all connection are closed.
 
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

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 doorman_ptr caf::io::network::multiplexer::new_doorman ( native_socket  fd)
pure virtual

Creates a new doorman from a native socket handle.

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

virtual scribe_ptr caf::io::network::multiplexer::new_scribe ( native_socket  fd)
pure virtual

Creates a new scribe from a native socket handle.

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

virtual expected<doorman_ptr> 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<scribe_ptr> 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 a scribe instance 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.

virtual bool caf::io::network::multiplexer::try_run_once ( )
pure virtual

Exectutes all pending events without blocking.

Returns
true if at least one event was called, false otherwise.

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

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: