sipim.h
Go to the documentation of this file.
/*
* sipim.h
*
* Support for SIP session mode IM
*
* Open Phone Abstraction Library (OPAL)
*
* Copyright (c) 2008 Post Increment
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Open Phone Abstraction Library.
*
* The Initial Developer of the Original Code is Post Increment
*
* Contributor(s): ______________________________________.
*
* $Revision: 25063 $
* $Author: csoutheren $
* $Date: 2011-01-13 22:54:22 -0600 (Thu, 13 Jan 2011) $
*/
#ifndef OPAL_IM_SIPIM_H
#define OPAL_IM_SIPIM_H
#include <ptlib.h>
#include <opal/buildopts.h>
#include <opal/rtpconn.h>
#include <opal/manager.h>
#include <opal/mediastrm.h>
#include <opal/mediatype.h>
#include <opal/mediatype.h>
#include <im/im.h>
#include <sip/sdp.h>
#include <sip/sippdu.h>
#if OPAL_HAS_SIPIM
class OpalSIPIMMediaType : public OpalIMMediaType
{
public:
OpalSIPIMMediaType();
virtual OpalMediaSession * CreateMediaSession(OpalConnection & conn, unsigned sessionID) const;
SDPMediaDescription * CreateSDPMediaDescription(const OpalTransportAddress & localAddress);
};
class OpalSIPIMMediaSession : public OpalMediaSession
{
PCLASSINFO(OpalSIPIMMediaSession, OpalMediaSession);
public:
OpalSIPIMMediaSession(OpalConnection & connection, unsigned sessionId);
OpalSIPIMMediaSession(const OpalSIPIMMediaSession & _obj);
virtual bool Open() { return true; }
virtual void Close() { }
virtual PObject * Clone() const { return new OpalSIPIMMediaSession(*this); }
virtual bool IsActive() const { return true; }
virtual bool IsRTP() const { return false; }
virtual bool HasFailed() const { return false; }
virtual OpalTransportAddress GetLocalMediaAddress() const;
virtual void SetRemoteMediaAddress(const OpalTransportAddress &, const OpalMediaFormatList & );
virtual SDPMediaDescription * CreateSDPMediaDescription(
const OpalTransportAddress & localAddress
);
virtual OpalMediaStream * CreateMediaStream(
const OpalMediaFormat & mediaFormat,
unsigned sessionID,
PBoolean isSource
);
virtual PString GetCallID() const { return callId; }
protected:
OpalTransportAddress transportAddress;
PString localURL;
PString remoteURL;
PString callId;
};
class OpalSIPIMContext : public OpalConnectionIMContext
{
public:
OpalSIPIMContext();
virtual SentStatus SendCompositionIndication(bool active = true);
static void PopulateParams(SIPMessage::Params & params, OpalIM & message);
protected:
virtual SentStatus InternalSendOutsideCall(OpalIM * message);
virtual SentStatus InternalSendInsideCall(OpalIM * message);
virtual SentStatus OnIncomingIM(OpalIM & message);
void OnCompositionIndicationTimeout();
void ResetTimers(OpalIM & message);
PDECLARE_NOTIFIER(PTimer, OpalSIPIMContext, OnRxCompositionTimerExpire);
PDECLARE_NOTIFIER(PTimer, OpalSIPIMContext, OnTxCompositionTimerExpire);
PDECLARE_NOTIFIER(PTimer, OpalSIPIMContext, OnTxIdleTimerExpire);
PTimer m_rxCompositionTimeout;
PTimer m_txCompositionTimeout;
PTimer m_txIdleTimeout;
RFC4103Context m_rfc4103Context;
};
#endif // OPAL_HAS_SIPIM
#endif // OPAL_IM_SIPIM_H
OpalSIPIMContext::m_txIdleTimeout
PTimer m_txIdleTimeout
Definition: sipim.h:128
OpalSIPIMMediaSession::GetLocalMediaAddress
virtual OpalTransportAddress GetLocalMediaAddress() const
OpalSIPIMMediaSession::GetCallID
virtual PString GetCallID() const
Definition: sipim.h:93
OpalSIPIMMediaType
Definition: sipim.h:47
OpalConnectionIMContext
Definition: im.h:243
OpalSIPIMContext::InternalSendOutsideCall
virtual SentStatus InternalSendOutsideCall(OpalIM *message)
OpalSIPIMContext
Definition: sipim.h:104
SIPMessage::Params
Definition: sippdu.h:1314
OpalSIPIMMediaSession::CreateMediaStream
virtual OpalMediaStream * CreateMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, PBoolean isSource)
buildopts.h
im.h
OpalMediaSession
Definition: rtpconn.h:72
OpalSIPIMMediaType::OpalSIPIMMediaType
OpalSIPIMMediaType()
OpalSIPIMContext::ResetTimers
void ResetTimers(OpalIM &message)
OpalSIPIMMediaSession::callId
PString callId
Definition: sipim.h:99
OpalSIPIMMediaSession::SetRemoteMediaAddress
virtual void SetRemoteMediaAddress(const OpalTransportAddress &, const OpalMediaFormatList &)
OpalSIPIMContext::m_rfc4103Context
RFC4103Context m_rfc4103Context
Definition: sipim.h:130
OpalSIPIMMediaType::CreateMediaSession
virtual OpalMediaSession * CreateMediaSession(OpalConnection &conn, unsigned sessionID) const
OpalSIPIMMediaSession::CreateSDPMediaDescription
virtual SDPMediaDescription * CreateSDPMediaDescription(const OpalTransportAddress &localAddress)
OpalSIPIMMediaSession::OpalSIPIMMediaSession
OpalSIPIMMediaSession(OpalConnection &connection, unsigned sessionId)
OpalIM
Definition: im.h:42
OpalSIPIMMediaSession::IsActive
virtual bool IsActive() const
Definition: sipim.h:73
OpalMediaFormatList
Definition: mediafmt.h:72
OpalMediaSession::connection
OpalConnection & connection
Definition: rtpconn.h:105
OpalSIPIMMediaSession::IsRTP
virtual bool IsRTP() const
Definition: sipim.h:75
OpalSIPIMMediaSession::Clone
virtual PObject * Clone() const
Definition: sipim.h:71
OpalMediaFormat
Definition: mediafmt.h:724
SDPMediaDescription
Definition: sdp.h:119
mediatype.h
OpalSIPIMContext::SendCompositionIndication
virtual SentStatus SendCompositionIndication(bool active=true)
OpalSIPIMMediaSession::HasFailed
virtual bool HasFailed() const
Definition: sipim.h:77
manager.h
OpalSIPIMContext::m_txCompositionTimeout
PTimer m_txCompositionTimeout
Definition: sipim.h:127
OpalSIPIMMediaSession::transportAddress
OpalTransportAddress transportAddress
Definition: sipim.h:96
OpalSIPIMContext::OnIncomingIM
virtual SentStatus OnIncomingIM(OpalIM &message)
OpalMediaSession::sessionId
unsigned sessionId
Definition: rtpconn.h:107
OpalSIPIMContext::m_rxCompositionTimeout
PTimer m_rxCompositionTimeout
Definition: sipim.h:126
sippdu.h
OpalSIPIMMediaSession
Definition: sipim.h:60
OpalSIPIMMediaSession::Open
virtual bool Open()
Definition: sipim.h:67
OpalMediaStream
Definition: mediastrm.h:111
OpalSIPIMMediaSession::localURL
PString localURL
Definition: sipim.h:97
OpalIMMediaType
Definition: im.h:74
OpalSIPIMMediaType::CreateSDPMediaDescription
SDPMediaDescription * CreateSDPMediaDescription(const OpalTransportAddress &localAddress)
RFC4103Context
Definition: rfc4103.h:44
OpalConnection
Definition: connection.h:353
OpalSIPIMMediaSession::remoteURL
PString remoteURL
Definition: sipim.h:98
mediastrm.h
OpalSIPIMContext::PopulateParams
static void PopulateParams(SIPMessage::Params &params, OpalIM &message)
sdp.h
OpalTransportAddress
Definition: transports.h:149
OpalSIPIMContext::InternalSendInsideCall
virtual SentStatus InternalSendInsideCall(OpalIM *message)
OpalSIPIMContext::OnCompositionIndicationTimeout
void OnCompositionIndicationTimeout()
rtpconn.h
OpalSIPIMContext::PDECLARE_NOTIFIER
PDECLARE_NOTIFIER(PTimer, OpalSIPIMContext, OnRxCompositionTimerExpire)
OpalSIPIMContext::OpalSIPIMContext
OpalSIPIMContext()
OpalIMContext::SentStatus
SentStatus
Definition: im.h:121
OpalSIPIMMediaSession::Close
virtual void Close()
Definition: sipim.h:69