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 |
11 #ifndef WEBRTC_P2P_BASE_PORT_H_ | 11 #ifndef WEBRTC_P2P_BASE_PORT_H_ |
12 #define WEBRTC_P2P_BASE_PORT_H_ | 12 #define WEBRTC_P2P_BASE_PORT_H_ |
13 | 13 |
14 #include <map> | 14 #include <map> |
15 #include <set> | 15 #include <set> |
16 #include <string> | 16 #include <string> |
17 #include <vector> | 17 #include <vector> |
18 | 18 |
19 #include "webrtc/p2p/base/candidate.h" | 19 #include "webrtc/p2p/base/candidate.h" |
| 20 #include "webrtc/p2p/base/candidatepairinterface.h" |
20 #include "webrtc/p2p/base/packetsocketfactory.h" | 21 #include "webrtc/p2p/base/packetsocketfactory.h" |
21 #include "webrtc/p2p/base/portinterface.h" | 22 #include "webrtc/p2p/base/portinterface.h" |
22 #include "webrtc/p2p/base/stun.h" | 23 #include "webrtc/p2p/base/stun.h" |
23 #include "webrtc/p2p/base/stunrequest.h" | 24 #include "webrtc/p2p/base/stunrequest.h" |
24 #include "webrtc/p2p/base/transport.h" | 25 #include "webrtc/p2p/base/transport.h" |
25 #include "webrtc/base/asyncpacketsocket.h" | 26 #include "webrtc/base/asyncpacketsocket.h" |
26 #include "webrtc/base/network.h" | 27 #include "webrtc/base/network.h" |
27 #include "webrtc/base/proxyinfo.h" | 28 #include "webrtc/base/proxyinfo.h" |
28 #include "webrtc/base/ratetracker.h" | 29 #include "webrtc/base/ratetracker.h" |
29 #include "webrtc/base/sigslot.h" | 30 #include "webrtc/base/sigslot.h" |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 // A virtual cost perceived by the user, usually based on the network type | 404 // A virtual cost perceived by the user, usually based on the network type |
404 // (WiFi. vs. Cellular). It takes precedence over the priority when | 405 // (WiFi. vs. Cellular). It takes precedence over the priority when |
405 // comparing two connections. | 406 // comparing two connections. |
406 uint16_t network_cost_; | 407 uint16_t network_cost_; |
407 | 408 |
408 friend class Connection; | 409 friend class Connection; |
409 }; | 410 }; |
410 | 411 |
411 // Represents a communication link between a port on the local client and a | 412 // Represents a communication link between a port on the local client and a |
412 // port on the remote client. | 413 // port on the remote client. |
413 class Connection : public rtc::MessageHandler, | 414 class Connection : public CandidatePairInterface, |
414 public sigslot::has_slots<> { | 415 public rtc::MessageHandler, |
| 416 public sigslot::has_slots<> { |
415 public: | 417 public: |
416 struct SentPing { | 418 struct SentPing { |
417 SentPing(const std::string id, int64_t sent_time) | 419 SentPing(const std::string id, int64_t sent_time) |
418 : id(id), sent_time(sent_time) {} | 420 : id(id), sent_time(sent_time) {} |
419 | 421 |
420 std::string id; | 422 std::string id; |
421 int64_t sent_time; | 423 int64_t sent_time; |
422 }; | 424 }; |
423 | 425 |
424 // States are from RFC 5245. http://tools.ietf.org/html/rfc5245#section-5.7.4 | 426 // States are from RFC 5245. http://tools.ietf.org/html/rfc5245#section-5.7.4 |
425 enum State { | 427 enum State { |
426 STATE_WAITING = 0, // Check has not been performed, Waiting pair on CL. | 428 STATE_WAITING = 0, // Check has not been performed, Waiting pair on CL. |
427 STATE_INPROGRESS, // Check has been sent, transaction is in progress. | 429 STATE_INPROGRESS, // Check has been sent, transaction is in progress. |
428 STATE_SUCCEEDED, // Check already done, produced a successful result. | 430 STATE_SUCCEEDED, // Check already done, produced a successful result. |
429 STATE_FAILED // Check for this connection failed. | 431 STATE_FAILED // Check for this connection failed. |
430 }; | 432 }; |
431 | 433 |
432 virtual ~Connection(); | 434 virtual ~Connection(); |
433 | 435 |
434 // The local port where this connection sends and receives packets. | 436 // The local port where this connection sends and receives packets. |
435 Port* port() { return port_; } | 437 Port* port() { return port_; } |
436 const Port* port() const { return port_; } | 438 const Port* port() const { return port_; } |
437 | 439 |
| 440 // Implementation of virtual methods in CandidatePairInterface. |
438 // Returns the description of the local port | 441 // Returns the description of the local port |
439 virtual const Candidate& local_candidate() const; | 442 virtual const Candidate& local_candidate() const; |
440 | |
441 // Returns the description of the remote port to which we communicate. | 443 // Returns the description of the remote port to which we communicate. |
442 const Candidate& remote_candidate() const { return remote_candidate_; } | 444 virtual const Candidate& remote_candidate() const; |
443 | 445 |
444 // Returns the pair priority. | 446 // Returns the pair priority. |
445 uint64_t priority() const; | 447 uint64_t priority() const; |
446 | 448 |
447 enum WriteState { | 449 enum WriteState { |
448 STATE_WRITABLE = 0, // we have received ping responses recently | 450 STATE_WRITABLE = 0, // we have received ping responses recently |
449 STATE_WRITE_UNRELIABLE = 1, // we have had a few ping failures | 451 STATE_WRITE_UNRELIABLE = 1, // we have had a few ping failures |
450 STATE_WRITE_INIT = 2, // we have yet to receive a ping response | 452 STATE_WRITE_INIT = 2, // we have yet to receive a ping response |
451 STATE_WRITE_TIMEOUT = 3, // we have had a large number of ping failures | 453 STATE_WRITE_TIMEOUT = 3, // we have had a large number of ping failures |
452 }; | 454 }; |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 const rtc::PacketOptions& options) override; | 667 const rtc::PacketOptions& options) override; |
666 int GetError() override { return error_; } | 668 int GetError() override { return error_; } |
667 | 669 |
668 private: | 670 private: |
669 int error_ = 0; | 671 int error_ = 0; |
670 }; | 672 }; |
671 | 673 |
672 } // namespace cricket | 674 } // namespace cricket |
673 | 675 |
674 #endif // WEBRTC_P2P_BASE_PORT_H_ | 676 #endif // WEBRTC_P2P_BASE_PORT_H_ |
OLD | NEW |