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

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

Issue 1303393002: Reland "Remove GICE (gone forever!) and PORTALLOCATOR_ENABLE_SHARED_UFRAG (enabled forever)." becau… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Add memcheck suppression Created 5 years, 4 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/rawtransport.cc ('k') | webrtc/p2p/base/rawtransportchannel.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 // TODO(pthatcher): Remove this file once Chrome's build files no
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 // longer refer to it.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_P2P_BASE_RAWTRANSPORTCHANNEL_H_
12 #define WEBRTC_P2P_BASE_RAWTRANSPORTCHANNEL_H_
13
14 #include <string>
15 #include <vector>
16 #include "webrtc/p2p/base/candidate.h"
17 #include "webrtc/p2p/base/rawtransport.h"
18 #include "webrtc/p2p/base/transportchannelimpl.h"
19 #include "webrtc/base/messagequeue.h"
20
21 #if defined(FEATURE_ENABLE_PSTN)
22
23 namespace rtc {
24 class Thread;
25 }
26
27 namespace cricket {
28
29 class Connection;
30 class PortAllocator;
31 class PortAllocatorSession;
32 class PortInterface;
33 class RelayPort;
34 class StunPort;
35
36 // Implements a channel that just sends bare packets once we have received the
37 // address of the other side. We pick a single address to send them based on
38 // a simple investigation of NAT type.
39 class RawTransportChannel : public TransportChannelImpl,
40 public rtc::MessageHandler {
41 public:
42 RawTransportChannel(const std::string& content_name,
43 int component,
44 RawTransport* transport,
45 rtc::Thread *worker_thread,
46 PortAllocator *allocator);
47 virtual ~RawTransportChannel();
48
49 // Implementation of normal channel packet sending.
50 virtual int SendPacket(const char *data, size_t len,
51 const rtc::PacketOptions& options, int flags);
52 virtual int SetOption(rtc::Socket::Option opt, int value);
53 virtual bool GetOption(rtc::Socket::Option opt, int* value);
54 virtual int GetError();
55
56 // Implements TransportChannelImpl.
57 virtual Transport* GetTransport() { return raw_transport_; }
58 virtual TransportChannelState GetState() const {
59 return TransportChannelState::STATE_COMPLETED;
60 }
61 virtual void SetIceCredentials(const std::string& ice_ufrag,
62 const std::string& ice_pwd) {}
63 virtual void SetRemoteIceCredentials(const std::string& ice_ufrag,
64 const std::string& ice_pwd) {}
65
66 // Creates an allocator session to start figuring out which type of
67 // port we should send to the other client. This will send
68 // SignalAvailableCandidate once we have decided.
69 virtual void Connect();
70
71 // Resets state back to unconnected.
72 virtual void Reset();
73
74 // We don't actually worry about signaling since we can't send new candidates.
75 virtual void OnSignalingReady() {}
76
77 // Handles a message setting the remote address. We are writable once we
78 // have this since we now know where to send.
79 virtual void OnCandidate(const Candidate& candidate);
80
81 void OnRemoteAddress(const rtc::SocketAddress& remote_address);
82
83 // Below ICE specific virtual methods not implemented.
84 virtual IceRole GetIceRole() const { return ICEROLE_UNKNOWN; }
85 virtual void SetIceRole(IceRole role) {}
86 virtual void SetIceTiebreaker(uint64 tiebreaker) {}
87
88 virtual bool GetIceProtocolType(IceProtocolType* type) const { return false; }
89 virtual void SetIceProtocolType(IceProtocolType type) {}
90
91 virtual void SetIceUfrag(const std::string& ice_ufrag) {}
92 virtual void SetIcePwd(const std::string& ice_pwd) {}
93 virtual void SetRemoteIceMode(IceMode mode) {}
94 virtual size_t GetConnectionCount() const { return 1; }
95
96 virtual bool GetStats(ConnectionInfos* infos) {
97 return false;
98 }
99
100 // DTLS methods.
101 virtual bool IsDtlsActive() const { return false; }
102
103 // Default implementation.
104 virtual bool GetSslRole(rtc::SSLRole* role) const {
105 return false;
106 }
107
108 virtual bool SetSslRole(rtc::SSLRole role) {
109 return false;
110 }
111
112 // Set up the ciphers to use for DTLS-SRTP.
113 virtual bool SetSrtpCiphers(const std::vector<std::string>& ciphers) {
114 return false;
115 }
116
117 // Find out which DTLS-SRTP cipher was negotiated.
118 virtual bool GetSrtpCipher(std::string* cipher) {
119 return false;
120 }
121
122 // Find out which DTLS cipher was negotiated.
123 virtual bool GetSslCipher(std::string* cipher) {
124 return false;
125 }
126
127 // Returns false because the channel is not DTLS.
128 virtual bool GetLocalIdentity(rtc::SSLIdentity** identity) const {
129 return false;
130 }
131
132 virtual bool GetRemoteCertificate(rtc::SSLCertificate** cert) const {
133 return false;
134 }
135
136 // Allows key material to be extracted for external encryption.
137 virtual bool ExportKeyingMaterial(
138 const std::string& label,
139 const uint8* context,
140 size_t context_len,
141 bool use_context,
142 uint8* result,
143 size_t result_len) {
144 return false;
145 }
146
147 virtual bool SetLocalIdentity(rtc::SSLIdentity* identity) {
148 return false;
149 }
150
151 // Set DTLS Remote fingerprint. Must be after local identity set.
152 virtual bool SetRemoteFingerprint(
153 const std::string& digest_alg,
154 const uint8* digest,
155 size_t digest_len) {
156 return false;
157 }
158
159 void SetReceivingTimeout(int timeout) override {}
160
161 private:
162 RawTransport* raw_transport_;
163 rtc::Thread *worker_thread_;
164 PortAllocator* allocator_;
165 PortAllocatorSession* allocator_session_;
166 StunPort* stun_port_;
167 RelayPort* relay_port_;
168 PortInterface* port_;
169 bool use_relay_;
170 rtc::SocketAddress remote_address_;
171
172 // Called when the allocator creates another port.
173 void OnPortReady(PortAllocatorSession* session, PortInterface* port);
174
175 // Called when one of the ports we are using has determined its address.
176 void OnCandidatesReady(PortAllocatorSession *session,
177 const std::vector<Candidate>& candidates);
178
179 // Called once we have chosen the port to use for communication with the
180 // other client. This will send its address and prepare the port for use.
181 void SetPort(PortInterface* port);
182
183 // Called once we have a port and a remote address. This will set mark the
184 // channel as writable and signal the route to the client.
185 void SetWritable();
186
187 // Called when we receive a packet from the other client.
188 void OnReadPacket(PortInterface* port, const char* data, size_t size,
189 const rtc::SocketAddress& addr);
190
191 // Handles a message to destroy unused ports.
192 virtual void OnMessage(rtc::Message *msg);
193
194 DISALLOW_COPY_AND_ASSIGN(RawTransportChannel);
195 };
196
197 } // namespace cricket
198
199 #endif // defined(FEATURE_ENABLE_PSTN)
200 #endif // WEBRTC_P2P_BASE_RAWTRANSPORTCHANNEL_H_
OLDNEW
« no previous file with comments | « webrtc/p2p/base/rawtransport.cc ('k') | webrtc/p2p/base/rawtransportchannel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698