Rosetta
|
forward declaration for SignalHub More...
#include <BufferedSignalHub.hh>
Public Types | |
typedef Super::Size | Size |
typedef std::vector< Signal > | Buffer |
![]() | |
typedef platform::Size | Size |
Public Member Functions | |
BufferedSignalHub () | |
default constructor More... | |
~BufferedSignalHub () override=default | |
default destructor More... | |
void | buffer () |
block signals and buffer them for release upon unblocking More... | |
void | unblock () override |
allow signals to be sent and release any signals that were buffered More... | |
bool | buffering () const |
are signals being buffered? More... | |
void | clear_buffer () |
clear the buffer More... | |
Size | buffer_size () const |
number of signals left in the buffer More... | |
![]() | |
SignalHub () | |
default constructor More... | |
virtual | ~SignalHub () |
default destructor More... | |
void | operator() (Signal s) |
send signal to all observers connected to the hub More... | |
Size | size () const |
number of connections to the hub More... | |
void | block () |
block signals from being sent More... | |
bool | blocked () const |
are signals blocked? More... | |
void | clear () |
clear all connections More... | |
template<typename MemFn , typename Ptr > | |
Link | connect (MemFn fn, Ptr ptr) |
connect an observer's member function to this hub More... | |
template<typename MemFn , typename Ptr > | |
bool | disconnect (MemFn fn, Ptr ptr) |
disconnect an observer's member function from this hub More... | |
Size | receive_linkunits_from (SignalHub const &src) |
transfer linkunits from source to this SignalHub More... | |
Links | current_links () const |
return a copy of the list of links currently being managed by this SignalHub More... | |
Protected Member Functions | |
void | release_buffer () |
release the signals in the buffer More... | |
bool | signal_allowed (Signal const s) override |
is signal allowed to be passed? More... | |
![]() | |
virtual void | send_signal (Signal s) |
send signal to all observers More... | |
virtual void | after_send () |
initiate an action after send (no-op in SignalHub) More... | |
template<typename MemFn , typename Ptr > | |
Link | connect (MemFn fn, Ptr ptr, LinkUnits &links) const |
connect an observer's member function to the given LinkUnits More... | |
template<typename MemFn , typename Ptr > | |
bool | disconnect (MemFn fn, Ptr ptr, LinkUnits &links) const |
disconnect an observer's member function from the given LinkUnits More... | |
template<typename Functor > | |
LinkUnits::iterator | find_connection (Functor f, LinkUnits &links) const |
find a specific connection to this hub More... | |
void | send (Signal s, LinkUnits &links) const |
send signal to all links taking into account validity and local blocking More... | |
void | invalidate_all (LinkUnits &links) const |
invalidate and destroy internals of all links More... | |
void | remove_invalid (LinkUnits &links) const |
remove and destroy internals of invalid links More... | |
void | deallocate (LinkUnit &lu) const |
deallocate function stored in a LinkUnit More... | |
LinkUnits & | linkunits () |
returns the list of LinkUnits More... | |
Private Types | |
typedef SignalHub< ReturnType, Signal > | Super |
Private Member Functions | |
BufferedSignalHub (BufferedSignalHub const &rval) | |
disallow copy constructor More... | |
BufferedSignalHub & | operator= (BufferedSignalHub const &rval) |
disallow copy assignment More... | |
Private Attributes | |
Buffer | buffer_ |
signal buffer, only used when hub is blocked and buffering More... | |
bool | buffering_ |
flag indicating blocked signals should be buffered More... | |
Additional Inherited Members | |
![]() | |
typedef boost::function1< ReturnType, Signal > | Function |
typedef std::vector< LinkUnitOP > | LinkUnits |
typedef std::vector< Link > | Links |
forward declaration for SignalHub
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 |
|
private |
|
inline |
default constructor
|
inlineoverridedefault |
default destructor
|
private |
disallow copy constructor
|
inline |
block signals and buffer them for release upon unblocking
References utility::signals::SignalHub< ReturnType, Signal >::block(), and utility::signals::BufferedSignalHub< ReturnType, Signal >::buffering_.
Referenced by job_manager.CommandRunner::dump(), and job_manager.CommandRunner::poll().
|
inline |
number of signals left in the buffer
References utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer_.
|
inline |
are signals being buffered?
References utility::signals::BufferedSignalHub< ReturnType, Signal >::buffering_.
|
inline |
clear the buffer
References utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer_.
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer().
|
private |
disallow copy assignment
|
inlineprotected |
release the signals in the buffer
References utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer_, utility::signals::BufferedSignalHub< ReturnType, Signal >::clear_buffer(), create_a3b_hbs::i, subloop_histogram::iterator, and utility::signals::SignalHub< ReturnType, Signal >::operator()().
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::unblock().
|
inlineoverrideprotectedvirtual |
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(), utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer_, utility::signals::BufferedSignalHub< ReturnType, Signal >::buffering_, and docking::s.
|
inlineoverridevirtual |
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 >::buffering_, utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer(), and utility::signals::SignalHub< ReturnType, Signal >::unblock().
|
private |
signal buffer, only used when hub is blocked and buffering
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer_size(), utility::signals::BufferedSignalHub< ReturnType, Signal >::clear_buffer(), utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer(), and utility::signals::BufferedSignalHub< ReturnType, Signal >::signal_allowed().
|
private |
flag indicating blocked signals should be buffered
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer(), utility::signals::BufferedSignalHub< ReturnType, Signal >::buffering(), utility::signals::BufferedSignalHub< ReturnType, Signal >::signal_allowed(), and utility::signals::BufferedSignalHub< ReturnType, Signal >::unblock().