OPAL Version 3.10.2
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: 25108 $
00025  * $Author: rjongbloed $
00026  * $Date: 2011-02-12 20:32:21 -0600 (Sat, 12 Feb 2011) $
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);
00141 
00142     void SetConnectionByRtpLocalPort(RTP_Session * rtp, OpalConnection * connection);
00144 
00145   protected:
00146 #ifdef OPAL_ZRTP
00147     bool zrtpEnabled;
00148 #endif
00149 
00150     struct LocalRtpInfo {
00151       LocalRtpInfo(OpalConnection & connection) : m_connection(connection), m_previousResult(-1) { }
00152 
00153       OpalConnection & m_connection;
00154       int              m_previousResult;
00155     };
00156     typedef std::map<WORD, LocalRtpInfo> LocalRtpInfoMap;
00157     LocalRtpInfoMap m_connectionsByRtpLocalPort;
00158 };
00159 
00160 
00161 #endif // OPAL_OPAL_RTPEP_H