Rosetta 3.3
|
SignalHub capable of buffering while blocking. More...
#include <BufferedSignalHub.hh>
Public Types | |
typedef Super::Size | Size |
typedef std::vector< Signal > | Buffer |
Public Member Functions | |
BufferedSignalHub () | |
default constructor | |
virtual | ~BufferedSignalHub () |
default destructor | |
void | buffer () |
block signals and buffer them for release upon unblocking | |
virtual void | unblock () |
allow signals to be sent and release any signals that were buffered | |
bool | buffering () const |
are signals being buffered? | |
void | clear_buffer () |
clear the buffer | |
Size | buffer_size () const |
number of signals left in the buffer | |
Protected Member Functions | |
void | release_buffer () |
release the signals in the buffer | |
virtual bool | signal_allowed (Signal const s) |
is signal allowed to be passed? |
SignalHub capable of buffering while blocking.
This class is meant for use in implementations of the observer pattern that pass a single Signal object from the subject to its observers. Signals must be copyable to allow for buffering capability. An observer connects by binding one of its member functions to the BufferedSignalHub. The member function must be a unary function taking the desired Signal as its argument. Binding functions that pass references and const Signals will be interpreted correctly even if only 'Signal' is given as the template type. For example, when using a BufferedSignalHub< void, Signal >
it's possible to bind the following:
void f( Signal )
void f( Signal const )
void f( Signal const & )
However, using something like Signal &
or Signal const
as the template type will enforce references and/or const-ness.
typedef std::vector< Signal > utility::signals::BufferedSignalHub< ReturnType, Signal >::Buffer |
typedef Super::Size utility::signals::BufferedSignalHub< ReturnType, Signal >::Size |
Reimplemented from utility::signals::SignalHub< ReturnType, Signal >.
Reimplemented in utility::signals::PausableSignalHub< ReturnType, Signal >, and utility::signals::TokenHub< ReturnType, Signal >.
utility::signals::BufferedSignalHub< ReturnType, Signal >::BufferedSignalHub | ( | ) | [inline] |
default constructor
virtual utility::signals::BufferedSignalHub< ReturnType, Signal >::~BufferedSignalHub | ( | ) | [inline, virtual] |
default destructor
void utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer | ( | ) | [inline] |
block signals and buffer them for release upon unblocking
References utility::signals::SignalHub< ReturnType, Signal >::block().
Size utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer_size | ( | ) | const [inline] |
number of signals left in the buffer
bool utility::signals::BufferedSignalHub< ReturnType, Signal >::buffering | ( | ) | const [inline] |
are signals being buffered?
void utility::signals::BufferedSignalHub< ReturnType, Signal >::clear_buffer | ( | ) | [inline] |
clear the buffer
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer().
void utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer | ( | ) | [inline, protected] |
release the signals in the buffer
References utility::signals::BufferedSignalHub< ReturnType, Signal >::clear_buffer(), color_pdb::i, and utility::signals::SignalHub< ReturnType, Signal >::operator()().
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::unblock().
virtual bool utility::signals::BufferedSignalHub< ReturnType, Signal >::signal_allowed | ( | Signal const | s | ) | [inline, protected, virtual] |
is signal allowed to be passed?
If buffering is enabled, signal will be stored in buffer.
Reimplemented from utility::signals::SignalHub< ReturnType, Signal >.
References utility::signals::SignalHub< ReturnType, Signal >::blocked().
virtual void utility::signals::BufferedSignalHub< ReturnType, Signal >::unblock | ( | ) | [inline, virtual] |
allow signals to be sent and release any signals that were buffered
Reimplemented from utility::signals::SignalHub< ReturnType, Signal >.
References utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer(), and utility::signals::SignalHub< ReturnType, Signal >::unblock().