# OpalSIPIMContext Class Reference

`#include <sipim.h>`

Inheritance diagram for OpalSIPIMContext:

[legend]
Collaboration diagram for OpalSIPIMContext:
[legend]

## Public Member Functions

| OpalSIPIMContext ()
virtual bool | Open (bool byRemote)
virtual bool | SendCompositionIndication (const CompositionInfo &info)

## Static Public Member Functions

static void | OnMESSAGECompleted (SIPEndPoint &endpoint, const SIPMessage::Params &params, SIP_PDU::StatusCodes reason)
static void | OnReceivedMESSAGE (SIPEndPoint &endpoint, SIPConnection *connection, SIP_PDU &pdu)

## Protected Member Functions

virtual MessageDisposition | InternalSendOutsideCall (OpalIM &message)
virtual MessageDisposition | InternalSendInsideCall (OpalIM &message)
virtual MessageDisposition | OnMessageReceived (const OpalIM &message)
virtual MessageDisposition | InternalOnCompositionIndication (const OpalIM &message)
virtual MessageDisposition | InternalOnDisposition (const OpalIM &message)
void | PopulateParams (SIPMessage::Params &params, const OpalIM &message)
| PDECLARE_NOTIFIER (PTimer, OpalSIPIMContext, OnRxCompositionIdleTimer)
| PDECLARE_NOTIFIER (PTimer, OpalSIPIMContext, OnTxCompositionIdleTimer)

## Protected Attributes

PString | m_rxCompositionState
PTimer | m_rxCompositionIdleTimeout
PString | m_txCompositionState
PTimer | m_txCompositionIdleTimeout
PSimpleTimer | m_txCompositionRefreshTimeout
PTime | m_lastActive

## Detailed Description

Class representing a SIP Instant Messaging "conversation". This keeps the context for Instant Messages between two SIP entities. As there are, at least, three (and a half) different mechanisms for doing IM between two SIP endpoints these are chose via capabilities selected before calling OpalIMContext::Create()

SIP-IM Indicates RFC 3428 compliant messaging, using the SIP MESSAGE command. This may be done in call or out of call, the latter is the default. The in call mode is used if OpalIMEndPoint::Create() is given an existing SIPConnection in which to exchange messages. T.140 Indicates RFC 4103 compliant messaging, which is T.140 compliant text sent via RTP. This always requires an active connection, so one will be created if needed. MSRP Indicates RFC 4975 compliant messaging.

The selection on the method that is used is dependent on the applications active media formats.

## Constructor & Destructor Documentation

OpalSIPIMContext::OpalSIPIMContext | ( |  | ) |

## Member Function Documentation

virtual MessageDisposition OpalSIPIMContext::InternalOnCompositionIndication | ( | const OpalIM & | message | ) | `[protected, virtual]`

virtual MessageDisposition OpalSIPIMContext::InternalOnDisposition | ( | const OpalIM & | message | ) | `[protected, virtual]`

virtual MessageDisposition OpalSIPIMContext::InternalSendInsideCall | ( | OpalIM & | message | ) | `[protected, virtual]`

Reimplemented from OpalIMContext.

virtual MessageDisposition OpalSIPIMContext::InternalSendOutsideCall | ( | OpalIM & | message | ) | `[protected, virtual]`

Reimplemented from OpalIMContext.

static void OpalSIPIMContext::OnMESSAGECompleted | ( | SIPEndPoint & | endpoint,
|  | const SIPMessage::Params & | params,
|  | SIP_PDU::StatusCodes | reason |
| ) |  |  | `[static]`

virtual MessageDisposition OpalSIPIMContext::OnMessageReceived | ( | const OpalIM & | message | ) | `[protected, virtual]`

Called when an incoming message arrives for this context. Default implementation checks for valid MIME content and then calls the notifier, if set. If no notifier is set, then the OpalManager::OnMessageReceived() function is called.

Reimplemented from OpalIMContext.

static void OpalSIPIMContext::OnReceivedMESSAGE | ( | SIPEndPoint & | endpoint,
|  | SIPConnection * | connection,
|  | SIP_PDU & | pdu |
| ) |  |  | `[static]`

virtual bool OpalSIPIMContext::Open | ( | bool | byRemote | ) | `[virtual]`

Open the context (conversation) Default behaviour simply returns true.

Reimplemented from OpalIMContext.

OpalSIPIMContext::PDECLARE_NOTIFIER | ( | PTimer | ,
|  | OpalSIPIMContext | ,
|  | OnTxCompositionIdleTimer |  |
| ) |  |  | `[protected]`

OpalSIPIMContext::PDECLARE_NOTIFIER | ( | PTimer | ,
|  | OpalSIPIMContext | ,
|  | OnRxCompositionIdleTimer |  |
| ) |  |  | `[protected]`

void OpalSIPIMContext::PopulateParams | ( | SIPMessage::Params & | params,
|  | const OpalIM & | message |
| ) |  |  | `[protected]`

virtual bool OpalSIPIMContext::SendCompositionIndication | ( | const CompositionInfo & | info | ) | `[virtual]`

## Field Documentation

PTime OpalSIPIMContext::m_lastActive `[protected]`

PTimer OpalSIPIMContext::m_rxCompositionIdleTimeout `[protected]`

PString OpalSIPIMContext::m_rxCompositionState `[protected]`

PTimer OpalSIPIMContext::m_txCompositionIdleTimeout `[protected]`

PSimpleTimer OpalSIPIMContext::m_txCompositionRefreshTimeout `[protected]`

PString OpalSIPIMContext::m_txCompositionState `[protected]`

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

- sipim.h