| 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 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 int generation); | 583 int generation); |
| 584 | 584 |
| 585 // If |remote_candidate_| is peer reflexive and is equivalent to | 585 // If |remote_candidate_| is peer reflexive and is equivalent to |
| 586 // |new_candidate| except the type, update |remote_candidate_| to | 586 // |new_candidate| except the type, update |remote_candidate_| to |
| 587 // |new_candidate|. | 587 // |new_candidate|. |
| 588 void MaybeUpdatePeerReflexiveCandidate(const Candidate& new_candidate); | 588 void MaybeUpdatePeerReflexiveCandidate(const Candidate& new_candidate); |
| 589 | 589 |
| 590 // Returns the last received time of any data, stun request, or stun | 590 // Returns the last received time of any data, stun request, or stun |
| 591 // response in milliseconds | 591 // response in milliseconds |
| 592 int64_t last_received() const; | 592 int64_t last_received() const; |
| 593 // Returns the last time when the connection changed its receiving state. |
| 594 int64_t receiving_unchanged_since() const { |
| 595 return receiving_unchanged_since_; |
| 596 } |
| 593 | 597 |
| 594 bool stable(int64_t now) const; | 598 bool stable(int64_t now) const; |
| 595 | 599 |
| 596 protected: | 600 protected: |
| 597 enum { MSG_DELETE = 0, MSG_FIRST_AVAILABLE }; | 601 enum { MSG_DELETE = 0, MSG_FIRST_AVAILABLE }; |
| 598 | 602 |
| 599 // Constructs a new connection to the given remote port. | 603 // Constructs a new connection to the given remote port. |
| 600 Connection(Port* port, size_t index, const Candidate& candidate); | 604 Connection(Port* port, size_t index, const Candidate& candidate); |
| 601 | 605 |
| 602 // Called back when StunRequestManager has a stun packet to send | 606 // Called back when StunRequestManager has a stun packet to send |
| 603 void OnSendStunPacket(const void* data, size_t size, StunRequest* req); | 607 void OnSendStunPacket(const void* data, size_t size, StunRequest* req); |
| 604 | 608 |
| 605 // Callbacks from ConnectionRequest | 609 // Callbacks from ConnectionRequest |
| 606 virtual void OnConnectionRequestResponse(ConnectionRequest* req, | 610 virtual void OnConnectionRequestResponse(ConnectionRequest* req, |
| 607 StunMessage* response); | 611 StunMessage* response); |
| 608 void OnConnectionRequestErrorResponse(ConnectionRequest* req, | 612 void OnConnectionRequestErrorResponse(ConnectionRequest* req, |
| 609 StunMessage* response); | 613 StunMessage* response); |
| 610 void OnConnectionRequestTimeout(ConnectionRequest* req); | 614 void OnConnectionRequestTimeout(ConnectionRequest* req); |
| 611 void OnConnectionRequestSent(ConnectionRequest* req); | 615 void OnConnectionRequestSent(ConnectionRequest* req); |
| 612 | 616 |
| 613 bool rtt_converged() const; | 617 bool rtt_converged() const; |
| 614 | 618 |
| 615 // If the response is not received within 2 * RTT, the response is assumed to | 619 // If the response is not received within 2 * RTT, the response is assumed to |
| 616 // be missing. | 620 // be missing. |
| 617 bool missing_responses(int64_t now) const; | 621 bool missing_responses(int64_t now) const; |
| 618 | 622 |
| 619 // Changes the state and signals if necessary. | 623 // Changes the state and signals if necessary. |
| 620 void set_write_state(WriteState value); | 624 void set_write_state(WriteState value); |
| 621 void set_receiving(bool value); | 625 void UpdateReceiving(int64_t now); |
| 622 void set_state(State state); | 626 void set_state(State state); |
| 623 void set_connected(bool value); | 627 void set_connected(bool value); |
| 624 | 628 |
| 625 void OnMessage(rtc::Message *pmsg); | 629 void OnMessage(rtc::Message *pmsg); |
| 626 | 630 |
| 627 Port* port_; | 631 Port* port_; |
| 628 size_t local_candidate_index_; | 632 size_t local_candidate_index_; |
| 629 Candidate remote_candidate_; | 633 Candidate remote_candidate_; |
| 630 WriteState write_state_; | 634 WriteState write_state_; |
| 631 bool receiving_; | 635 bool receiving_; |
| 632 bool connected_; | 636 bool connected_; |
| 633 bool pruned_; | 637 bool pruned_; |
| 634 // By default |use_candidate_attr_| flag will be true, | 638 // By default |use_candidate_attr_| flag will be true, |
| 635 // as we will be using aggressive nomination. | 639 // as we will be using aggressive nomination. |
| 636 // But when peer is ice-lite, this flag "must" be initialized to false and | 640 // But when peer is ice-lite, this flag "must" be initialized to false and |
| 637 // turn on when connection becomes "best connection". | 641 // turn on when connection becomes "best connection". |
| 638 bool use_candidate_attr_; | 642 bool use_candidate_attr_; |
| 639 // Whether this connection has been nominated by the controlling side via | 643 // Whether this connection has been nominated by the controlling side via |
| 640 // the use_candidate attribute. | 644 // the use_candidate attribute. |
| 641 bool nominated_; | 645 bool nominated_; |
| 642 IceMode remote_ice_mode_; | 646 IceMode remote_ice_mode_; |
| 643 StunRequestManager requests_; | 647 StunRequestManager requests_; |
| 644 int rtt_; | 648 int rtt_; |
| 645 int rtt_samples_ = 0; | 649 int rtt_samples_ = 0; |
| 646 int64_t last_ping_sent_; // last time we sent a ping to the other side | 650 int64_t last_ping_sent_; // last time we sent a ping to the other side |
| 647 int64_t last_ping_received_; // last time we received a ping from the other | 651 int64_t last_ping_received_; // last time we received a ping from the other |
| 648 // side | 652 // side |
| 649 int64_t last_data_received_; | 653 int64_t last_data_received_; |
| 650 int64_t last_ping_response_received_; | 654 int64_t last_ping_response_received_; |
| 655 int64_t receiving_unchanged_since_ = 0; |
| 651 std::vector<SentPing> pings_since_last_response_; | 656 std::vector<SentPing> pings_since_last_response_; |
| 652 | 657 |
| 653 rtc::RateTracker recv_rate_tracker_; | 658 rtc::RateTracker recv_rate_tracker_; |
| 654 rtc::RateTracker send_rate_tracker_; | 659 rtc::RateTracker send_rate_tracker_; |
| 655 | 660 |
| 656 ConnectionInfo stats_; | 661 ConnectionInfo stats_; |
| 657 | 662 |
| 658 private: | 663 private: |
| 659 void MaybeAddPrflxCandidate(ConnectionRequest* request, | 664 void MaybeAddPrflxCandidate(ConnectionRequest* request, |
| 660 StunMessage* response); | 665 StunMessage* response); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 680 const rtc::PacketOptions& options) override; | 685 const rtc::PacketOptions& options) override; |
| 681 int GetError() override { return error_; } | 686 int GetError() override { return error_; } |
| 682 | 687 |
| 683 private: | 688 private: |
| 684 int error_ = 0; | 689 int error_ = 0; |
| 685 }; | 690 }; |
| 686 | 691 |
| 687 } // namespace cricket | 692 } // namespace cricket |
| 688 | 693 |
| 689 #endif // WEBRTC_P2P_BASE_PORT_H_ | 694 #endif // WEBRTC_P2P_BASE_PORT_H_ |
| OLD | NEW |