Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1245)

Side by Side Diff: net/quic/quic_ack_notifier.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/port_suggester_unittest.cc ('k') | net/quic/quic_ack_notifier.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef NET_QUIC_QUIC_ACK_NOTIFIER_H_
6 #define NET_QUIC_QUIC_ACK_NOTIFIER_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "net/quic/quic_protocol.h"
10
11 namespace net {
12
13 // Used to register with a QuicConnection for notification once a set of packets
14 // have all been ACKed.
15 // The connection informs this class of newly ACKed sequence numbers, and once
16 // we have seen ACKs for all the sequence numbers we are interested in, we
17 // trigger a call to a provided Closure.
18 class NET_EXPORT_PRIVATE QuicAckNotifier {
19 public:
20 class NET_EXPORT_PRIVATE DelegateInterface
21 : public base::RefCounted<DelegateInterface> {
22 public:
23 DelegateInterface();
24 // Args:
25 // num_retransmitted_packets - Number of packets that had to be
26 // retransmitted.
27 // num_retransmitted_bytes - Number of bytes that had to be retransmitted.
28 virtual void OnAckNotification(int num_retransmitted_packets,
29 int num_retransmitted_bytes,
30 QuicTime::Delta delta_largest_observed) = 0;
31
32 protected:
33 friend class base::RefCounted<DelegateInterface>;
34
35 // Delegates are ref counted.
36 virtual ~DelegateInterface();
37 };
38
39 // QuicAckNotifier is expected to keep its own reference to the delegate.
40 explicit QuicAckNotifier(DelegateInterface* delegate);
41 virtual ~QuicAckNotifier();
42
43 // Register a serialized packet the notifier should track.
44 void OnSerializedPacket();
45
46 // Called on receipt of new ACK frame for an unacked packet.
47 // Decrements the number of unacked packets and if there are none left, calls
48 // the stored delegate's OnAckNotification method.
49 //
50 // Returns true if the delegate was called, false otherwise.
51 bool OnAck(QuicTime::Delta delta_largest_observed);
52
53 // Called when we've given up waiting for a sequence number, typically when
54 // the connection is torn down.
55 // Returns true if there are no more unacked packets being tracked.
56 bool OnPacketAbandoned();
57
58 bool HasUnackedPackets() const { return unacked_packets_ > 0; }
59
60 // If a packet is retransmitted by the connection, it will be sent with a
61 // different sequence number.
62 void OnPacketRetransmitted(int packet_payload_size);
63
64 private:
65 // The delegate's OnAckNotification() method will be called once we have been
66 // notified of ACKs for all the sequence numbers we are tracking.
67 // This is not owned by OnAckNotifier and must outlive it.
68 scoped_refptr<DelegateInterface> delegate_;
69
70 // The number of unacked packets being tracked.
71 int unacked_packets_;
72
73 // Number of packets that had to be retransmitted.
74 int retransmitted_packet_count_;
75 // Number of bytes that had to be retransmitted.
76 int retransmitted_byte_count_;
77
78 DISALLOW_COPY_AND_ASSIGN(QuicAckNotifier);
79 };
80
81 } // namespace net
82
83 #endif // NET_QUIC_QUIC_ACK_NOTIFIER_H_
OLDNEW
« no previous file with comments | « net/quic/port_suggester_unittest.cc ('k') | net/quic/quic_ack_notifier.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698