35 #include <ptclib/url.h>
47 #define OPAL_SIPIM "SIP-IM"
48 #define OpalSIPIM GetOpalSIPIM()
53 #define OPAL_T140 "T.140"
54 #define OpalT140 GetOpalT140()
59 #define OPAL_MSRP "MSRP"
60 #define OpalMSRP GetOpalMSRP()
64 #define OPAL_IM_MEDIA_TYPE_PREFIX "im-"
77 PCLASSINFO_WITH_CLONE(
OpalIM, PObject);
129 const PSafePtr<OpalIMContext> & context
152 virtual void Close();
168 ProcessedNotification,
177 DestinationUnavailable,
195 virtual MessageDisposition
Send(
218 #define PDECLARE_MessageDispositionNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, OpalIMContext::DispositionInfo)
221 #define PDECLARE_ASYNC_MessageDispositionNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, OpalIMContext::DispositionInfo)
224 #define PCREATE_MessageDispositionNotifier(fn) PCREATE_NOTIFIER2(fn, OpalIMContext::DispositionInfo)
248 #define PDECLARE_MessageReceivedNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, OpalIM)
251 #define PDECLARE_ASYNC_MessageReceivedNotifier(cls, fn) PDECLARE_ASYNC_NOTIFIER2(OpalIMContext, cls, fn, OpalIM)
254 #define PCREATE_MessageReceivedNotifier(fn) PCREATE_NOTIFIER2(fn, OpalIM)
278 const PString & state,
279 const PString & contentType = PString::Empty()
291 const CompositionInfo & info
298 const CompositionInfo & info
305 #define PDECLARE_CompositionIndicationNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalIMContext, cls, fn, OpalIMContext::CompositionInfo)
308 #define PDECLARE_ASYNC_CompositionIndicationNotifier(cls, fn) PDECLARE_ASYNC_NOTIFIER2(OpalIMContext, cls, fn, OpalIMContext::CompositionInfo)
311 #define PCREATE_CompositionIndicationNotifier(fn) PCREATE_NOTIFIER2(fn, OpalIMContext::CompositionInfo)
324 const PString & contentType
331 static PString
CreateKey(
const PURL & from,
const PURL & to);
401 #endif // OPAL_HAS_IM
403 #endif // OPAL_IM_IM_H
PMultiPartList m_bodyParts
More detailed information on the body data.
Definition: im.h:89
PQueue< OpalIM > m_outgoingMessages
Definition: im.h:384
bool m_opening
Opening or closing conversation.
Definition: im.h:137
virtual PStringArray GetContentTypes() const
Return array of all valid content types.
PSafePtr< OpalIMContext > m_context
Context opening/closing.
Definition: im.h:139
virtual void InternalOnMessageSent(const DispositionInfo &info)
void SetMessageReceivedNotifier(const MessageReceivedNotifier ¬ifier)
Set the notifier for the OnMessageReceived() function.
PSafePtr< OpalCall > m_call
Definition: im.h:374
uint32_t MessageID
Definition: im.h:91
virtual MessageDisposition Send(OpalIM *message)
static MessageID GetNextMessageId()
virtual void OnMessageDisposition(const DispositionInfo &info)
PString m_contentType
MIME type of composed message.
Definition: im.h:274
PURL m_to
URL for destination of message.
Definition: im.h:83
virtual MessageDisposition OnMessageReceived(const OpalIM &message)
PString m_conversationId
Conversation ID to get OpalIMContext.
Definition: im.h:202
virtual MessageDisposition InternalSend()
PURL m_remoteURL
Definition: im.h:392
CompositionIndicationNotifier m_compositionIndicationNotifier
Definition: im.h:380
PNotifierTemplate< CompositionInfo > CompositionIndicationNotifier
Type for composition indication notifiers.
Definition: im.h:302
const PString & GetRemoteName() const
Get remote display name for conversation.
Definition: im.h:347
virtual MessageDisposition InternalSendOutsideCall(OpalIM &message)
ConversationInfo(const PString &id, bool opening, bool byRemote, const PSafePtr< OpalIMContext > &context)
Definition: im.h:125
MessageDispositionNotifier m_messageDispositionNotifier
Definition: im.h:378
PStringOptions m_attributes
Definition: im.h:372
virtual bool SendCompositionIndication(const CompositionInfo &info)
bool m_byRemote
Operation is initiated by remote user or local user.
Definition: im.h:138
const PStringOptions & GetAttributes() const
Definition: im.h:360
PString m_conversationId
Definition: im.h:389
PString m_state
New state, usually CompositionIndicationActive() or CompositionIndicationIdle()
Definition: im.h:273
static PString CreateKey(const PURL &from, const PURL &to)
Calculate a key based on the from an to addresses.
void SetCompositionIndicationNotifier(const CompositionIndicationNotifier ¬ifier)
Set the notifier for the OnCompositionIndication() function.
virtual void OnCompositionIndication(const CompositionInfo &info)
MessageDisposition m_disposition
Disposition status.
Definition: im.h:204
MessageReceivedNotifier m_messageReceivedNotifier
Definition: im.h:379
PURL m_from
URL for source of message.
Definition: im.h:85
OpalIM * m_currentOutgoingMessage
Definition: im.h:383
virtual MessageDisposition InternalSendInsideCall(OpalIM &message)
const OpalMediaFormat & GetOpalSIPIM()
virtual bool Open(bool byRemote)
PDECLARE_MUTEX(m_notificationMutex)
const PURL & GetLocalURL() const
Get local URL for conversation.
Definition: im.h:350
PString m_localName
Definition: im.h:391
MessageID m_messageId
Definition: im.h:92
static const PCaselessString & CompositionIndicationIdle()
CompositionIndication idle status.
const PURL & GetRemoteURL() const
Get remote URL for conversation.
Definition: im.h:344
OpalTransportAddress m_toAddr
Physical address for destination of message.
Definition: im.h:84
CompositionInfo(const PString &id, const PString &state, const PString &contentType=PString::Empty())
Definition: im.h:276
const PString & GetKey() const
Get key for context based on to/from addresses.
Definition: im.h:341
PString m_conversationId
Conversation ID.
Definition: im.h:136
const OpalMediaFormat & GetOpalMSRP()
PTime m_lastUsed
Definition: im.h:387
PString m_conversationId
Conversation ID to get OpalIMContext.
Definition: im.h:272
PURL m_localURL
Definition: im.h:390
PString m_fromName
Alias (human readable) name for source of message.
Definition: im.h:87
void SetLocalName(const PString &name)
Set local display for conversation.
Definition: im.h:356
PString m_key
Definition: im.h:394
virtual bool CheckContentType(const PString &contentType) const
Check that the context type is valid for protocol.
bool m_weStartedCall
Definition: im.h:375
const PString & GetLocalName() const
Get local display for conversation.
Definition: im.h:353
void SetMessageDispositionNotifier(const MessageDispositionNotifier ¬ifier)
Set the notifier for the OnMessageDisposition() function.
const PString & GetID() const
Get conversation ID.
Definition: im.h:338
OpalIMEndPoint * m_endpoint
Definition: im.h:371
OpalTransportAddress m_fromAddr
Physical address for source of message.
Definition: im.h:86
Definition: transports.h:151
PNotifierTemplate< OpalIM > MessageReceivedNotifier
Type for message received notifiers.
Definition: im.h:245
PStringToString m_bodies
Map of MIME types to body text, e.g. "text/plain", "Hello Bob!".
Definition: im.h:88
PString m_remoteName
Definition: im.h:393
OpalIMContext()
Construct base for context.
static const PCaselessString & CompositionIndicationActive()
CompositionIndication active status.
PNotifierTemplate< DispositionInfo > MessageDispositionNotifier
Type for disposition notifiers.
Definition: im.h:215
~OpalIMContext()
Destroy context.
PString m_conversationId
Identifier for the conversation of messages.
Definition: im.h:81
P_DECLARE_STREAMABLE_ENUM(MessageDisposition, DispositionPending, DispositionAccepted, DeliveryOK, DisplayConfirmed, ProcessedNotification, StorageNotification, DispositionErrors, GenericError, UnacceptableContent, InvalidContent, DestinationUnknown, DestinationUnavailable, TransmissionTimeout, TransportFailure, ConversationClosed, UnsupportedFeature, DeliveryFailed)
const OpalMediaFormat & GetOpalT140()
OpalIM::MessageID m_messageId
Id of message disposition is of.
Definition: im.h:203
PStringOptions & GetAttributes()
Get the attributes for this presentity.
Definition: im.h:359