libcaf  0.15.5
Public Member Functions | Friends | List of all members
caf::io::network::asio_multiplexer Class Reference

A wrapper for the boost::asio multiplexer. More...

#include <asio_multiplexer.hpp>

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

Public Member Functions

scribe_ptr new_scribe (asio_tcp_socket &&sock)
 
scribe_ptr new_scribe (native_socket fd) override
 Creates a new scribe from a native socket handle. More...
 
expected< scribe_ptrnew_tcp_scribe (const std::string &host, uint16_t port) override
 Tries to connect to host on given port and returns a scribe instance on success. More...
 
doorman_ptr new_doorman (asio_tcp_socket_acceptor &&sock)
 
doorman_ptr new_doorman (native_socket fd) override
 Creates a new doorman from a native socket handle. More...
 
expected< doorman_ptrnew_tcp_doorman (uint16_t port, const char *in, bool reuse_addr) override
 Tries to create an unbound TCP doorman bound to port, optionally accepting only connections from IP address in. More...
 
datagram_servant_ptr new_datagram_servant (native_socket fd) override
 Creates a new datagram_servant from a native socket handle. More...
 
datagram_servant_ptr new_datagram_servant_for_endpoint (native_socket fd, const ip_endpoint &ep) override
 
expected< datagram_servant_ptrnew_remote_udp_endpoint (const std::string &host, uint16_t port) override
 Create a new datagram_servant to contact a remote endpoint host and port. More...
 
expected< datagram_servant_ptrnew_local_udp_endpoint (uint16_t port, const char *in=nullptr, bool reuse_addr=false) override
 Create a new datagram_servant that receives datagrams on the local port, optionally only accepting connections from IP address in. More...
 
void exec_later (resumable *ptr) override
 Enqueues ptr to the job list of the execution unit. More...
 
 asio_multiplexer (actor_system *sys)
 
supervisor_ptr make_supervisor () override
 Creates a supervisor to keep the event loop running.
 
bool try_run_once () override
 Exectutes all pending events without blocking. More...
 
void run_once () override
 Runs at least one event and blocks if needed.
 
void run () override
 Runs events until all connection are closed.
 
multiplexer_backend * pimpl () override
 Retrieves a pointer to the implementation or nullptr if CAF was compiled using the default backend. More...
 
boost::asio::io_service & service ()
 
- Public Member Functions inherited from caf::io::network::multiplexer
 multiplexer (actor_system *sys)
 
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...
 
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
 
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.
 

Friends

class io::middleman
 
class supervisor
 

Additional Inherited Members

- Public Types inherited from caf::io::network::multiplexer
using supervisor_ptr = std::unique_ptr< supervisor >
 
- Static Public Member Functions inherited from caf::io::network::multiplexer
static std::unique_ptr< multiplexermake (actor_system &sys)
 Creates an instance using the networking backend compiled with CAF.
 
- Protected Attributes inherited from caf::io::network::multiplexer
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

A wrapper for the boost::asio multiplexer.

Member Function Documentation

◆ exec_later()

void caf::io::network::asio_multiplexer::exec_later ( resumable ptr)
overridevirtual

Enqueues ptr to the job list of the execution unit.

Warning
Must only be called from a resumable currently executed by this execution unit.

Implements caf::execution_unit.

◆ new_datagram_servant()

datagram_servant_ptr caf::io::network::asio_multiplexer::new_datagram_servant ( native_socket  fd)
overridevirtual

Creates a new datagram_servant from a native socket handle.

Implements caf::io::network::multiplexer.

◆ new_doorman()

doorman_ptr caf::io::network::asio_multiplexer::new_doorman ( native_socket  fd)
overridevirtual

Creates a new doorman from a native socket handle.

Implements caf::io::network::multiplexer.

◆ new_local_udp_endpoint()

expected< datagram_servant_ptr > caf::io::network::asio_multiplexer::new_local_udp_endpoint ( uint16_t  port,
const char *  in = nullptr,
bool  reuse_addr = false 
)
overridevirtual

Create a new datagram_servant that receives datagrams on the local port, optionally only accepting connections from IP address in.

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

Implements caf::io::network::multiplexer.

◆ new_remote_udp_endpoint()

expected< datagram_servant_ptr > caf::io::network::asio_multiplexer::new_remote_udp_endpoint ( const std::string &  host,
uint16_t  port 
)
overridevirtual

Create a new datagram_servant to contact a remote endpoint host and port.

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

Implements caf::io::network::multiplexer.

◆ new_scribe()

scribe_ptr caf::io::network::asio_multiplexer::new_scribe ( native_socket  fd)
overridevirtual

Creates a new scribe from a native socket handle.

Implements caf::io::network::multiplexer.

◆ new_tcp_doorman()

expected< doorman_ptr > caf::io::network::asio_multiplexer::new_tcp_doorman ( uint16_t  port,
const char *  in,
bool  reuse_addr 
)
overridevirtual

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.

Implements caf::io::network::multiplexer.

◆ new_tcp_scribe()

expected< scribe_ptr > caf::io::network::asio_multiplexer::new_tcp_scribe ( const std::string &  host,
uint16_t  port 
)
overridevirtual

Tries to connect to host on given port and returns a scribe instance on success.

Implements caf::io::network::multiplexer.

◆ pimpl()

multiplexer_backend * caf::io::network::asio_multiplexer::pimpl ( )
overridevirtual

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

Reimplemented from caf::io::network::multiplexer.

◆ try_run_once()

bool caf::io::network::asio_multiplexer::try_run_once ( )
overridevirtual

Exectutes all pending events without blocking.

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

Implements caf::io::network::multiplexer.


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