# 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