OLD | NEW |
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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 }; | 163 }; |
164 | 164 |
165 void OnConfigReady(PortConfiguration* config); | 165 void OnConfigReady(PortConfiguration* config); |
166 void OnConfigStop(); | 166 void OnConfigStop(); |
167 void AllocatePorts(); | 167 void AllocatePorts(); |
168 void OnAllocate(); | 168 void OnAllocate(); |
169 void DoAllocate(); | 169 void DoAllocate(); |
170 void OnNetworksChanged(); | 170 void OnNetworksChanged(); |
171 void OnAllocationSequenceObjectsCreated(); | 171 void OnAllocationSequenceObjectsCreated(); |
172 void DisableEquivalentPhases(rtc::Network* network, | 172 void DisableEquivalentPhases(rtc::Network* network, |
173 PortConfiguration* config, uint32* flags); | 173 PortConfiguration* config, |
| 174 uint32_t* flags); |
174 void AddAllocatedPort(Port* port, AllocationSequence* seq, | 175 void AddAllocatedPort(Port* port, AllocationSequence* seq, |
175 bool prepare_address); | 176 bool prepare_address); |
176 void OnCandidateReady(Port* port, const Candidate& c); | 177 void OnCandidateReady(Port* port, const Candidate& c); |
177 void OnPortComplete(Port* port); | 178 void OnPortComplete(Port* port); |
178 void OnPortError(Port* port); | 179 void OnPortError(Port* port); |
179 void OnProtocolEnabled(AllocationSequence* seq, ProtocolType proto); | 180 void OnProtocolEnabled(AllocationSequence* seq, ProtocolType proto); |
180 void OnPortDestroyed(PortInterface* port); | 181 void OnPortDestroyed(PortInterface* port); |
181 void OnShake(); | 182 void OnShake(); |
182 void MaybeSignalCandidatesAllocationDone(); | 183 void MaybeSignalCandidatesAllocationDone(); |
183 void OnPortAllocationComplete(AllocationSequence* seq); | 184 void OnPortAllocationComplete(AllocationSequence* seq); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 kInit, // Initial state. | 250 kInit, // Initial state. |
250 kRunning, // Started allocating ports. | 251 kRunning, // Started allocating ports. |
251 kStopped, // Stopped from running. | 252 kStopped, // Stopped from running. |
252 kCompleted, // All ports are allocated. | 253 kCompleted, // All ports are allocated. |
253 | 254 |
254 // kInit --> kRunning --> {kCompleted|kStopped} | 255 // kInit --> kRunning --> {kCompleted|kStopped} |
255 }; | 256 }; |
256 AllocationSequence(BasicPortAllocatorSession* session, | 257 AllocationSequence(BasicPortAllocatorSession* session, |
257 rtc::Network* network, | 258 rtc::Network* network, |
258 PortConfiguration* config, | 259 PortConfiguration* config, |
259 uint32 flags); | 260 uint32_t flags); |
260 ~AllocationSequence(); | 261 ~AllocationSequence(); |
261 bool Init(); | 262 bool Init(); |
262 void Clear(); | 263 void Clear(); |
263 | 264 |
264 State state() const { return state_; } | 265 State state() const { return state_; } |
265 | 266 |
266 // Disables the phases for a new sequence that this one already covers for an | 267 // Disables the phases for a new sequence that this one already covers for an |
267 // equivalent network setup. | 268 // equivalent network setup. |
268 void DisableEquivalentPhases(rtc::Network* network, | 269 void DisableEquivalentPhases(rtc::Network* network, |
269 PortConfiguration* config, | 270 PortConfiguration* config, |
270 uint32* flags); | 271 uint32_t* flags); |
271 | 272 |
272 // Starts and stops the sequence. When started, it will continue allocating | 273 // Starts and stops the sequence. When started, it will continue allocating |
273 // new ports on its own timed schedule. | 274 // new ports on its own timed schedule. |
274 void Start(); | 275 void Start(); |
275 void Stop(); | 276 void Stop(); |
276 | 277 |
277 // MessageHandler | 278 // MessageHandler |
278 void OnMessage(rtc::Message* msg); | 279 void OnMessage(rtc::Message* msg); |
279 | 280 |
280 void EnableProtocol(ProtocolType proto); | 281 void EnableProtocol(ProtocolType proto); |
281 bool ProtocolEnabled(ProtocolType proto) const; | 282 bool ProtocolEnabled(ProtocolType proto) const; |
282 | 283 |
283 // Signal from AllocationSequence, when it's done with allocating ports. | 284 // Signal from AllocationSequence, when it's done with allocating ports. |
284 // This signal is useful, when port allocation fails which doesn't result | 285 // This signal is useful, when port allocation fails which doesn't result |
285 // in any candidates. Using this signal BasicPortAllocatorSession can send | 286 // in any candidates. Using this signal BasicPortAllocatorSession can send |
286 // its candidate discovery conclusion signal. Without this signal, | 287 // its candidate discovery conclusion signal. Without this signal, |
287 // BasicPortAllocatorSession doesn't have any event to trigger signal. This | 288 // BasicPortAllocatorSession doesn't have any event to trigger signal. This |
288 // can also be achieved by starting timer in BPAS. | 289 // can also be achieved by starting timer in BPAS. |
289 sigslot::signal1<AllocationSequence*> SignalPortAllocationComplete; | 290 sigslot::signal1<AllocationSequence*> SignalPortAllocationComplete; |
290 | 291 |
291 protected: | 292 protected: |
292 // For testing. | 293 // For testing. |
293 void CreateTurnPort(const RelayServerConfig& config); | 294 void CreateTurnPort(const RelayServerConfig& config); |
294 | 295 |
295 private: | 296 private: |
296 typedef std::vector<ProtocolType> ProtocolList; | 297 typedef std::vector<ProtocolType> ProtocolList; |
297 | 298 |
298 bool IsFlagSet(uint32 flag) { return ((flags_ & flag) != 0); } | 299 bool IsFlagSet(uint32_t flag) { return ((flags_ & flag) != 0); } |
299 void CreateUDPPorts(); | 300 void CreateUDPPorts(); |
300 void CreateTCPPorts(); | 301 void CreateTCPPorts(); |
301 void CreateStunPorts(); | 302 void CreateStunPorts(); |
302 void CreateRelayPorts(); | 303 void CreateRelayPorts(); |
303 void CreateGturnPort(const RelayServerConfig& config); | 304 void CreateGturnPort(const RelayServerConfig& config); |
304 | 305 |
305 void OnReadPacket(rtc::AsyncPacketSocket* socket, | 306 void OnReadPacket(rtc::AsyncPacketSocket* socket, |
306 const char* data, | 307 const char* data, |
307 size_t size, | 308 size_t size, |
308 const rtc::SocketAddress& remote_addr, | 309 const rtc::SocketAddress& remote_addr, |
309 const rtc::PacketTime& packet_time); | 310 const rtc::PacketTime& packet_time); |
310 | 311 |
311 void OnPortDestroyed(PortInterface* port); | 312 void OnPortDestroyed(PortInterface* port); |
312 | 313 |
313 BasicPortAllocatorSession* session_; | 314 BasicPortAllocatorSession* session_; |
314 rtc::Network* network_; | 315 rtc::Network* network_; |
315 rtc::IPAddress ip_; | 316 rtc::IPAddress ip_; |
316 PortConfiguration* config_; | 317 PortConfiguration* config_; |
317 State state_; | 318 State state_; |
318 uint32 flags_; | 319 uint32_t flags_; |
319 ProtocolList protocols_; | 320 ProtocolList protocols_; |
320 rtc::scoped_ptr<rtc::AsyncPacketSocket> udp_socket_; | 321 rtc::scoped_ptr<rtc::AsyncPacketSocket> udp_socket_; |
321 // There will be only one udp port per AllocationSequence. | 322 // There will be only one udp port per AllocationSequence. |
322 UDPPort* udp_port_; | 323 UDPPort* udp_port_; |
323 std::vector<TurnPort*> turn_ports_; | 324 std::vector<TurnPort*> turn_ports_; |
324 int phase_; | 325 int phase_; |
325 }; | 326 }; |
326 | 327 |
327 } // namespace cricket | 328 } // namespace cricket |
328 | 329 |
329 #endif // WEBRTC_P2P_CLIENT_BASICPORTALLOCATOR_H_ | 330 #endif // WEBRTC_P2P_CLIENT_BASICPORTALLOCATOR_H_ |
OLD | NEW |