| 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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 void set_component(int component) { component_ = component; } | 171 void set_component(int component) { component_ = component; } |
| 172 | 172 |
| 173 bool send_retransmit_count_attribute() const { | 173 bool send_retransmit_count_attribute() const { |
| 174 return send_retransmit_count_attribute_; | 174 return send_retransmit_count_attribute_; |
| 175 } | 175 } |
| 176 void set_send_retransmit_count_attribute(bool enable) { | 176 void set_send_retransmit_count_attribute(bool enable) { |
| 177 send_retransmit_count_attribute_ = enable; | 177 send_retransmit_count_attribute_ = enable; |
| 178 } | 178 } |
| 179 | 179 |
| 180 // Identifies the generation that this port was created in. | 180 // Identifies the generation that this port was created in. |
| 181 uint32_t generation() { return generation_; } | 181 uint32_t generation() const { return generation_; } |
| 182 void set_generation(uint32_t generation) { generation_ = generation; } | 182 void set_generation(uint32_t generation) { generation_ = generation; } |
| 183 | 183 |
| 184 const std::string username_fragment() const; | 184 const std::string username_fragment() const; |
| 185 const std::string& password() const { return password_; } | 185 const std::string& password() const { return password_; } |
| 186 | 186 |
| 187 // May be called when this port was initially created by a pooled | 187 // May be called when this port was initially created by a pooled |
| 188 // PortAllocatorSession, and is now being assigned to an ICE transport. | 188 // PortAllocatorSession, and is now being assigned to an ICE transport. |
| 189 // Updates the information for candidates as well. | 189 // Updates the information for candidates as well. |
| 190 void SetIceParameters(int component, | 190 void SetIceParameters(int component, |
| 191 const std::string& username_fragment, | 191 const std::string& username_fragment, |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 STATE_FAILED // Check for this connection failed. | 428 STATE_FAILED // Check for this connection failed. |
| 429 }; | 429 }; |
| 430 | 430 |
| 431 virtual ~Connection(); | 431 virtual ~Connection(); |
| 432 | 432 |
| 433 // The local port where this connection sends and receives packets. | 433 // The local port where this connection sends and receives packets. |
| 434 Port* port() { return port_; } | 434 Port* port() { return port_; } |
| 435 const Port* port() const { return port_; } | 435 const Port* port() const { return port_; } |
| 436 | 436 |
| 437 // Implementation of virtual methods in CandidatePairInterface. | 437 // Implementation of virtual methods in CandidatePairInterface. |
| 438 // Returns the description of the local port | 438 // Returns the description of the local port. |
| 439 virtual const Candidate& local_candidate() const; | 439 virtual const Candidate& local_candidate() const; |
| 440 // Returns the description of the remote port to which we communicate. | 440 // Returns the description of the remote port to which we communicate. |
| 441 virtual const Candidate& remote_candidate() const; | 441 virtual const Candidate& remote_candidate() const; |
| 442 | 442 |
| 443 // Returns the pair priority. | 443 // Returns the pair priority. |
| 444 uint64_t priority() const; | 444 uint64_t priority() const; |
| 445 | 445 |
| 446 enum WriteState { | 446 enum WriteState { |
| 447 STATE_WRITABLE = 0, // we have received ping responses recently | 447 STATE_WRITABLE = 0, // We have received ping responses recently. |
| 448 STATE_WRITE_UNRELIABLE = 1, // we have had a few ping failures | 448 STATE_PRESUMED_WRITABLE = 1, // We haven't received a ping response, but |
| 449 STATE_WRITE_INIT = 2, // we have yet to receive a ping response | 449 // we presume we're writable, because we're a |
| 450 STATE_WRITE_TIMEOUT = 3, // we have had a large number of ping failures | 450 // TURN-TURN connection and CreatePermission |
| 451 // isn't required. |
| 452 STATE_WRITE_UNRELIABLE = 2, // We have had a few ping failures. |
| 453 STATE_WRITE_INIT = 3, // We have yet to receive a ping response. |
| 454 STATE_WRITE_TIMEOUT = 4, // We have had a large number of ping failures. |
| 451 }; | 455 }; |
| 452 | 456 |
| 453 WriteState write_state() const { return write_state_; } | 457 WriteState write_state() const { return write_state_; } |
| 454 bool writable() const { return write_state_ == STATE_WRITABLE; } | 458 bool writable() const { return write_state_ == STATE_WRITABLE; } |
| 459 bool presumed_writable() const { |
| 460 return write_state_ == STATE_WRITABLE || |
| 461 write_state_ == STATE_PRESUMED_WRITABLE; |
| 462 } |
| 455 bool receiving() const { return receiving_; } | 463 bool receiving() const { return receiving_; } |
| 456 | 464 |
| 457 // Determines whether the connection has finished connecting. This can only | 465 // Determines whether the connection has finished connecting. This can only |
| 458 // be false for TCP connections. | 466 // be false for TCP connections. |
| 459 bool connected() const { return connected_; } | 467 bool connected() const { return connected_; } |
| 460 bool weak() const { return !(writable() && receiving() && connected()); } | 468 bool weak() const { return !(writable() && receiving() && connected()); } |
| 461 bool active() const { | 469 bool active() const { |
| 462 return write_state_ != STATE_WRITE_TIMEOUT; | 470 return write_state_ != STATE_WRITE_TIMEOUT; |
| 463 } | 471 } |
| 464 // A connection is dead if it can be safely deleted. | 472 // A connection is dead if it can be safely deleted. |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 void MaybeUpdatePeerReflexiveCandidate(const Candidate& new_candidate); | 590 void MaybeUpdatePeerReflexiveCandidate(const Candidate& new_candidate); |
| 583 | 591 |
| 584 // Returns the last received time of any data, stun request, or stun | 592 // Returns the last received time of any data, stun request, or stun |
| 585 // response in milliseconds | 593 // response in milliseconds |
| 586 int64_t last_received() const; | 594 int64_t last_received() const; |
| 587 | 595 |
| 588 protected: | 596 protected: |
| 589 enum { MSG_DELETE = 0, MSG_FIRST_AVAILABLE }; | 597 enum { MSG_DELETE = 0, MSG_FIRST_AVAILABLE }; |
| 590 | 598 |
| 591 // Constructs a new connection to the given remote port. | 599 // Constructs a new connection to the given remote port. |
| 592 Connection(Port* port, size_t index, const Candidate& candidate); | 600 Connection(Port* port, |
| 601 size_t index, |
| 602 const Candidate& candidate, |
| 603 const IceConfig& config); |
| 593 | 604 |
| 594 // Called back when StunRequestManager has a stun packet to send | 605 // Called back when StunRequestManager has a stun packet to send |
| 595 void OnSendStunPacket(const void* data, size_t size, StunRequest* req); | 606 void OnSendStunPacket(const void* data, size_t size, StunRequest* req); |
| 596 | 607 |
| 597 // Callbacks from ConnectionRequest | 608 // Callbacks from ConnectionRequest |
| 598 virtual void OnConnectionRequestResponse(ConnectionRequest* req, | 609 virtual void OnConnectionRequestResponse(ConnectionRequest* req, |
| 599 StunMessage* response); | 610 StunMessage* response); |
| 600 void OnConnectionRequestErrorResponse(ConnectionRequest* req, | 611 void OnConnectionRequestErrorResponse(ConnectionRequest* req, |
| 601 StunMessage* response); | 612 StunMessage* response); |
| 602 void OnConnectionRequestTimeout(ConnectionRequest* req); | 613 void OnConnectionRequestTimeout(ConnectionRequest* req); |
| 603 void OnConnectionRequestSent(ConnectionRequest* req); | 614 void OnConnectionRequestSent(ConnectionRequest* req); |
| 604 | 615 |
| 616 // May be STATE_WRITE_INIT or STATE_PRESUMED_WRITABLE depending on ICE |
| 617 // config and candidate types. |
| 618 WriteState InitialWriteState() const; |
| 619 |
| 605 // Changes the state and signals if necessary. | 620 // Changes the state and signals if necessary. |
| 606 void set_write_state(WriteState value); | 621 void set_write_state(WriteState value); |
| 607 void set_receiving(bool value); | 622 void set_receiving(bool value); |
| 608 void set_state(State state); | 623 void set_state(State state); |
| 609 void set_connected(bool value); | 624 void set_connected(bool value); |
| 610 | 625 |
| 611 void OnMessage(rtc::Message *pmsg); | 626 void OnMessage(rtc::Message *pmsg); |
| 612 | 627 |
| 613 Port* port_; | 628 Port* port_; |
| 614 size_t local_candidate_index_; | 629 size_t local_candidate_index_; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 643 private: | 658 private: |
| 644 void MaybeAddPrflxCandidate(ConnectionRequest* request, | 659 void MaybeAddPrflxCandidate(ConnectionRequest* request, |
| 645 StunMessage* response); | 660 StunMessage* response); |
| 646 | 661 |
| 647 bool reported_; | 662 bool reported_; |
| 648 State state_; | 663 State state_; |
| 649 // Time duration to switch from receiving to not receiving. | 664 // Time duration to switch from receiving to not receiving. |
| 650 int receiving_timeout_; | 665 int receiving_timeout_; |
| 651 int64_t time_created_ms_; | 666 int64_t time_created_ms_; |
| 652 int num_pings_sent_ = 0; | 667 int num_pings_sent_ = 0; |
| 668 bool presume_writable_when_fully_relayed_; |
| 653 | 669 |
| 654 friend class Port; | 670 friend class Port; |
| 655 friend class ConnectionRequest; | 671 friend class ConnectionRequest; |
| 656 }; | 672 }; |
| 657 | 673 |
| 658 // ProxyConnection defers all the interesting work to the port. | 674 // ProxyConnection defers all the interesting work to the port. |
| 659 class ProxyConnection : public Connection { | 675 class ProxyConnection : public Connection { |
| 660 public: | 676 public: |
| 661 ProxyConnection(Port* port, size_t index, const Candidate& remote_candidate); | 677 ProxyConnection(Port* port, |
| 678 size_t index, |
| 679 const Candidate& remote_candidate, |
| 680 const IceConfig& config); |
| 662 | 681 |
| 663 int Send(const void* data, | 682 int Send(const void* data, |
| 664 size_t size, | 683 size_t size, |
| 665 const rtc::PacketOptions& options) override; | 684 const rtc::PacketOptions& options) override; |
| 666 int GetError() override { return error_; } | 685 int GetError() override { return error_; } |
| 667 | 686 |
| 668 private: | 687 private: |
| 669 int error_ = 0; | 688 int error_ = 0; |
| 670 }; | 689 }; |
| 671 | 690 |
| 672 } // namespace cricket | 691 } // namespace cricket |
| 673 | 692 |
| 674 #endif // WEBRTC_P2P_BASE_PORT_H_ | 693 #endif // WEBRTC_P2P_BASE_PORT_H_ |
| OLD | NEW |