zmqpp 4.1.2
C++ bindings for 0mq (libzmq)
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
zmqpp::loop Class Reference

Loop object that helps to manage multiple socket by calling a user-defined handler for each socket when a watched event occurs. More...

#include <loop.hpp>

Collaboration diagram for zmqpp::loop:
Collaboration graph
[legend]

Classes

struct  timer_t
 

Public Types

typedef void * timer_id_t
 Type used to identify created timers withing loop.
 
typedef std::function< bool(void) > Callable
 

Public Member Functions

 loop ()
 Construct an empty polling model.
 
virtual ~loop ()
 Cleanup reactor.
 
void add (socket_t &socket, Callable callable, short const event=poller::poll_in)
 Add a socket to the loop, providing a handler that will be called when the monitored events occur.
 
void add (raw_socket_t const descriptor, Callable callable, short const event=poller::poll_in|poller::poll_error)
 
timer_id_t add (std::chrono::milliseconds delay, size_t times, Callable callable)
 Add a timed event to the loop, providing a handler that will be called when timer fires.
 
void reset (timer_id_t const timer)
 Reset timer in the loop, it will start counting delay time again.
 
void remove (timer_id_t const timer)
 Remove timer event from the loop.
 
void remove (socket_t const &socket)
 Stop monitoring a socket.
 
void remove (raw_socket_t const descriptor)
 Stop monitoring a standard socket.
 
void start ()
 Starts loop.
 

Private Types

typedef std::pair< zmq_pollitem_t, CallablePollItemCallablePair
 
typedef std::pair< std::unique_ptr< timer_t >, CallableTimerItemCallablePair
 

Private Member Functions

void add (const zmq_pollitem_t &item, Callable callable)
 
void add (std::unique_ptr< timer_t >, Callable callable)
 
bool start_handle_timers ()
 
bool start_handle_poller ()
 
void flush_remove_later ()
 Flush the fdRemoveLater_ and sockRemoveLater_ vector, effectively removing the item for the reactor and poller.
 
long tickless ()
 Calculate min time to wait in poller.
 

Static Private Member Functions

static bool TimerItemCallablePairComp (const TimerItemCallablePair &lhs, const TimerItemCallablePair &rhs)
 

Private Attributes

std::vector< PollItemCallablePairitems_
 
std::list< TimerItemCallablePairtimers_
 
std::vector< const socket_t * > sockRemoveLater_
 
std::vector< raw_socket_tfdRemoveLater_
 
std::vector< timer_id_ttimerRemoveLater_
 
poller poller_
 
bool dispatching_
 
bool rebuild_poller_
 

Detailed Description

Loop object that helps to manage multiple socket by calling a user-defined handler for each socket when a watched event occurs.

Calls assigned user-defined handler for timed events - repeaded and one-shot.

It uses zmq::poller as the underlying polling mechanism.

Member Typedef Documentation

◆ Callable

typedef std::function<bool (void) > zmqpp::loop::Callable

◆ PollItemCallablePair

typedef std::pair<zmq_pollitem_t, Callable> zmqpp::loop::PollItemCallablePair
private

◆ timer_id_t

typedef void* zmqpp::loop::timer_id_t

Type used to identify created timers withing loop.

◆ TimerItemCallablePair

typedef std::pair<std::unique_ptr<timer_t>, Callable> zmqpp::loop::TimerItemCallablePair
private

Constructor & Destructor Documentation

◆ loop()

zmqpp::loop::loop ( )

Construct an empty polling model.

◆ ~loop()

zmqpp::loop::~loop ( )
virtual

Cleanup reactor.

Any sockets will need to be closed separately.

Member Function Documentation

◆ add() [1/5]

void zmqpp::loop::add ( const zmq_pollitem_t &  item,
Callable  callable 
)
private

◆ add() [2/5]

void zmqpp::loop::add ( raw_socket_t const  descriptor,
Callable  callable,
short const  event = poller::poll_in | poller::poll_error 
)

Add a standard socket to the loop, providing a handler that will be called when the monitored events occur.

Parameters
descriptorthe standard socket to monitor (SOCKET under Windows, a file descriptor otherwise).
callablethe function that will be called by the loop when a registered event occurs on fd.
eventthe event flags to monitor.

◆ add() [3/5]

void zmqpp::loop::add ( socket_t socket,
Callable  callable,
short const  event = poller::poll_in 
)

Add a socket to the loop, providing a handler that will be called when the monitored events occur.

Parameters
socketthe socket to monitor.
callablethe function that will be called by the loop when a registered event occurs on socket.
eventthe event flags to monitor on the socket.

◆ add() [4/5]

loop::timer_id_t zmqpp::loop::add ( std::chrono::milliseconds  delay,
size_t  times,
Callable  callable 
)

Add a timed event to the loop, providing a handler that will be called when timer fires.

Parameters
delaytime after which handler will be executed.
timeshow many times should timer be reneved - 0 for infinte ammount.
callablethe function that will be called by the loop after delay.

◆ add() [5/5]

void zmqpp::loop::add ( std::unique_ptr< timer_t item,
Callable  callable 
)
private

◆ flush_remove_later()

void zmqpp::loop::flush_remove_later ( )
private

Flush the fdRemoveLater_ and sockRemoveLater_ vector, effectively removing the item for the reactor and poller.

◆ remove() [1/3]

void zmqpp::loop::remove ( raw_socket_t const  descriptor)

Stop monitoring a standard socket.

Parameters
descriptorthe standard socket to stop monitoring.

◆ remove() [2/3]

void zmqpp::loop::remove ( socket_t const &  socket)

Stop monitoring a socket.

Parameters
socketthe socket to stop monitoring.

◆ remove() [3/3]

void zmqpp::loop::remove ( timer_id_t const  timer)

Remove timer event from the loop.

Parameters
timeridentifier in the loop.

◆ reset()

void zmqpp::loop::reset ( timer_id_t const  timer)

Reset timer in the loop, it will start counting delay time again.

Times argument is preserved.

Parameters
timeridentifier in the loop.

◆ start()

void zmqpp::loop::start ( )

Starts loop.

It will block until one of handlers returns false.

◆ start_handle_poller()

bool zmqpp::loop::start_handle_poller ( )
private

◆ start_handle_timers()

bool zmqpp::loop::start_handle_timers ( )
private

◆ tickless()

long zmqpp::loop::tickless ( )
private

Calculate min time to wait in poller.

◆ TimerItemCallablePairComp()

bool zmqpp::loop::TimerItemCallablePairComp ( const TimerItemCallablePair lhs,
const TimerItemCallablePair rhs 
)
staticprivate

Member Data Documentation

◆ dispatching_

bool zmqpp::loop::dispatching_
private

◆ fdRemoveLater_

std::vector<raw_socket_t> zmqpp::loop::fdRemoveLater_
private

◆ items_

std::vector<PollItemCallablePair> zmqpp::loop::items_
private

◆ poller_

poller zmqpp::loop::poller_
private

◆ rebuild_poller_

bool zmqpp::loop::rebuild_poller_
private

◆ sockRemoveLater_

std::vector<const socket_t *> zmqpp::loop::sockRemoveLater_
private

◆ timerRemoveLater_

std::vector<timer_id_t> zmqpp::loop::timerRemoveLater_
private

◆ timers_

std::list<TimerItemCallablePair> zmqpp::loop::timers_
private

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