Rosetta 3.3
|
primary class for function based implementation of observer pattern More...
#include <SignalHub.hh>
Public Types | |
typedef platform::Size | Size |
Public Member Functions | |
SignalHub () | |
default constructor | |
virtual | ~SignalHub () |
default destructor | |
void | operator() (Signal s) |
send signal to all observers connected to the hub | |
Size | size () const |
number of connections to the hub | |
void | block () |
block signals from being sent | |
virtual void | unblock () |
allow signals to be sent | |
bool | blocked () const |
are signals blocked? | |
void | clear () |
clear all connections | |
template<typename MemFn , typename Ptr > | |
Link | connect (MemFn fn, Ptr ptr) |
connect an observer's member function to this hub | |
template<typename MemFn , typename Ptr > | |
bool | disconnect (MemFn fn, Ptr ptr) |
disconnect an observer's member function from this hub | |
Size | receive_linkunits_from (SignalHub const &src) |
transfer linkunits from source to this SignalHub | |
Links | current_links () const |
return a copy of the list of links currently being managed by this SignalHub | |
Protected Types | |
typedef boost::function1 < ReturnType, Signal > | Function |
typedef std::vector< LinkUnitOP > | LinkUnits |
typedef std::vector< Link > | Links |
Protected Member Functions | |
virtual bool | signal_allowed (Signal const ) |
is signal allowed to be passed? | |
virtual void | send_signal (Signal s) |
send signal to all observers | |
virtual void | after_send () |
initiate an action after send (no-op in SignalHub) | |
template<typename MemFn , typename Ptr > | |
Link | connect (MemFn fn, Ptr ptr, LinkUnits &links) const |
connect an observer's member function to the given LinkUnits | |
template<typename MemFn , typename Ptr > | |
bool | disconnect (MemFn fn, Ptr ptr, LinkUnits &links) const |
disconnect an observer's member function from the given LinkUnits | |
template<typename Functor > | |
LinkUnits::iterator | find_connection (Functor f, LinkUnits &links) const |
find a specific connection to this hub | |
void | send (Signal s, LinkUnits &links) const |
send signal to all links taking into account validity and local blocking | |
void | invalidate_all (LinkUnits &links) const |
invalidate and destroy internals of all links | |
void | remove_invalid (LinkUnits &links) const |
remove and destroy internals of invalid links | |
void | deallocate (LinkUnit &lu) const |
deallocate function stored in a LinkUnit | |
LinkUnits & | linkunits () |
returns the list of LinkUnits |
primary class for function based implementation of observer pattern
This class is meant for use in implementations of the observer pattern that pass a single Signal object from the subject to its observers. An observer connects by binding one of its member functions to the SignalHub. 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 SignalHub< 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 boost::function1< ReturnType, Signal > utility::signals::SignalHub< ReturnType, Signal >::Function [protected] |
typedef std::vector< Link > utility::signals::SignalHub< ReturnType, Signal >::Links [protected] |
typedef std::vector< LinkUnitOP > utility::signals::SignalHub< ReturnType, Signal >::LinkUnits [protected] |
typedef platform::Size utility::signals::SignalHub< ReturnType, Signal >::Size |
utility::signals::SignalHub< ReturnType, Signal >::SignalHub | ( | ) | [inline] |
default constructor
virtual utility::signals::SignalHub< ReturnType, Signal >::~SignalHub | ( | ) | [inline, virtual] |
default destructor
References utility::signals::SignalHub< ReturnType, Signal >::invalidate_all().
virtual void utility::signals::SignalHub< ReturnType, Signal >::after_send | ( | ) | [inline, protected, virtual] |
initiate an action after send (no-op in SignalHub)
Reimplemented in utility::signals::PausableSignalHub< ReturnType, Signal >.
Referenced by utility::signals::SignalHub< ReturnType, Signal >::operator()().
void utility::signals::SignalHub< ReturnType, Signal >::block | ( | ) | [inline] |
block signals from being sent
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::buffer().
bool utility::signals::SignalHub< ReturnType, Signal >::blocked | ( | ) | const [inline] |
are signals blocked?
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::signal_allowed().
void utility::signals::SignalHub< ReturnType, Signal >::clear | ( | ) | [inline] |
clear all connections
References utility::signals::SignalHub< ReturnType, Signal >::invalidate_all().
Link utility::signals::SignalHub< ReturnType, Signal >::connect | ( | MemFn | fn, |
Ptr | ptr | ||
) | [inline] |
connect an observer's member function to this hub
MemFn | unary member function |
fn | pointer to observer's member function |
ptr | pointer to observer object |
Referenced by utility::signals::TokenHub< ReturnType, Signal >::connect_tokenize().
Link utility::signals::SignalHub< ReturnType, Signal >::connect | ( | MemFn | fn, |
Ptr | ptr, | ||
LinkUnits & | links | ||
) | const [inline, protected] |
connect an observer's member function to the given LinkUnits
MemFn | unary member function |
fn | pointer to observer's member function |
ptr | pointer to observer object |
links | function object gets added to this set of LinkUnits |
References utility::signals::SignalHub< ReturnType, Signal >::find_connection(), color_pdb::i, and utility::signals::SignalHub< ReturnType, Signal >::remove_invalid().
Links utility::signals::SignalHub< ReturnType, Signal >::current_links | ( | ) | const [inline] |
return a copy of the list of links currently being managed by this SignalHub
References basic::options::OptionKeys::in::file::l.
void utility::signals::SignalHub< ReturnType, Signal >::deallocate | ( | LinkUnit & | lu | ) | const [inline, protected] |
deallocate function stored in a LinkUnit
References utility::signals::LinkUnit::fn.
Referenced by utility::signals::SignalHub< ReturnType, Signal >::disconnect(), and utility::signals::SignalHub< ReturnType, Signal >::invalidate_all().
bool utility::signals::SignalHub< ReturnType, Signal >::disconnect | ( | MemFn | fn, |
Ptr | ptr | ||
) | [inline] |
disconnect an observer's member function from this hub
MemFn | unary member function |
fn | pointer to observer's member function |
ptr | pointer to observer object |
Reimplemented in utility::signals::TokenHub< ReturnType, Signal >.
Referenced by utility::signals::TokenHub< ReturnType, Signal >::disconnect().
bool utility::signals::SignalHub< ReturnType, Signal >::disconnect | ( | MemFn | fn, |
Ptr | ptr, | ||
LinkUnits & | links | ||
) | const [inline, protected] |
disconnect an observer's member function from the given LinkUnits
MemFn | unary member function |
fn | pointer to observer's member function |
ptr | pointer to observer object |
links | function object gets removed from this set of LinkUnits |
References utility::signals::SignalHub< ReturnType, Signal >::deallocate(), utility::signals::SignalHub< ReturnType, Signal >::find_connection(), color_pdb::i, and utility::signals::SignalHub< ReturnType, Signal >::remove_invalid().
LinkUnits::iterator utility::signals::SignalHub< ReturnType, Signal >::find_connection | ( | Functor | f, |
LinkUnits & | links | ||
) | const [inline, protected] |
find a specific connection to this hub
Functor | unary functor storable in Function wrapper and equality comparable with Function wrapper, typically result of boost::bind() |
References make_table_of_pilot_apps::f, and color_pdb::i.
Referenced by utility::signals::SignalHub< ReturnType, Signal >::connect(), and utility::signals::SignalHub< ReturnType, Signal >::disconnect().
void utility::signals::SignalHub< ReturnType, Signal >::invalidate_all | ( | LinkUnits & | links | ) | const [inline, protected] |
invalidate and destroy internals of all links
References utility::signals::SignalHub< ReturnType, Signal >::deallocate(), and color_pdb::i.
Referenced by utility::signals::SignalHub< ReturnType, Signal >::clear(), utility::signals::TokenHub< ReturnType, Signal >::clear_tokens(), utility::signals::SignalHub< ReturnType, Signal >::~SignalHub(), and utility::signals::TokenHub< ReturnType, Signal >::~TokenHub().
LinkUnits& utility::signals::SignalHub< ReturnType, Signal >::linkunits | ( | ) | [inline, protected] |
returns the list of LinkUnits
Referenced by utility::signals::TokenHub< ReturnType, Signal >::send_signal().
void utility::signals::SignalHub< ReturnType, Signal >::operator() | ( | Signal | s | ) | [inline] |
send signal to all observers connected to the hub
References utility::signals::SignalHub< ReturnType, Signal >::after_send(), utility::signals::SignalHub< ReturnType, Signal >::send_signal(), and utility::signals::SignalHub< ReturnType, Signal >::signal_allowed().
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::release_buffer().
Size utility::signals::SignalHub< ReturnType, Signal >::receive_linkunits_from | ( | SignalHub< ReturnType, Signal > const & | src | ) | [inline] |
transfer linkunits from source to this SignalHub
src | The source SignalHub to use. |
References utility::signals::SignalHub< ReturnType, Signal >::remove_invalid(), and utility::signals::SignalHub< ReturnType, Signal >::size().
void utility::signals::SignalHub< ReturnType, Signal >::remove_invalid | ( | LinkUnits & | links | ) | const [inline, protected] |
remove and destroy internals of invalid links
References color_pdb::i.
Referenced by utility::signals::SignalHub< ReturnType, Signal >::connect(), utility::signals::SignalHub< ReturnType, Signal >::disconnect(), utility::signals::TokenHub< ReturnType, Signal >::n_tokens(), utility::signals::SignalHub< ReturnType, Signal >::receive_linkunits_from(), utility::signals::TokenHub< ReturnType, Signal >::receive_tokens_from(), utility::signals::SignalHub< ReturnType, Signal >::send(), and utility::signals::SignalHub< ReturnType, Signal >::size().
void utility::signals::SignalHub< ReturnType, Signal >::send | ( | Signal | s, |
LinkUnits & | links | ||
) | const [inline, protected] |
send signal to all links taking into account validity and local blocking
References color_pdb::i, utility::signals::SignalHub< ReturnType, Signal >::remove_invalid(), and basic::options::OptionKeys::in::file::s.
Referenced by utility::signals::TokenHub< ReturnType, Signal >::send_signal(), and utility::signals::SignalHub< ReturnType, Signal >::send_signal().
virtual void utility::signals::SignalHub< ReturnType, Signal >::send_signal | ( | Signal | s | ) | [inline, protected, virtual] |
send signal to all observers
Reimplemented in utility::signals::TokenHub< ReturnType, Signal >.
References utility::signals::SignalHub< ReturnType, Signal >::send().
Referenced by utility::signals::SignalHub< ReturnType, Signal >::operator()().
virtual bool utility::signals::SignalHub< ReturnType, Signal >::signal_allowed | ( | Signal | const | ) | [inline, protected, virtual] |
is signal allowed to be passed?
Reimplemented in utility::signals::BufferedSignalHub< ReturnType, Signal >.
Referenced by utility::signals::SignalHub< ReturnType, Signal >::operator()().
Size utility::signals::SignalHub< ReturnType, Signal >::size | ( | ) | const [inline] |
number of connections to the hub
References utility::signals::SignalHub< ReturnType, Signal >::remove_invalid().
Referenced by utility::signals::SignalHub< ReturnType, Signal >::receive_linkunits_from().
virtual void utility::signals::SignalHub< ReturnType, Signal >::unblock | ( | ) | [inline, virtual] |
allow signals to be sent
Reimplemented in utility::signals::BufferedSignalHub< ReturnType, Signal >.
Referenced by utility::signals::BufferedSignalHub< ReturnType, Signal >::unblock().