# OpalMixerNodeManager Class Reference

`#include <opalmixer.h>`

Inheritance diagram for OpalMixerNodeManager:

[legend]
Collaboration diagram for OpalMixerNodeManager:
[legend]

## Public Member Functions

Construction
| OpalMixerNodeManager (OpalManager &manager)
virtual | ~OpalMixerNodeManager ()
virtual void | ShutDown ()
virtual PBoolean | GarbageCollection ()
Operations
virtual OpalMixerNode * | CreateNode (OpalMixerNodeInfo *info)
virtual PSafePtr< OpalMixerNode > | AddNode (OpalMixerNodeInfo *info)
void | AddNode (OpalMixerNode *node)
PSafePtr< OpalMixerNode > | GetFirstNode (PSafetyMode mode=PSafeReference) const
virtual PSafePtr< OpalMixerNode > | FindNode (const PString &name, PSafetyMode mode=PSafeReference)
virtual void | RemoveNode (OpalMixerNode &node)
void | AddNodeName (PString name, OpalMixerNode *node)
void | RemoveNodeName (PString name)
void | RemoveNodeNames (const PStringSet &names)
virtual PString | CreateInternalURI (const PGloballyUniqueID &guid)
virtual void | OnNodeStatusChanged (const OpalMixerNode &node, OpalConferenceState::ChangeType change)
OpalManager & | GetManager () const
| Get manager.

## Protected Attributes

OpalManager & | m_manager
PSafeDictionary< PGloballyUniqueID, OpalMixerNode > | m_nodesByUID
PSafeDictionary< PString, OpalMixerNode > | m_nodesByName

## Detailed Description

Mixer node manager. This class is a collection of OpalMixerNodes. It provides access to nodes by GUID or name.

## Constructor & Destructor Documentation

OpalMixerNodeManager::OpalMixerNodeManager | ( | OpalManager & | manager | ) |

Create a new mixer node manager.

virtual OpalMixerNodeManager::~OpalMixerNodeManager | ( |  | ) | `[virtual]`

Destroy all mixer nodes. Calls ShutDown.

## Member Function Documentation

void OpalMixerNodeManager::AddNode | ( | OpalMixerNode * | node | ) |

Add an existing node.

virtual PSafePtr<OpalMixerNode> OpalMixerNodeManager::AddNode | ( | OpalMixerNodeInfo * | info | ) | `[virtual]`

Add a new node. The info variable should be created on the heap and it is subsequently owned by the node. NULL can be passed if defaults are to be used. Calls CreateNode.

Parameters:

  info | Initial info for node

void OpalMixerNodeManager::AddNodeName | ( | PString | name,
|  | OpalMixerNode * | node |
| ) |  |  |

Add node name to association list.

Parameters:

  name | alias name for node
  node | node associated with name

virtual PString OpalMixerNodeManager::CreateInternalURI | ( | const PGloballyUniqueID & | guid | ) | `[virtual]`

Internal function to get internal URI string.

Reimplemented in OpalMixerEndPoint.

virtual OpalMixerNode* OpalMixerNodeManager::CreateNode | ( | OpalMixerNodeInfo * | info | ) | `[virtual]`

Create a new node. This should create the new instance of the OpalMixerNode as required by the derived class, if any. The info variable should be created on the heap and it is subsequently owned by the node. NULL can be passed if defaults are to be used.

Parameters:

  info | Initial info for node

virtual PSafePtr<OpalMixerNode> OpalMixerNodeManager::FindNode | ( | const PString & | name,
|  | PSafetyMode | mode = `PSafeReference` |
| ) |  |  | `[virtual]`

Find a new node. This will search for the mixer node using GUID and then name.

Parameters:

  name | GUID or alias name for node
  mode | Lock mode for returned pointer

virtual PBoolean OpalMixerNodeManager::GarbageCollection | ( |  | ) | `[virtual]`

Execute garbage collection of nodes. Returns true if all garbage has been collected. Default behaviour deletes the objects that have been removed from the m_nodesByUID list.

Reimplemented in OpalMixerEndPoint.

PSafePtr<OpalMixerNode> OpalMixerNodeManager::GetFirstNode | ( | PSafetyMode | mode = `PSafeReference` | ) | const`[inline]`

Get the first node. The active nodes may be enumerated by the ++ operator on the PSafePtr.

Parameters:

  mode | Lock mode for returned pointer

OpalManager& OpalMixerNodeManager::GetManager | ( |  | ) | const`[inline]`

Get manager.

Reimplemented in OpalMixerEndPoint.

virtual void OpalMixerNodeManager::OnNodeStatusChanged | ( | const OpalMixerNode & | node,
|  | OpalConferenceState::ChangeType | change |
| ) |  |  | `[virtual]`

Call back when mixed node state information changes.

Default behaviour does nothing.

Parameters:

  node | Node that has changed state
  change | Change that occurred

Reimplemented in OpalMixerEndPoint.

virtual void OpalMixerNodeManager::RemoveNode | ( | OpalMixerNode & | node | ) | `[virtual]`

Remove a node. Shut down all active connections with node, remove its name associations and delete it.

void OpalMixerNodeManager::RemoveNodeName | ( | PString | name | ) |

Remove node's name from association list.

Parameters:

  name | alias name for node

void OpalMixerNodeManager::RemoveNodeNames | ( | const PStringSet & | names | ) |

Remove list of node names from association list. Commonly used when node destroyed.

Parameters:

  names | list of alias names for nodes

virtual void OpalMixerNodeManager::ShutDown | ( |  | ) | `[virtual]`

Shuts down, removes and destroys all mixer nodes.

Reimplemented in OpalMixerEndPoint.

## Field Documentation

OpalManager& OpalMixerNodeManager::m_manager `[protected]`

PSafeDictionary<PString, OpalMixerNode> OpalMixerNodeManager::m_nodesByName `[protected]`

PSafeDictionary<PGloballyUniqueID, OpalMixerNode> OpalMixerNodeManager::m_nodesByUID `[protected]`

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

- opalmixer.h