Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: webrtc/p2p/base/relayport.h

Issue 1589563003: Reland Connect TurnPort and TCPPort to AsyncPacketSocket::SignalSentPacket. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix build issues when building with Chromium. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/p2p/base/portinterface.h ('k') | webrtc/p2p/base/relayport.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 11 matching lines...) Expand all
22 namespace cricket { 22 namespace cricket {
23 23
24 class RelayEntry; 24 class RelayEntry;
25 class RelayConnection; 25 class RelayConnection;
26 26
27 // Communicates using an allocated port on the relay server. For each 27 // Communicates using an allocated port on the relay server. For each
28 // remote candidate that we try to send data to a RelayEntry instance 28 // remote candidate that we try to send data to a RelayEntry instance
29 // is created. The RelayEntry will try to reach the remote destination 29 // is created. The RelayEntry will try to reach the remote destination
30 // by connecting to all available server addresses in a pre defined 30 // by connecting to all available server addresses in a pre defined
31 // order with a small delay in between. When a connection is 31 // order with a small delay in between. When a connection is
32 // successful all other connection attemts are aborted. 32 // successful all other connection attempts are aborted.
33 class RelayPort : public Port { 33 class RelayPort : public Port {
34 public: 34 public:
35 typedef std::pair<rtc::Socket::Option, int> OptionValue; 35 typedef std::pair<rtc::Socket::Option, int> OptionValue;
36 36
37 // RelayPort doesn't yet do anything fancy in the ctor. 37 // RelayPort doesn't yet do anything fancy in the ctor.
38 static RelayPort* Create(rtc::Thread* thread, 38 static RelayPort* Create(rtc::Thread* thread,
39 rtc::PacketSocketFactory* factory, 39 rtc::PacketSocketFactory* factory,
40 rtc::Network* network, 40 rtc::Network* network,
41 const rtc::IPAddress& ip, 41 const rtc::IPAddress& ip,
42 uint16_t min_port, 42 uint16_t min_port,
43 uint16_t max_port, 43 uint16_t max_port,
44 const std::string& username, 44 const std::string& username,
45 const std::string& password) { 45 const std::string& password) {
46 return new RelayPort(thread, factory, network, ip, min_port, max_port, 46 return new RelayPort(thread, factory, network, ip, min_port, max_port,
47 username, password); 47 username, password);
48 } 48 }
49 virtual ~RelayPort(); 49 ~RelayPort() override;
50 50
51 void AddServerAddress(const ProtocolAddress& addr); 51 void AddServerAddress(const ProtocolAddress& addr);
52 void AddExternalAddress(const ProtocolAddress& addr); 52 void AddExternalAddress(const ProtocolAddress& addr);
53 53
54 const std::vector<OptionValue>& options() const { return options_; } 54 const std::vector<OptionValue>& options() const { return options_; }
55 bool HasMagicCookie(const char* data, size_t size); 55 bool HasMagicCookie(const char* data, size_t size);
56 56
57 virtual void PrepareAddress(); 57 void PrepareAddress() override;
58 virtual Connection* CreateConnection(const Candidate& address, 58 Connection* CreateConnection(const Candidate& address,
59 CandidateOrigin origin); 59 CandidateOrigin origin) override;
60 virtual int SetOption(rtc::Socket::Option opt, int value); 60 int SetOption(rtc::Socket::Option opt, int value) override;
61 virtual int GetOption(rtc::Socket::Option opt, int* value); 61 int GetOption(rtc::Socket::Option opt, int* value) override;
62 virtual int GetError(); 62 int GetError() override;
63 virtual bool SupportsProtocol(const std::string& protocol) const { 63 bool SupportsProtocol(const std::string& protocol) const override {
64 // Relay port may create both TCP and UDP connections. 64 // Relay port may create both TCP and UDP connections.
65 return true; 65 return true;
66 } 66 }
67 67
68 const ProtocolAddress * ServerAddress(size_t index) const; 68 const ProtocolAddress * ServerAddress(size_t index) const;
69 bool IsReady() { return ready_; } 69 bool IsReady() { return ready_; }
70 70
71 // Used for testing. 71 // Used for testing.
72 sigslot::signal1<const ProtocolAddress*> SignalConnectFailure; 72 sigslot::signal1<const ProtocolAddress*> SignalConnectFailure;
73 sigslot::signal1<const ProtocolAddress*> SignalSoftTimeout; 73 sigslot::signal1<const ProtocolAddress*> SignalSoftTimeout;
74 74
75 protected: 75 protected:
76 RelayPort(rtc::Thread* thread, 76 RelayPort(rtc::Thread* thread,
77 rtc::PacketSocketFactory* factory, 77 rtc::PacketSocketFactory* factory,
78 rtc::Network*, 78 rtc::Network*,
79 const rtc::IPAddress& ip, 79 const rtc::IPAddress& ip,
80 uint16_t min_port, 80 uint16_t min_port,
81 uint16_t max_port, 81 uint16_t max_port,
82 const std::string& username, 82 const std::string& username,
83 const std::string& password); 83 const std::string& password);
84 bool Init(); 84 bool Init();
85 85
86 void SetReady(); 86 void SetReady();
87 87
88 virtual int SendTo(const void* data, size_t size, 88 int SendTo(const void* data,
89 const rtc::SocketAddress& addr, 89 size_t size,
90 const rtc::PacketOptions& options, 90 const rtc::SocketAddress& addr,
91 bool payload); 91 const rtc::PacketOptions& options,
92 bool payload) override;
92 93
93 // Dispatches the given packet to the port or connection as appropriate. 94 // Dispatches the given packet to the port or connection as appropriate.
94 void OnReadPacket(const char* data, size_t size, 95 void OnReadPacket(const char* data, size_t size,
95 const rtc::SocketAddress& remote_addr, 96 const rtc::SocketAddress& remote_addr,
96 ProtocolType proto, 97 ProtocolType proto,
97 const rtc::PacketTime& packet_time); 98 const rtc::PacketTime& packet_time);
98 99
100 // The OnSentPacket callback is left empty here since they are handled by
101 // RelayEntry.
102 void OnSentPacket(rtc::AsyncPacketSocket* socket,
103 const rtc::SentPacket& sent_packet) override {}
104
99 private: 105 private:
100 friend class RelayEntry; 106 friend class RelayEntry;
101 107
102 std::deque<ProtocolAddress> server_addr_; 108 std::deque<ProtocolAddress> server_addr_;
103 std::vector<ProtocolAddress> external_addr_; 109 std::vector<ProtocolAddress> external_addr_;
104 bool ready_; 110 bool ready_;
105 std::vector<RelayEntry*> entries_; 111 std::vector<RelayEntry*> entries_;
106 std::vector<OptionValue> options_; 112 std::vector<OptionValue> options_;
107 int error_; 113 int error_;
108 }; 114 };
109 115
110 } // namespace cricket 116 } // namespace cricket
111 117
112 #endif // WEBRTC_P2P_BASE_RELAYPORT_H_ 118 #endif // WEBRTC_P2P_BASE_RELAYPORT_H_
OLDNEW
« no previous file with comments | « webrtc/p2p/base/portinterface.h ('k') | webrtc/p2p/base/relayport.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698