blob: b344df2113277e9d786c6fd9c8e94bf9d095de99 [file] [log] [blame]
Emeric Vigier2f625822012-08-06 11:09:52 -04001// Copyright (C) 1999-2005 Open Source Telecom Corporation.
2// Copyright (C) 2006-2010 David Sugar, Tycho Softworks.
3//
4// This program is free software; you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation; either version 2 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17//
18// As a special exception, you may use this file as part of a free software
19// library without restriction. Specifically, if other files instantiate
20// templates or use macros or inline functions from this file, or you compile
21// this file and link it with other files to produce an executable, this
22// file does not by itself cause the resulting executable to be covered by
23// the GNU General Public License. This exception does not however
24// invalidate any other reasons why the executable file might be covered by
25// the GNU General Public License.
26//
27// This exception applies only to the code released under the name GNU
28// ccRTP. If you copy code from other releases into a copy of GNU
29// ccRTP, as the General Public License permits, the exception does
30// not apply to the code that you add in this way. To avoid misleading
31// anyone as to the status of such modified files, you must delete
32// this exception notice from them.
33//
34// If you write modifications of your own for GNU ccRTP, it is your choice
35// whether to permit this exception to apply to your modifications.
36// If you do not wish that, delete this exception notice.
37//
38// RTPDuplex class implementation
39//
40
41#include "private.h"
42#include <ccrtp/ext.h>
43
44#ifdef CCXX_NAMESPACES
45namespace ost {
46#endif
47
48RTPDuplex::RTPDuplex(const InetAddress &ia, tpport_t local, tpport_t remote) :
49RTPDataQueue(), UDPReceive(ia, local), UDPTransmit(ia, remote)
50{
51 dataBasePort = local;
52}
53
54RTPDuplex::~RTPDuplex()
55{
56 // Terminate both sockets.
57 endTransmitter();
58 endReceiver();
59}
60
61UDPSocket::Error RTPDuplex::connect(const InetHostAddress &ia, tpport_t port)
62{
63 UDPTransmit::Error rtn;
64
65 if(!port)
66 port = dataBasePort;
67
68 rtn = UDPTransmit::connect(ia, port);
69
70 if(!rtn)
71 rtn = UDPReceive::connect(ia, port + 1);
72 if(rtn)
73 return rtn;
74
75 enableStack();
76
77 return UDPTransmit::errSuccess;
78}
79
80#ifdef CCXX_NAMESPACES
81}
82#endif
83
84/** EMACS **
85 * Local variables:
86 * mode: c++
87 * c-basic-offset: 4
88 * End:
89 */
90
91
92