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

Side by Side Diff: net/quic/quic_multipath_received_packet_manager.cc

Issue 1548703002: Add class QuicMultipathReceivedPacketManager (not in use currently). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@110446931
Patch Set: Created 4 years, 12 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
OLDNEW
(Empty)
1 // Copyright (c) 2015 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 #include "net/quic/quic_multipath_received_packet_manager.h"
6
7 #include "base/stl_util.h"
8
9 namespace net {
10
11 QuicMultipathReceivedPacketManager::QuicMultipathReceivedPacketManager(
12 QuicConnectionStats* stats) {
13 path_managers_[kDefaultPathId] = new QuicReceivedPacketManager(stats);
14 }
15
16 QuicMultipathReceivedPacketManager::~QuicMultipathReceivedPacketManager() {
17 STLDeleteValues(&path_managers_);
18 }
19
20 void QuicMultipathReceivedPacketManager::OnPathCreated(
21 QuicPathId path_id,
22 QuicConnectionStats* stats) {
23 if (path_managers_[path_id] != nullptr) {
24 LOG(DFATAL) << "Received packet manager of path already exists: "
25 << static_cast<uint32>(path_id);
26 return;
27 }
28
29 path_managers_[path_id] = new QuicReceivedPacketManager(stats);
30 }
31
32 void QuicMultipathReceivedPacketManager::OnPathClosed(QuicPathId path_id) {
33 QuicReceivedPacketManager* manager = path_managers_[path_id];
34 if (manager == nullptr) {
35 LOG(DFATAL) << "Received packet manager of path does not exist: "
36 << static_cast<uint32>(path_id);
37 return;
38 }
39
40 delete manager;
41 path_managers_.erase(path_id);
42 }
43
44 void QuicMultipathReceivedPacketManager::RecordPacketReceived(
45 QuicPathId path_id,
46 QuicByteCount bytes,
47 const QuicPacketHeader& header,
48 QuicTime receipt_time) {
49 QuicReceivedPacketManager* manager = path_managers_[path_id];
50 if (manager == nullptr) {
51 LOG(DFATAL) << "Received a packet on a non-existent path.";
52 return;
53 }
54
55 manager->RecordPacketReceived(bytes, header, receipt_time);
56 }
57
58 void QuicMultipathReceivedPacketManager::RecordPacketRevived(
59 QuicPathId path_id,
60 QuicPacketNumber packet_number) {
61 QuicReceivedPacketManager* manager = path_managers_[path_id];
62 if (manager == nullptr) {
63 LOG(DFATAL) << "Revived a packet on a non-existent path.";
64 return;
65 }
66
67 manager->RecordPacketRevived(packet_number);
68 }
69
70 bool QuicMultipathReceivedPacketManager::IsMissing(
71 QuicPathId path_id,
72 QuicPacketNumber packet_number) {
73 QuicReceivedPacketManager* manager = path_managers_[path_id];
74 if (manager == nullptr) {
75 LOG(DFATAL) << "Check whether a packet is missing on a non-existent path.";
76 return true;
77 }
78
79 return manager->IsMissing(packet_number);
80 }
81
82 bool QuicMultipathReceivedPacketManager::IsAwaitingPacket(
83 QuicPathId path_id,
84 QuicPacketNumber packet_number) {
85 QuicReceivedPacketManager* manager = path_managers_[path_id];
86 if (manager == nullptr) {
87 LOG(DFATAL) << "Check whether a packet is awaited on a non-existent path.";
88 return false;
89 }
90
91 return manager->IsAwaitingPacket(packet_number);
92 }
93
94 void QuicMultipathReceivedPacketManager::UpdateReceivedPacketInfo(
95 std::vector<QuicAckFrame>* ack_frames,
96 QuicTime approximate_now,
97 bool force_all_paths) {
98 QuicAckFrame ack_frame;
99 for (std::pair<QuicPathId, QuicReceivedPacketManager*>
100 per_path_received_packet_manager : path_managers_) {
101 if (!force_all_paths &&
102 !per_path_received_packet_manager.second->ack_frame_updated()) {
103 continue;
104 }
105 per_path_received_packet_manager.second->UpdateReceivedPacketInfo(
106 &ack_frame, approximate_now);
107 ack_frames->push_back(ack_frame);
108 }
109 }
110
111 void QuicMultipathReceivedPacketManager::UpdatePacketInformationSentByPeer(
112 const std::vector<QuicStopWaitingFrame>& stop_waitings) {
113 for (QuicStopWaitingFrame stop_waiting : stop_waitings) {
114 QuicReceivedPacketManager* manager = path_managers_[stop_waiting.path_id];
115 if (manager != nullptr) {
116 manager->UpdatePacketInformationSentByPeer(stop_waiting);
117 }
118 }
119 }
120
121 bool QuicMultipathReceivedPacketManager::HasNewMissingPackets(
122 QuicPathId path_id) const {
123 MultipathReceivedPacketManagerMap::const_iterator it =
124 path_managers_.find(path_id);
125 if (it == path_managers_.end()) {
126 LOG(DFATAL)
127 << "Check whether has new missing packets on a non-existent path.";
128 return false;
129 }
130
131 return it->second->HasNewMissingPackets();
132 }
133
134 QuicPacketNumber
135 QuicMultipathReceivedPacketManager::GetPeerLeastPacketAwaitingAck(
136 QuicPathId path_id) {
137 QuicReceivedPacketManager* manager = path_managers_[path_id];
138 if (manager == nullptr) {
139 LOG(DFATAL)
140 << "Try to get peer_least_packet_awaiting_ack of a non-existent path.";
141 return false;
142 }
143
144 return manager->peer_least_packet_awaiting_ack();
145 }
146
147 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_multipath_received_packet_manager.h ('k') | net/quic/quic_multipath_received_packet_manager_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698