rtpep.h

Go to the documentation of this file.
00001 /*
00002  * Endpoint abstraction
00003  *
00004  * Open Phone Abstraction Library (OPAL)
00005  *
00006  * Copyright (C) 2007 Post Increment
00007  *
00008  * The contents of this file are subject to the Mozilla Public License
00009  * Version 1.0 (the "License"); you may not use this file except in
00010  * compliance with the License. You may obtain a copy of the License at
00011  * http://www.mozilla.org/MPL/
00012  *
00013  * Software distributed under the License is distributed on an "AS IS"
00014  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00015  * the License for the specific language governing rights and limitations
00016  * under the License.
00017  *
00018  * The Original Code is Open Phone Abstraction Library.
00019  *
00020  * The Initial Developer of the Original Code is Post Increment
00021  *
00022  * Contributor(s): ______________________________________.
00023  *
00024  * $Revision: 24684 $
00025  * $Author: rjongbloed $
00026  * $Date: 2010-09-07 22:22:44 -0500 (Tue, 07 Sep 2010) $
00027  */
00028 
00029 #ifndef OPAL_OPAL_RTPEP_H
00030 #define OPAL_OPAL_RTPEP_H
00031 
00032 #ifdef P_USE_PRAGMA
00033 #pragma interface
00034 #endif
00035 
00036 #include <opal/buildopts.h>
00037 
00038 #include <opal/endpoint.h>
00039 
00040 
00044 class OpalRTPEndPoint : public OpalEndPoint
00045 {
00046   PCLASSINFO(OpalRTPEndPoint, OpalEndPoint);
00047 
00052     OpalRTPEndPoint(
00053       OpalManager & manager,          
00054       const PCaselessString & prefix, 
00055       unsigned attributes             
00056     );
00057 
00060     ~OpalRTPEndPoint();
00062 
00074     virtual OpalMediaFormatList GetMediaFormats() const;
00075 
00081     virtual void OnClosedMediaStream(
00082       const OpalMediaStream & stream     
00083     );
00085 
00105     virtual PBoolean IsRTPNATEnabled(
00106       OpalConnection & connection,            
00107       const PIPSocket::Address & localAddr,   
00108       const PIPSocket::Address & peerAddr,    
00109       const PIPSocket::Address & signalAddr,  
00110       PBoolean incoming                       
00111     );
00112 
00113 #ifdef OPAL_ZRTP
00114     virtual bool GetZRTPEnabled() const;
00115 #endif
00116 
00129     virtual bool OnLocalRTP(
00130       OpalConnection & connection1, 
00131       OpalConnection & connection2, 
00132       unsigned sessionID,           
00133       bool opened                   
00134     ) const;
00135 
00136     // Check for local RTP connection. Internal function.
00137     bool CheckForLocalRTP(const OpalRTPMediaStream & stream);
00138 
00139     // Check for local RTP connection. Internal function.
00140     void CheckEndLocalRTP(OpalConnection & connection, RTP_UDP * rtp);
00142 
00143   protected:
00144 #ifdef OPAL_ZRTP
00145     bool zrtpEnabled;
00146 #endif
00147 
00148     struct LocalRtpInfo {
00149       LocalRtpInfo(OpalConnection & connection) : m_connection(connection), m_previousResult(-1) { }
00150 
00151       OpalConnection & m_connection;
00152       int              m_previousResult;
00153     };
00154     typedef std::map<WORD, LocalRtpInfo> LocalRtpInfoMap;
00155     LocalRtpInfoMap m_connectionsByRtpLocalPort;
00156 };
00157 
00158 
00159 #endif // OPAL_OPAL_RTPEP_H

Generated on Mon Feb 21 20:19:21 2011 for OPAL by  doxygen 1.4.7