sipim.h

Go to the documentation of this file.
00001 /*
00002  * sipim.h
00003  *
00004  * Support for SIP session mode IM
00005  *
00006  * Open Phone Abstraction Library (OPAL)
00007  *
00008  * Copyright (c) 2008 Post Increment
00009  *
00010  * The contents of this file are subject to the Mozilla Public License
00011  * Version 1.0 (the "License"); you may not use this file except in
00012  * compliance with the License. You may obtain a copy of the License at
00013  * http://www.mozilla.org/MPL/
00014  *
00015  * Software distributed under the License is distributed on an "AS IS"
00016  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00017  * the License for the specific language governing rights and limitations
00018  * under the License.
00019  *
00020  * The Original Code is Open Phone Abstraction Library.
00021  *
00022  * The Initial Developer of the Original Code is Post Increment
00023  *
00024  * Contributor(s): ______________________________________.
00025  *
00026  * $Revision: 28394 $
00027  * $Author: rjongbloed $
00028  * $Date: 2012-09-24 00:17:07 -0500 (Mon, 24 Sep 2012) $
00029  */
00030 
00031 #ifndef OPAL_IM_SIPIM_H
00032 #define OPAL_IM_SIPIM_H
00033 
00034 #include <ptlib.h>
00035 #include <opal/buildopts.h>
00036 
00037 #if OPAL_HAS_SIPIM
00038 
00039 #include <opal/mediasession.h>
00040 #include <sip/sippdu.h>
00041 #include <im/im.h>
00042 #include <im/rfc4103.h>
00043 
00044 
00046 
00065 class OpalSIPIMContext : public OpalIMContext
00066 {
00067   public:
00068     OpalSIPIMContext();
00069 
00070     virtual bool Open(bool byRemote);
00071     virtual bool SendCompositionIndication(const CompositionInfo & info);
00072 
00073     static void OnMESSAGECompleted(
00074       SIPEndPoint & endpoint,
00075       const SIPMessage::Params & params,
00076       SIP_PDU::StatusCodes reason
00077     );
00078     static void OnReceivedMESSAGE(
00079       SIPEndPoint & endpoint,
00080       SIPConnection * connection,
00081       SIP_PDU & pdu
00082     );
00083 
00084   protected:
00085     virtual MessageDisposition InternalSendOutsideCall(OpalIM & message);
00086     virtual MessageDisposition InternalSendInsideCall(OpalIM & message);
00087 
00088     virtual MessageDisposition OnMessageReceived(const OpalIM & message);
00089 
00090     virtual MessageDisposition InternalOnCompositionIndication(const OpalIM & message);
00091     virtual MessageDisposition InternalOnDisposition(const OpalIM & message);
00092 
00093     void PopulateParams(SIPMessage::Params & params, const OpalIM & message);
00094 
00095     PDECLARE_NOTIFIER(PTimer, OpalSIPIMContext, OnRxCompositionIdleTimer);
00096     PDECLARE_NOTIFIER(PTimer, OpalSIPIMContext, OnTxCompositionIdleTimer);
00097 
00098     PString      m_rxCompositionState;
00099     PTimer       m_rxCompositionIdleTimeout;
00100     PString      m_txCompositionState;
00101     PTimer       m_txCompositionIdleTimeout;
00102     PSimpleTimer m_txCompositionRefreshTimeout;
00103     PTime        m_lastActive;
00104 };
00105 
00106 
00108 
00109 #endif // OPAL_HAS_SIPIM
00110 
00111 #endif // OPAL_IM_SIPIM_H

Generated on 21 Jun 2013 for OPAL by  doxygen 1.4.7