Rosetta 3.3
|
BufferedSignalHub capable of passing observers. More...
#include <TokenHub.hh>
Public Types | |
typedef Super::Size | Size |
Public Member Functions | |
TokenHub () | |
default constructor | |
virtual | ~TokenHub () |
default destructor | |
Size | receive_tokens_from (TokenHub const &src) |
receive tokenized connections from source and remove them from source | |
Size | n_tokens () const |
number of tokenized connections | |
void | clear_tokens () |
clear only tokenized connections, will invalidate all tokens | |
template<typename MemFn , typename Ptr > | |
Link | connect_tokenize (MemFn fn, Ptr ptr) |
connect and tokenize an observer's member function | |
template<typename MemFn , typename Ptr > | |
bool | disconnect (MemFn fn, Ptr ptr) |
disconnect an observer's member function | |
template<typename MemFn , typename Ptr > | |
bool | disconnect_tokenize (MemFn fn, Ptr ptr) |
disconnect an observer's tokenized member function | |
Protected Member Functions | |
virtual void | send_signal (Signal s) |
send signal to both regular and tokenized connections |
BufferedSignalHub capable of passing observers.
If an observer's member function is connected with the 'tokenize' flag, then this function is allowed to permanently pass from a source TokenHub to a destination TokenHub via a call to receive_tokens_from()
, which will erase the observer function from the source hub. The observer member function, in effect, becomes a single token which is intended to be passed from Subject to Subject upon copy (see remarks in receive_tokens_from()
for different behavior in copy construct vs copy assign). Invalidating the Link will stop the token from being passed from Subject to Subject. Use the token ability with care, as it depends on the programmer to consistently do the right thing and make sure Observer and Subject(s) do not loose sync with each other. Observers that communicate via a tokenized member function are recommended to follow the following guidelines:
typedef Super::Size utility::signals::TokenHub< ReturnType, Signal >::Size |
Reimplemented from utility::signals::BufferedSignalHub< ReturnType, Signal >.
utility::signals::TokenHub< ReturnType, Signal >::TokenHub | ( | ) | [inline] |
default constructor
virtual utility::signals::TokenHub< ReturnType, Signal >::~TokenHub | ( | ) | [inline, virtual] |
default destructor
References utility::signals::SignalHub< ReturnType, Signal >::invalidate_all().
void utility::signals::TokenHub< ReturnType, Signal >::clear_tokens | ( | ) | [inline] |
clear only tokenized connections, will invalidate all tokens
References utility::signals::SignalHub< ReturnType, Signal >::invalidate_all().
Link utility::signals::TokenHub< ReturnType, Signal >::connect_tokenize | ( | MemFn | fn, |
Ptr | ptr | ||
) | [inline] |
connect and tokenize an observer's member function
MemFn | unary member function |
fn | pointer to observer's member function |
ptr | pointer to observer object |
References utility::signals::SignalHub< ReturnType, Signal >::connect().
bool utility::signals::TokenHub< ReturnType, Signal >::disconnect | ( | MemFn | fn, |
Ptr | ptr | ||
) | [inline] |
disconnect an observer's member function
will search both regular and tokenized functions
MemFn | unary member function |
fn | pointer to observer's member function |
ptr | pointer to observer object |
Reimplemented from utility::signals::SignalHub< ReturnType, Signal >.
References utility::signals::SignalHub< ReturnType, Signal >::disconnect().
Referenced by utility::signals::TokenHub< ReturnType, Signal >::disconnect_tokenize().
bool utility::signals::TokenHub< ReturnType, Signal >::disconnect_tokenize | ( | MemFn | fn, |
Ptr | ptr | ||
) | [inline] |
disconnect an observer's tokenized member function
fn | pointer to observer's member function |
ptr | pointer to observer object |
References utility::signals::TokenHub< ReturnType, Signal >::disconnect().
Size utility::signals::TokenHub< ReturnType, Signal >::n_tokens | ( | ) | const [inline] |
number of tokenized connections
References utility::signals::SignalHub< ReturnType, Signal >::remove_invalid().
Size utility::signals::TokenHub< ReturnType, Signal >::receive_tokens_from | ( | TokenHub< ReturnType, Signal > const & | src | ) | [inline] |
receive tokenized connections from source and remove them from source
References utility::signals::SignalHub< ReturnType, Signal >::remove_invalid().
virtual void utility::signals::TokenHub< ReturnType, Signal >::send_signal | ( | Signal | s | ) | [inline, protected, virtual] |
send signal to both regular and tokenized connections
Reimplemented from utility::signals::SignalHub< ReturnType, Signal >.
References utility::signals::SignalHub< ReturnType, Signal >::linkunits(), and utility::signals::SignalHub< ReturnType, Signal >::send().