MIRA
Public Member Functions | List of all members
ChannelContentChange< T > Class Template Reference

Class that can be registered as a filter when subscribing to channels to only get a callback when the content of the channel changes. More...

#include <filter/ChannelContentChange.h>

Public Member Functions

Channel< T > subscribe (Authority &authority, const std::string &channelID, boost::function< void(ChannelRead< T >)> fn)
 Call this instead of Authority::subscribe() More...
 
template<typename Class >
Channel< T > subscribe (Authority &authority, const std::string &channelID, void(Class::*f)(ChannelRead< T >), Class *obj)
 Same as above but with a function and object pointer. More...
 
void callback (ChannelRead< T > value)
 Called when channel has new data. More...
 

Detailed Description

template<typename T>
class mira::ChannelContentChange< T >

Class that can be registered as a filter when subscribing to channels to only get a callback when the content of the channel changes.

This requires the operator== and copy constructor to be implemented for the channels data type T. Does not work with pointers. The constructor takes the function pointer to the proper callback and the class' callback method is registered instead.

class MyUnit : public MicroUnit
{
MyUnit() :
myFilter(Duration::seconds(2)) {}
void initialize()
{
myFilter.subscribe(*this, "IntChannel", &MyUnit::callback, this);
}
void onCallback(ChannelRead<int> channel)
{}
ChannelContentChange<int> myFilter;
}

Member Function Documentation

◆ subscribe() [1/2]

Channel<T> subscribe ( Authority authority,
const std::string &  channelID,
boost::function< void(ChannelRead< T >)>  fn 
)
inline

Call this instead of Authority::subscribe()

Parameters
authorityThe authority that does the basic subscription
channelIDThe ID of the channel we are subscribing on
fnThe function that should be called when the filter matches
Returns
The channel subscribed on

◆ subscribe() [2/2]

Channel<T> subscribe ( Authority authority,
const std::string &  channelID,
void(Class::*)(ChannelRead< T >)  f,
Class obj 
)
inline

Same as above but with a function and object pointer.

Provided for convenience.

◆ callback()

void callback ( ChannelRead< T >  value)
inline

Called when channel has new data.


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