Sen API
Sen Libraries
Loading...
Searching...
No Matches
sen::ObjectMux Class Referencefinal

Converts multiple object providers into one. Providers might reside in different threads. Note that addition and removal notifications for objects that are matched by overlapping interests might mention different interest IDs. More...

#include <object_mux.h>

Inheritance diagram for sen::ObjectMux:

Public Member Functions

 ObjectMux ()=default
 ~ObjectMux () override=default
void addListener (ObjectProviderListener *listener, bool notifyAboutExistingObjects) override
 Registers an event listener.
void removeListener (ObjectProviderListener *listener, bool notifyAboutExistingObjects) override
 Un-registers an event listener.
bool hasListener (ObjectProviderListener *listener) const noexcept override
 Returns true if the listener has been added.
bool hasListeners () const noexcept override
 Returns true if there are registered listeners.
void addMuxedListener (MuxedProviderListener *listener, bool notifyAboutExistingObjects)
void removeMuxedListener (MuxedProviderListener *listener, bool notifyAboutExistingObjects)
bool hasMuxedListener (MuxedProviderListener *listener) const noexcept
virtual kernel::impl::RemoteParticipant * isRemoteParticipant () noexcept
virtual kernel::impl::LocalParticipant * isLocalParticipant () noexcept

Protected Member Functions

void notifyAddedOnExistingObjects (ObjectProviderListener *listener) override
 Subclasses must call onObjectAdded on the listener for all the existing objects.
void notifyRemovedOnExistingObjects (ObjectProviderListener *listener) override
 Subclasses must call onObjectRemoved on the listener for all the existing objects.
void notifyObjectsAdded (const ObjectAdditionList &additions) override
 Calls onObjectAdded on all the registered listeners.
void notifyObjectsRemoved (const ObjectRemovalList &removals) override
 Calls onObjectRemoved on all the registered listeners.
void notifyMuxedAddedOnExistingObjects (MuxedProviderListener *listener)
void notifyMuxedRemovedOnExistingObjects (MuxedProviderListener *listener)
void notifyExistingObjectsReadded (const ObjectAdditionList &additions)
void notifyObjectsRefCountReduced (const ObjectRemovalList &removals)
virtual void muxedListenerAdded (MuxedProviderListener *listener, bool notifyAboutExistingObjects)
 Does nothing by default.
virtual void muxedListenerRemoved (MuxedProviderListener *listener, bool notifyAboutExistingObjects)
 Does nothing by default.
void callOnExistingObjectsReadded (MuxedProviderListener *listener, const ObjectAdditionList &additions) const
void callOnObjectsRefCountReduced (MuxedProviderListener *listener, const ObjectRemovalList &removals) const
void onObjectsAdded (const ObjectAdditionList &additions) override
 Called when objects are been added to a source.
void onObjectsRemoved (const ObjectRemovalList &removals) override
 Called when objects will be removed from a source.
virtual void listenerAdded (ObjectProviderListener *listener, bool notifyAboutExistingObjects)
 Does nothing by default.
virtual void listenerRemoved (ObjectProviderListener *listener, bool notifyAboutExistingObjects)
 Does nothing by default.
void notifyRemovedOnExistingObjectsForAllListeners ()
 Same as notifyRemovedOnExistingObjects but for all registered listeners.
void callOnObjectsAdded (ObjectProviderListener *listener, const ObjectAdditionList &additions) const
void callOnObjectsRemoved (ObjectProviderListener *listener, const ObjectRemovalList &removals) const
const std::vector< ObjectProviderListener * > & getListeners () const noexcept

Friends

class MuxedProviderListener

Detailed Description

Converts multiple object providers into one. Providers might reside in different threads. Note that addition and removal notifications for objects that are matched by overlapping interests might mention different interest IDs.

Constructor & Destructor Documentation

◆ ObjectMux()

sen::ObjectMux::ObjectMux ( )
default

◆ ~ObjectMux()

sen::ObjectMux::~ObjectMux ( )
overridedefault

Member Function Documentation

◆ addListener()

void sen::ObjectMux::addListener ( ObjectProviderListener * listener,
bool notifyAboutExistingObjects )
overridevirtual

Registers an event listener.

The listener will be notified of objects being added and removed, and this provider will pass itself as the source of the objects.

A listener can be only added once to the same provider. So calling his method with the same listener will do nothing.

This provider will not take ownership of the added listener. But when a listener gets destroyed, it will ensure that it removes itself from the providers it was added to. Note that in this case your listener will not be notified about the removal of existing objects.

Parameters
listenerthe entity that will be notified about objects.
notifyAboutExistingObjectsif true, the listener will get an immediate 'onObjectAdded' call for each existing object in the provider.

Reimplemented from sen::ObjectProvider.

◆ removeListener()

void sen::ObjectMux::removeListener ( ObjectProviderListener * listener,
bool notifyAboutExistingObjects )
overridevirtual

Un-registers an event listener.

Does nothing if the provided event listener was not added.

Parameters
listenerthe listener that was previously added.
notifyAboutExistingObjectsif true, the listener will get a 'onObjectRemoved' call for each existing object in the provider.

Reimplemented from sen::ObjectProvider.

◆ hasListener()

bool sen::ObjectMux::hasListener ( ObjectProviderListener * listener) const
nodiscardoverridevirtualnoexcept

Returns true if the listener has been added.

Reimplemented from sen::ObjectProvider.

◆ hasListeners()

bool sen::ObjectMux::hasListeners ( ) const
nodiscardoverridevirtualnoexcept

Returns true if there are registered listeners.

Reimplemented from sen::ObjectProvider.

◆ addMuxedListener()

void sen::ObjectMux::addMuxedListener ( MuxedProviderListener * listener,
bool notifyAboutExistingObjects )

◆ removeMuxedListener()

void sen::ObjectMux::removeMuxedListener ( MuxedProviderListener * listener,
bool notifyAboutExistingObjects )

◆ hasMuxedListener()

bool sen::ObjectMux::hasMuxedListener ( MuxedProviderListener * listener) const
nodiscardnoexcept

◆ notifyAddedOnExistingObjects()

void sen::ObjectMux::notifyAddedOnExistingObjects ( ObjectProviderListener * listener)
overrideprotectedvirtual

Subclasses must call onObjectAdded on the listener for all the existing objects.

Implements sen::ObjectProvider.

◆ notifyRemovedOnExistingObjects()

void sen::ObjectMux::notifyRemovedOnExistingObjects ( ObjectProviderListener * listener)
overrideprotectedvirtual

Subclasses must call onObjectRemoved on the listener for all the existing objects.

Implements sen::ObjectProvider.

◆ notifyObjectsAdded()

void sen::ObjectMux::notifyObjectsAdded ( const ObjectAdditionList & additions)
overrideprotectedvirtual

Calls onObjectAdded on all the registered listeners.

Reimplemented from sen::ObjectProvider.

◆ notifyObjectsRemoved()

void sen::ObjectMux::notifyObjectsRemoved ( const ObjectRemovalList & removals)
overrideprotectedvirtual

Calls onObjectRemoved on all the registered listeners.

Reimplemented from sen::ObjectProvider.

◆ notifyMuxedAddedOnExistingObjects()

void sen::ObjectMux::notifyMuxedAddedOnExistingObjects ( MuxedProviderListener * listener)
protected

◆ notifyMuxedRemovedOnExistingObjects()

void sen::ObjectMux::notifyMuxedRemovedOnExistingObjects ( MuxedProviderListener * listener)
protected

◆ notifyExistingObjectsReadded()

void sen::ObjectMux::notifyExistingObjectsReadded ( const ObjectAdditionList & additions)
protected

◆ notifyObjectsRefCountReduced()

void sen::ObjectMux::notifyObjectsRefCountReduced ( const ObjectRemovalList & removals)
protected

◆ muxedListenerAdded()

virtual void sen::ObjectMux::muxedListenerAdded ( MuxedProviderListener * listener,
bool notifyAboutExistingObjects )
protectedvirtual

Does nothing by default.

◆ muxedListenerRemoved()

virtual void sen::ObjectMux::muxedListenerRemoved ( MuxedProviderListener * listener,
bool notifyAboutExistingObjects )
protectedvirtual

Does nothing by default.

◆ callOnExistingObjectsReadded()

void sen::ObjectMux::callOnExistingObjectsReadded ( MuxedProviderListener * listener,
const ObjectAdditionList & additions ) const
protected

◆ callOnObjectsRefCountReduced()

void sen::ObjectMux::callOnObjectsRefCountReduced ( MuxedProviderListener * listener,
const ObjectRemovalList & removals ) const
protected

◆ onObjectsAdded()

void sen::ObjectMux::onObjectsAdded ( const ObjectAdditionList & additions)
overrideprotectedvirtual

Called when objects are been added to a source.

Implements sen::ObjectProviderListener.

◆ onObjectsRemoved()

void sen::ObjectMux::onObjectsRemoved ( const ObjectRemovalList & removals)
overrideprotectedvirtual

Called when objects will be removed from a source.

Implements sen::ObjectProviderListener.

◆ isRemoteParticipant()

virtual kernel::impl::RemoteParticipant * sen::ObjectProviderListener::isRemoteParticipant ( )
nodiscardvirtualnoexceptinherited

◆ isLocalParticipant()

virtual kernel::impl::LocalParticipant * sen::ObjectProviderListener::isLocalParticipant ( )
nodiscardvirtualnoexceptinherited

◆ listenerAdded()

virtual void sen::ObjectProvider::listenerAdded ( ObjectProviderListener * listener,
bool notifyAboutExistingObjects )
protectedvirtualinherited

Does nothing by default.

◆ listenerRemoved()

virtual void sen::ObjectProvider::listenerRemoved ( ObjectProviderListener * listener,
bool notifyAboutExistingObjects )
protectedvirtualinherited

Does nothing by default.

◆ notifyRemovedOnExistingObjectsForAllListeners()

void sen::ObjectProvider::notifyRemovedOnExistingObjectsForAllListeners ( )
protectedinherited

Same as notifyRemovedOnExistingObjects but for all registered listeners.

◆ callOnObjectsAdded()

void sen::ObjectProvider::callOnObjectsAdded ( ObjectProviderListener * listener,
const ObjectAdditionList & additions ) const
protectedinherited

◆ callOnObjectsRemoved()

void sen::ObjectProvider::callOnObjectsRemoved ( ObjectProviderListener * listener,
const ObjectRemovalList & removals ) const
protectedinherited

◆ getListeners()

const std::vector< ObjectProviderListener * > & sen::ObjectProvider::getListeners ( ) const
nodiscardprotectednoexceptinherited

◆ MuxedProviderListener

friend class MuxedProviderListener
friend

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