C++ Actor Framework 1.0.0
|
Low-level backend for IO multiplexing. More...
#include <multiplexer.hpp>
Classes | |
class | runnable |
Simple wrapper for runnables. More... | |
class | supervisor |
Makes sure the multiplier 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. | |
virtual expected< scribe_ptr > | new_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. | |
virtual doorman_ptr | new_doorman (native_socket fd)=0 |
Creates a new doorman from a native socket handle. | |
virtual expected< doorman_ptr > | 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 . | |
virtual datagram_servant_ptr | new_datagram_servant (native_socket fd)=0 |
Creates a new datagram_servant from a native socket handle. | |
virtual datagram_servant_ptr | new_datagram_servant_for_endpoint (native_socket fd, const ip_endpoint &ep)=0 |
virtual expected< datagram_servant_ptr > | new_remote_udp_endpoint (const std::string &host, uint16_t port)=0 |
Create a new datagram_servant to contact a remote endpoint host and port . | |
virtual expected< datagram_servant_ptr > | new_local_udp_endpoint (uint16_t port, const char *in=nullptr, bool reuse_addr=false)=0 |
Create a new datagram_servant that receives datagrams on the local port , optionally only accepting connections from IP address in . | |
virtual supervisor_ptr | make_supervisor ()=0 |
Creates a supervisor to keep the event loop running. | |
virtual bool | try_run_once ()=0 |
Executes all pending events without blocking. | |
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. | |
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. | |
virtual multiplexer_backend * | pimpl () |
Retrieves a pointer to the implementation or nullptr if CAF was compiled using the default backend. | |
const std::thread::id & | thread_id () const |
void | thread_id (std::thread::id tid) |
actor_system & | system () |
void | start () override |
Starts this scheduler and all of its workers. | |
void | stop () override |
Stops this scheduler and all of its workers. | |
Public Member Functions inherited from caf::scheduler | |
virtual void | schedule (resumable *what)=0 |
Schedules what to run at some point in the future. | |
virtual void | delay (resumable *what)=0 |
Delay the next execution of what . | |
Static Public Member Functions | |
static std::unique_ptr< multiplexer > | make (actor_system &sys) |
Creates an instance using the networking backend compiled with CAF. | |
Static Public Member Functions inherited from caf::scheduler | |
static std::unique_ptr< scheduler > | make_work_stealing (actor_system &sys) |
static std::unique_ptr< scheduler > | make_work_sharing (actor_system &sys) |
Protected Attributes | |
std::thread::id | tid_ |
Identifies the thread this multiplexer is running in. | |
actor_system * | sys_ |
Stores the actor system this multiplexer is part of. | |
Low-level backend for IO multiplexing.
void caf::io::network::multiplexer::dispatch | ( | F | fun | ) |
Invokes fun
in the multiplexer's event loop, calling fun()
immediately when called from inside the event loop.
@threadsafe
|
pure virtual |
Creates a new datagram_servant
from a native socket handle.
@threadsafe
|
pure virtual |
Creates a new doorman from a native socket handle.
@threadsafe
|
pure virtual |
Create a new datagram_servant
that receives datagrams on the local port
, optionally only accepting connections from IP address in
.
|
pure virtual |
Create a new datagram_servant
to contact a remote endpoint host
and port
.
|
pure virtual |
Creates a new scribe
from a native socket handle.
@threadsafe
|
pure virtual |
Tries to create an unbound TCP doorman bound to port
, optionally accepting only connections from IP address in
.
|
pure virtual |
Tries to connect to host
on given port
and returns a scribe
instance on success.
@threadsafe
void caf::io::network::multiplexer::post | ( | F | fun | ) |
Invokes fun
in the multiplexer's event loop, forcing execution to be delayed when called from inside the event loop.
@threadsafe
|
overridevirtual |
Starts this scheduler and all of its workers.
Implements caf::scheduler.
|
overridevirtual |
Stops this scheduler and all of its workers.
Implements caf::scheduler.
|
pure virtual |
Executes all pending events without blocking.
true
if at least one event was called, false
otherwise.
|
protected |
Identifies the thread this multiplexer is running in.
Must be set by the subclass.