# OpalIMManager Class Reference

`#include <im.h>`

Collaboration diagram for OpalIMManager:

[legend]

## Public Types

typedef PNotifierTemplate< OpalIMContext & > | NewConversationNotifier

## Public Member Functions

| OpalIMManager (OpalManager &manager)
| ~OpalIMManager ()
OpalIMContext::SentStatus | OnIncomingMessage (OpalIM *im, PString &conversationId, PSafePtr< OpalConnection > conn=NULL)
void | OnCompositionIndicationTimeout (const PString &conversationId)
void | AddContext (PSafePtr< OpalIMContext > context)
void | RemoveContext (OpalIMContext *context)
void | GarbageCollection ()
PSafePtr< OpalIMContext > | FindContextByIdWithLock (const PString &key, PSafetyMode mode=PSafeReadWrite)
PSafePtr< OpalIMContext > | FindContextByNamesWithLock (const PString &local, const PString &remote, PSafetyMode mode=PSafeReadWrite)
PSafePtr< OpalIMContext > | FindContextForMessageWithLock (OpalIM &im, OpalConnection *conn=NULL)
void | AddNotifier (const NewConversationNotifier &notifier, const PString &scheme)
bool | RemoveNotifier (const NewConversationNotifier &notifier, const PString &scheme)
void | AddWork (IM_Work *work)
virtual void | InternalOnNewConversation (const PString &conversation)
virtual void | InternalOnNewIncomingIM (const PString &conversation)
virtual void | InternalOnMessageSent (const PString &conversation, const OpalIMContext::MessageSentInfo &info)
virtual void | InternalOnCompositionIndicationTimeout (const PString &conversationId)

## Protected Types

typedef PSafeDictionary< PString, OpalIMContext > | ContextsByConversationId
typedef std::multimap< std::string, PString > | ContextsByNames

## Protected Attributes

PQueuedThreadPool< IM_Work > | m_imThreadPool
PTime | m_lastGarbageCollection
OpalManager & | m_manager
bool | m_deleting
ContextsByConversationId | m_contextsByConversationId
PMutex | m_contextsByNamesMutex
ContextsByNames | m_contextsByNames
PMutex | m_notifierMutex
PList< NewConversationCallBack > | m_callbacks

## Data Structures

class | CompositionIndicationTimeout_Work
class | IM_Work
class | MessageSent_Work
class | NewConversation_Work
class | NewConversationCallBack
class | NewIncomingIM_Work

## Member Typedef Documentation

typedef PSafeDictionary<PString, OpalIMContext> OpalIMManager::ContextsByConversationId `[protected]`

typedef std::multimap<std::string, PString> OpalIMManager::ContextsByNames `[protected]`

typedef PNotifierTemplate<OpalIMContext &> OpalIMManager::NewConversationNotifier

## Constructor & Destructor Documentation

OpalIMManager::OpalIMManager | ( | OpalManager & | manager | ) |

OpalIMManager::~OpalIMManager | ( |  | ) |

## Member Function Documentation

void OpalIMManager::AddContext | ( | PSafePtr< OpalIMContext > | context | ) |

void OpalIMManager::AddNotifier | ( | const NewConversationNotifier & | notifier,
|  | const PString & | scheme |
| ) |  |  |

void OpalIMManager::AddWork | ( | IM_Work * | work | ) |

PSafePtr<OpalIMContext> OpalIMManager::FindContextByIdWithLock | ( | const PString & | key,
|  | PSafetyMode | mode = `PSafeReadWrite` |
| ) |  |  |

PSafePtr<OpalIMContext> OpalIMManager::FindContextByNamesWithLock | ( | const PString & | local,
|  | const PString & | remote,
|  | PSafetyMode | mode = `PSafeReadWrite` |
| ) |  |  |

PSafePtr<OpalIMContext> OpalIMManager::FindContextForMessageWithLock | ( | OpalIM & | im,
|  | OpalConnection * | conn = `NULL` |
| ) |  |  |

void OpalIMManager::GarbageCollection | ( |  | ) |

virtual void OpalIMManager::InternalOnCompositionIndicationTimeout | ( | const PString & | conversationId | ) | `[virtual]`

virtual void OpalIMManager::InternalOnMessageSent | ( | const PString & | conversation,
|  | const OpalIMContext::MessageSentInfo & | info |
| ) |  |  | `[virtual]`

virtual void OpalIMManager::InternalOnNewConversation | ( | const PString & | conversation | ) | `[virtual]`

virtual void OpalIMManager::InternalOnNewIncomingIM | ( | const PString & | conversation | ) | `[virtual]`

void OpalIMManager::OnCompositionIndicationTimeout | ( | const PString & | conversationId | ) |

OpalIMContext::SentStatus OpalIMManager::OnIncomingMessage | ( | OpalIM * | im,
|  | PString & | conversationId,
|  | PSafePtr< OpalConnection > | conn = `NULL` |
| ) |  |  |

void OpalIMManager::RemoveContext | ( | OpalIMContext * | context | ) |

bool OpalIMManager::RemoveNotifier | ( | const NewConversationNotifier & | notifier,
|  | const PString & | scheme |
| ) |  |  |

## Field Documentation

PList<NewConversationCallBack> OpalIMManager::m_callbacks `[protected]`

ContextsByConversationId OpalIMManager::m_contextsByConversationId `[protected]`

ContextsByNames OpalIMManager::m_contextsByNames `[protected]`

PMutex OpalIMManager::m_contextsByNamesMutex `[protected]`

bool OpalIMManager::m_deleting `[protected]`

PQueuedThreadPool<IM_Work> OpalIMManager::m_imThreadPool `[protected]`

PTime OpalIMManager::m_lastGarbageCollection `[protected]`

OpalManager& OpalIMManager::m_manager `[protected]`

PMutex OpalIMManager::m_notifierMutex `[protected]`

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

- im.h