| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // The Chrome-specific helper for QuicConnection which uses | 5 // The Chrome-specific helper for QuicConnection which uses |
| 6 // a TaskRunner for alarms, and uses a DatagramClientSocket for writing data. | 6 // a TaskRunner for alarms, and uses a DatagramClientSocket for writing data. |
| 7 | 7 |
| 8 #ifndef NET_QUIC_QUIC_CONNECTION_HELPER_H_ | 8 #ifndef NET_QUIC_QUIC_CONNECTION_HELPER_H_ |
| 9 #define NET_QUIC_QUIC_CONNECTION_HELPER_H_ | 9 #define NET_QUIC_QUIC_CONNECTION_HELPER_H_ |
| 10 | 10 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 virtual int WritePacketToWire(const QuicEncryptedPacket& packet, | 48 virtual int WritePacketToWire(const QuicEncryptedPacket& packet, |
| 49 int* error) OVERRIDE; | 49 int* error) OVERRIDE; |
| 50 virtual void SetRetransmissionAlarm(QuicTime::Delta delay) OVERRIDE; | 50 virtual void SetRetransmissionAlarm(QuicTime::Delta delay) OVERRIDE; |
| 51 virtual void SetSendAlarm(QuicTime::Delta delay) OVERRIDE; | 51 virtual void SetSendAlarm(QuicTime::Delta delay) OVERRIDE; |
| 52 virtual void SetTimeoutAlarm(QuicTime::Delta delay) OVERRIDE; | 52 virtual void SetTimeoutAlarm(QuicTime::Delta delay) OVERRIDE; |
| 53 virtual bool IsSendAlarmSet() OVERRIDE; | 53 virtual bool IsSendAlarmSet() OVERRIDE; |
| 54 virtual void UnregisterSendAlarmIfRegistered() OVERRIDE; | 54 virtual void UnregisterSendAlarmIfRegistered() OVERRIDE; |
| 55 virtual void SetAckAlarm(QuicTime::Delta delay) OVERRIDE; | 55 virtual void SetAckAlarm(QuicTime::Delta delay) OVERRIDE; |
| 56 virtual void ClearAckAlarm() OVERRIDE; | 56 virtual void ClearAckAlarm() OVERRIDE; |
| 57 | 57 |
| 58 int Read(IOBuffer* buf, int buf_len, const CompletionCallback& callback); | |
| 59 // TODO(wtc): these two methods should be able to report a failure. | |
| 60 void GetLocalAddress(IPEndPoint* local_address); | |
| 61 void GetPeerAddress(IPEndPoint* peer_address); | |
| 62 | |
| 63 private: | 58 private: |
| 64 friend class test::QuicConnectionHelperPeer; | 59 friend class test::QuicConnectionHelperPeer; |
| 65 | 60 |
| 66 // An alarm is scheduled for each data-bearing packet as it is sent out. | 61 // An alarm is scheduled for each data-bearing packet as it is sent out. |
| 67 // When the alarm goes off, the connection checks to see if the packet has | 62 // When the alarm goes off, the connection checks to see if the packet has |
| 68 // been acked, and retransmits if it has not. | 63 // been acked, and retransmits if it has not. |
| 69 void OnRetransmissionAlarm(); | 64 void OnRetransmissionAlarm(); |
| 70 // An alarm that is scheduled when the sent scheduler requires a | 65 // An alarm that is scheduled when the sent scheduler requires a |
| 71 // a delay before sending packets and fires when the packet may be sent. | 66 // a delay before sending packets and fires when the packet may be sent. |
| 72 void OnSendAlarm(); | 67 void OnSendAlarm(); |
| 73 // An alarm which fires when the connection may have timed out. | 68 // An alarm which fires when the connection may have timed out. |
| 74 void OnTimeoutAlarm(); | 69 void OnTimeoutAlarm(); |
| 75 // A completion callback invoked when a write completes. | 70 // A completion callback invoked when a write completes. |
| 76 void OnWriteComplete(int result); | 71 void OnWriteComplete(int result); |
| 77 // An alarm which fires if we've hit a timeout on sending an ack. | 72 // An alarm which fires if we've hit a timeout on sending an ack. |
| 78 void OnAckAlarm(); | 73 void OnAckAlarm(); |
| 79 | 74 |
| 80 base::WeakPtrFactory<QuicConnectionHelper> weak_factory_; | 75 base::WeakPtrFactory<QuicConnectionHelper> weak_factory_; |
| 81 base::TaskRunner* task_runner_; | 76 base::TaskRunner* task_runner_; |
| 82 scoped_ptr<DatagramClientSocket> socket_; | 77 DatagramClientSocket* socket_; |
| 83 QuicConnection* connection_; | 78 QuicConnection* connection_; |
| 84 const QuicClock* clock_; | 79 const QuicClock* clock_; |
| 85 QuicRandom* random_generator_; | 80 QuicRandom* random_generator_; |
| 86 bool send_alarm_registered_; | 81 bool send_alarm_registered_; |
| 87 bool timeout_alarm_registered_; | 82 bool timeout_alarm_registered_; |
| 88 bool retransmission_alarm_registered_; | 83 bool retransmission_alarm_registered_; |
| 89 bool retransmission_alarm_running_; | 84 bool retransmission_alarm_running_; |
| 90 bool ack_alarm_registered_; | 85 bool ack_alarm_registered_; |
| 91 QuicTime ack_alarm_time_; | 86 QuicTime ack_alarm_time_; |
| 92 // Times that packets should be retransmitted. | 87 // Times that packets should be retransmitted. |
| 93 std::map<QuicPacketSequenceNumber, QuicTime> retransmission_times_; | 88 std::map<QuicPacketSequenceNumber, QuicTime> retransmission_times_; |
| 94 | 89 |
| 95 DISALLOW_COPY_AND_ASSIGN(QuicConnectionHelper); | 90 DISALLOW_COPY_AND_ASSIGN(QuicConnectionHelper); |
| 96 }; | 91 }; |
| 97 | 92 |
| 98 } // namespace net | 93 } // namespace net |
| 99 | 94 |
| 100 #endif // NET_QUIC_QUIC_CONNECTION_HELPER_H_ | 95 #endif // NET_QUIC_QUIC_CONNECTION_HELPER_H_ |
| OLD | NEW |