37 #include <ptclib/url.h>
38 #include <ptclib/threadpool.h>
78 const char * mediaType,
86 virtual bool UsesRTP()
const {
return false; }
104 static PSafePtr<OpalIMContext>
Create(
106 const PURL & localURL,
107 const PURL & remoteURL
110 static PSafePtr<OpalIMContext>
Create(
112 PSafePtr<OpalConnection> conn
115 static PSafePtr<OpalIMContext>
Create(
117 PSafePtr<OpalPresentity> presentity,
118 const PURL & remoteURL
147 #define PDECLARE_MessageSentNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, const MessageSentInfo &)
148 #define PCREATE_MessageSentNotifier(fn) PCREATE_NOTIFIER2(fn, const MessageSentInfo &)
160 #define PDECLARE_IncomingIMNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, const OpalIM &)
161 #define PCREATE_IncomingIMNotifier(fn) PCREATE_NOTIFIER2(fn, const OpalIM &)
173 #define PDECLARE_CompositionIndicationChangedNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, const PString &)
174 #define PCREATE_CompositionIndicationChangedNotifier(fn) PCREATE_NOTIFIER2(fn, const PString &)
186 PString
GetID()
const {
return m_id; }
187 void SetID(
const PString &
id) { m_id = id; }
208 static PString
CreateKey(
const PString & from,
const PString & to);
239 PString m_id, m_localURL, m_remoteURL, m_key;
268 void AddContext(PSafePtr<OpalIMContext> context);
275 PSafetyMode mode = PSafeReadWrite
279 const PString & local,
280 const PString & remote,
281 PSafetyMode mode = PSafeReadWrite
287 #define PDECLARE_NewConversationNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMManager, cls, fn, OpalIMContext &)
288 #define PCREATE_NewConversationNotifier(fn) PCREATE_NOTIFIER2(fn, OpalIMContext &)
307 virtual void Work() = 0;
388 RTP_IMFrame(
const BYTE * data, PINDEX len, PBoolean dynamic =
true);
419 #endif // OPAL_HAS_IM
421 #endif // OPAL_IM_IM_H
PString GetKey() const
Definition: im.h:188
PQueue< OpalIM > m_outgoingMessages
Definition: im.h:233
void AddContext(PSafePtr< OpalIMContext > context)
PSafePtr< OpalIMContext > FindContextByIdWithLock(const PString &key, PSafetyMode mode=PSafeReadWrite)
virtual PStringArray GetContentTypes() const
static PString CreateKey(const PString &from, const PString &to)
MessageSentNotifier m_messageSentNotifier
Definition: im.h:219
OpalIMManager(OpalManager &manager)
Definition: rtpconn.h:247
ContextsByConversationId m_contextsByConversationId
Definition: im.h:370
PSafePtr< OpalIMContext > FindContextForMessageWithLock(OpalIM &im, OpalConnection *conn=NULL)
virtual SentStatus InternalSendOutsideCall(OpalIM *message)
virtual void InternalOnCompositionIndicationTimeout(const PString &conversationId)
void AddWork(IM_Work *work)
PString AsString() const
Definition: im.h:396
virtual SentStatus OnIncomingIM(OpalIM &message)
PTime m_lastGarbageCollection
Definition: im.h:366
virtual void OnCompositionIndicationChanged(const PString &state)
virtual void OnCompositionIndicationTimeout()
PString GetRemoteURL() const
Definition: im.h:190
PQueue< OpalIM > m_incomingMessages
Definition: im.h:229
virtual void OnMessageSent(const MessageSentInfo &info)
PSafeDictionary< PString, OpalIMContext > ContextsByConversationId
Definition: im.h:369
void SetMessageSentNotifier(const MessageSentNotifier ¬ifier)
Set the notifier for the OnMessageSent() function.
PURL m_to
Definition: im.h:54
PAtomicInteger::IntegerType messageId
Definition: im.h:141
PString GetID() const
Definition: im.h:186
virtual SentStatus SendCompositionIndication(bool active=true)
OpalIMManager & m_mgr
Definition: im.h:309
void RemoveContext(OpalIMContext *context)
PList< NewConversationCallBack > m_callbacks
Definition: im.h:377
virtual SentStatus Send(OpalIM *message)
virtual void Work()
Definition: im.h:319
PString GetLocalURL() const
Definition: im.h:189
virtual void Work()
Definition: im.h:329
void SetContent(const T140String &text)
void SetID(const PString &id)
Definition: im.h:187
OpalIM * GetIncomingMessage()
virtual void InternalOnMessageSent(const PString &conversation, const OpalIMContext::MessageSentInfo &info)
virtual void Work()
Definition: im.h:352
static PSafePtr< OpalIMContext > Create(OpalManager &manager, const PURL &localURL, const PURL &remoteURL)
PMutex m_lastUsedMutex
Definition: im.h:235
PStringOptions m_attributes
Definition: im.h:223
void OnCompositionIndicationTimeout(const PString &conversationId)
void SetCompositionIndicationChangedNotifier(const CompositionIndicationChangedNotifier ¬ifier)
Set the notifier for the OnIncomingMessage() function.
MessageSent_Work(OpalIMManager &mgr, const PString &conversationId, const OpalIMContext::MessageSentInfo &info)
Definition: im.h:336
CompositionIndicationTimeout_Work(OpalIMManager &mgr, const PString &conversationId)
Definition: im.h:349
const PStringOptions & GetAttributes() const
Definition: im.h:196
PMutex m_outgoingMessagesMutex
Definition: im.h:231
PMutex m_contextsByNamesMutex
Definition: im.h:372
virtual void InternalOnMessageSent(const MessageSentInfo &info)
PString GetContentType() const
PURL m_from
Definition: im.h:55
PINDEX GetPayloadSize() const
Definition: rtp.h:164
PMutex m_notificationMutex
Definition: im.h:217
OpalIM * m_currentOutgoingMessage
Definition: im.h:232
bool m_deleting
Definition: im.h:368
static PAtomicInteger::IntegerType GetNextMessageId()
virtual void Work()
Definition: im.h:340
OpalManager & m_manager
Definition: im.h:367
PNotifierTemplate< OpalIMContext & > NewConversationNotifier
Definition: im.h:286
virtual void InternalOnNewIncomingIM(const PString &conversation)
BYTE * GetPayloadPtr() const
Definition: rtp.h:166
PAtomicInteger::IntegerType m_messageId
Definition: im.h:64
PMutex m_incomingMessagesMutex
Definition: im.h:228
void SetIncomingIMNotifier(const IncomingIMNotifier ¬ifier)
Set the notifier for the OnIncomingMessage() function.
PNotifierTemplate< const OpalIM & > IncomingIMNotifier
Definition: im.h:159
PString m_mimeType
Definition: im.h:57
PNotifierTemplate< const MessageSentInfo & > MessageSentNotifier
Definition: im.h:146
Definition: pres_ent.h:135
void AddNotifier(const NewConversationNotifier ¬ifier, const PString &scheme)
PSafePtr< OpalIMContext > FindContextByNamesWithLock(const PString &local, const PString &remote, PSafetyMode mode=PSafeReadWrite)
PSafePtr< OpalConnection > m_connection
Definition: im.h:225
virtual void InternalOnNewConversation(const PString &conversation)
PMutex m_notifierMutex
Definition: im.h:376
OpalTransportAddress m_toAddr
Definition: im.h:62
PString m_scheme
Definition: im.h:293
PNotifierTemplate< const PString & > CompositionIndicationChangedNotifier
Definition: im.h:172
NewConversationNotifier m_notifier
Definition: im.h:292
OpalConnectionIMContext()
OpalPresentityIMContext()
PTime m_lastUsed
Definition: im.h:236
OpalIMContext::MessageSentInfo m_info
Definition: im.h:343
std::multimap< std::string, PString > ContextsByNames
Definition: im.h:373
OpalManager * m_manager
Definition: im.h:222
PString m_body
Definition: im.h:58
PSafePtr< OpalPresentity > m_presentity
Definition: im.h:226
PString m_fromName
Definition: im.h:56
PString m_conversationId
Definition: im.h:310
virtual bool CheckContentType(const PString &contentType) const
Definition: connection.h:353
OpalIMContext::SentStatus status
Definition: im.h:142
virtual SentStatus InternalSendInsideCall(OpalIM *message)
virtual SentStatus InternalSend()
bool RemoveNotifier(const NewConversationNotifier ¬ifier, const PString &scheme)
NewIncomingIM_Work(OpalIMManager &mgr, const PString &conversationId)
Definition: im.h:316
OpalTransportAddress m_fromAddr
Definition: im.h:61
Definition: transports.h:149
virtual bool OnNewIncomingIM()
IncomingIMNotifier m_incomingMessageNotifier
Definition: im.h:218
CompositionIndicationChangedNotifier m_compositionIndicationChangedNotifier
Definition: im.h:220
SentStatus
Definition: im.h:121
PString m_conversationId
Definition: im.h:59
ContextsByNames m_contextsByNames
Definition: im.h:374
bool GetContent(T140String &text) const
PQueuedThreadPool< IM_Work > m_imThreadPool
Definition: im.h:364
NewConversation_Work(OpalIMManager &mgr, const PString &conversationId)
Definition: im.h:326
OpalIMContext::SentStatus OnIncomingMessage(OpalIM *im, PString &conversationId, PSafePtr< OpalConnection > conn=NULL)
virtual bool AddIncomingIM(OpalIM *message)
PStringOptions & GetAttributes()
< Get the attributes for this presentity.
Definition: im.h:195
IM_Work(OpalIMManager &mgr, const PString &conversationId)
void SetContentType(const PString &contentType)