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

Side by Side Diff: net/tools/quic/quic_dispatcher.cc

Issue 131743007: Remove WritePacket() from internal server's QuicDispatcher; (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « net/tools/quic/quic_dispatcher.h ('k') | net/tools/quic/quic_dispatcher_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "net/tools/quic/quic_dispatcher.h" 5 #include "net/tools/quic/quic_dispatcher.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 DCHECK(false); 117 DCHECK(false);
118 } 118 }
119 119
120 private: 120 private:
121 QuicDispatcher* dispatcher_; 121 QuicDispatcher* dispatcher_;
122 }; 122 };
123 123
124 QuicDispatcher::QuicDispatcher(const QuicConfig& config, 124 QuicDispatcher::QuicDispatcher(const QuicConfig& config,
125 const QuicCryptoServerConfig& crypto_config, 125 const QuicCryptoServerConfig& crypto_config,
126 const QuicVersionVector& supported_versions, 126 const QuicVersionVector& supported_versions,
127 int fd,
128 EpollServer* epoll_server) 127 EpollServer* epoll_server)
129 : config_(config), 128 : config_(config),
130 crypto_config_(crypto_config), 129 crypto_config_(crypto_config),
131 time_wait_list_manager_( 130 time_wait_list_manager_(
132 new QuicTimeWaitListManager(this, epoll_server, supported_versions)), 131 new QuicTimeWaitListManager(this, epoll_server, supported_versions)),
133 delete_sessions_alarm_(new DeleteSessionsAlarm(this)), 132 delete_sessions_alarm_(new DeleteSessionsAlarm(this)),
134 epoll_server_(epoll_server), 133 epoll_server_(epoll_server),
135 helper_(new QuicEpollConnectionHelper(epoll_server_)), 134 helper_(new QuicEpollConnectionHelper(epoll_server_)),
136 writer_(new QuicPacketWriterWrapper(new QuicDefaultPacketWriter(fd))),
137 supported_versions_(supported_versions), 135 supported_versions_(supported_versions),
138 current_packet_(NULL), 136 current_packet_(NULL),
139 framer_(supported_versions, /*unused*/ QuicTime::Zero(), true), 137 framer_(supported_versions, /*unused*/ QuicTime::Zero(), true),
140 framer_visitor_(new QuicFramerVisitor(this)) { 138 framer_visitor_(new QuicFramerVisitor(this)) {
141 framer_.set_visitor(framer_visitor_.get()); 139 framer_.set_visitor(framer_visitor_.get());
142 } 140 }
143 141
144 QuicDispatcher::~QuicDispatcher() { 142 QuicDispatcher::~QuicDispatcher() {
145 STLDeleteValues(&session_map_); 143 STLDeleteValues(&session_map_);
146 STLDeleteElements(&closed_session_list_); 144 STLDeleteElements(&closed_session_list_);
147 } 145 }
148 146
147 void QuicDispatcher::Initialize(int fd) {
148 DCHECK(writer_ == NULL);
149 writer_.reset(CreateWriterWrapper(CreateWriter(fd)));
150 }
151
149 // TODO(fnk): remove the Writer interface implementation in favor of 152 // TODO(fnk): remove the Writer interface implementation in favor of
150 // direct requests for blocked list placement from Connection/Session. 153 // direct requests for blocked list placement from Connection/Session.
151 WriteResult QuicDispatcher::WritePacket(const char* buffer, size_t buf_len, 154 WriteResult QuicDispatcher::WritePacket(const char* buffer, size_t buf_len,
152 const IPAddressNumber& self_address, 155 const IPAddressNumber& self_address,
153 const IPEndPoint& peer_address, 156 const IPEndPoint& peer_address,
154 QuicBlockedWriterInterface* writer) { 157 QuicBlockedWriterInterface* writer) {
155 if (IsWriteBlocked()) { 158 if (IsWriteBlocked()) {
156 write_blocked_list_.insert(make_pair(writer, true)); 159 write_blocked_list_.insert(make_pair(writer, true));
157 return WriteResult(WRITE_STATUS_BLOCKED, EAGAIN); 160 return WriteResult(WRITE_STATUS_BLOCKED, EAGAIN);
158 } 161 }
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 << QuicUtils::ErrorToString(error); 323 << QuicUtils::ErrorToString(error);
321 324
322 if (closed_session_list_.empty()) { 325 if (closed_session_list_.empty()) {
323 epoll_server_->RegisterAlarmApproximateDelta( 326 epoll_server_->RegisterAlarmApproximateDelta(
324 0, delete_sessions_alarm_.get()); 327 0, delete_sessions_alarm_.get());
325 } 328 }
326 closed_session_list_.push_back(it->second); 329 closed_session_list_.push_back(it->second);
327 CleanUpSession(it); 330 CleanUpSession(it);
328 } 331 }
329 332
330 void QuicDispatcher::set_fd(int fd) {
331 writer_->set_writer(new QuicDefaultPacketWriter(fd));
332 }
333
334 QuicSession* QuicDispatcher::CreateQuicSession( 333 QuicSession* QuicDispatcher::CreateQuicSession(
335 QuicGuid guid, 334 QuicGuid guid,
336 const IPEndPoint& server_address, 335 const IPEndPoint& server_address,
337 const IPEndPoint& client_address) { 336 const IPEndPoint& client_address) {
338 QuicServerSession* session = new QuicServerSession( 337 QuicServerSession* session = new QuicServerSession(
339 config_, new QuicConnection(guid, client_address, helper_.get(), this, 338 config_, new QuicConnection(guid, client_address, helper_.get(), this,
340 true, supported_versions_), this); 339 true, supported_versions_), this);
341 session->InitializeSession(crypto_config_); 340 session->InitializeSession(crypto_config_);
342 return session; 341 return session;
343 } 342 }
344 343
344 QuicPacketWriter* QuicDispatcher::CreateWriter(int fd) {
345 return new QuicDefaultPacketWriter(fd);
346 }
347
348 QuicPacketWriterWrapper* QuicDispatcher::CreateWriterWrapper(
349 QuicPacketWriter* writer) {
350 return new QuicPacketWriterWrapper(writer);
351 }
352
353 void QuicDispatcher::set_writer(QuicPacketWriter* writer) {
354 writer_->set_writer(writer);
355 }
356
345 bool QuicDispatcher::HandlePacketForTimeWait( 357 bool QuicDispatcher::HandlePacketForTimeWait(
346 const QuicPacketPublicHeader& header) { 358 const QuicPacketPublicHeader& header) {
347 if (header.reset_flag) { 359 if (header.reset_flag) {
348 // Public reset packets do not have sequence numbers, so ignore the packet. 360 // Public reset packets do not have sequence numbers, so ignore the packet.
349 return false; 361 return false;
350 } 362 }
351 363
352 // Switch the framer to the correct version, so that the sequence number can 364 // Switch the framer to the correct version, so that the sequence number can
353 // be parsed correctly. 365 // be parsed correctly.
354 framer_.set_version(time_wait_list_manager_->GetQuicVersionFromGuid( 366 framer_.set_version(time_wait_list_manager_->GetQuicVersionFromGuid(
355 header.guid)); 367 header.guid));
356 368
357 // Continue parsing the packet to extract the sequence number. Then 369 // Continue parsing the packet to extract the sequence number. Then
358 // send it to the time wait manager in OnUnathenticatedHeader. 370 // send it to the time wait manager in OnUnathenticatedHeader.
359 return true; 371 return true;
360 } 372 }
361 373
362 } // namespace tools 374 } // namespace tools
363 } // namespace net 375 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_dispatcher.h ('k') | net/tools/quic/quic_dispatcher_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698