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

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

Issue 2310543002: Limits only 16 new QUIC connections can be opened per epoll event. (Closed)
Patch Set: Limits only 16 new QUIC connections can be opened per epoll event. Created 4 years, 3 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/tools/quic/end_to_end_test.cc ('k') | net/tools/quic/quic_dispatcher.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 // A server side dispatcher which dispatches a given client's data to their 5 // A server side dispatcher which dispatches a given client's data to their
6 // stream. 6 // stream.
7 7
8 #ifndef NET_TOOLS_QUIC_QUIC_DISPATCHER_H_ 8 #ifndef NET_TOOLS_QUIC_QUIC_DISPATCHER_H_
9 #define NET_TOOLS_QUIC_QUIC_DISPATCHER_H_ 9 #define NET_TOOLS_QUIC_QUIC_DISPATCHER_H_
10 10
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) override; 139 bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) override;
140 bool OnBlockedFrame(const QuicBlockedFrame& frame) override; 140 bool OnBlockedFrame(const QuicBlockedFrame& frame) override;
141 bool OnPathCloseFrame(const QuicPathCloseFrame& frame) override; 141 bool OnPathCloseFrame(const QuicPathCloseFrame& frame) override;
142 void OnPacketComplete() override; 142 void OnPacketComplete() override;
143 143
144 // QuicBufferedPacketStore::VisitorInterface implementation. 144 // QuicBufferedPacketStore::VisitorInterface implementation.
145 void OnExpiredPackets(QuicConnectionId connection_id, 145 void OnExpiredPackets(QuicConnectionId connection_id,
146 QuicBufferedPacketStore::BufferedPacketList 146 QuicBufferedPacketStore::BufferedPacketList
147 early_arrived_packets) override; 147 early_arrived_packets) override;
148 148
149 // Create connections for previously buffered CHLOs as many as allowed.
150 virtual void ProcessBufferedChlos(size_t max_connections_to_create);
151
152 // Return true if there is CHLO buffered.
153 virtual bool HasChlosBuffered() const;
154
149 protected: 155 protected:
150 virtual QuicServerSessionBase* CreateQuicSession( 156 virtual QuicServerSessionBase* CreateQuicSession(
151 QuicConnectionId connection_id, 157 QuicConnectionId connection_id,
152 const IPEndPoint& client_address) = 0; 158 const IPEndPoint& client_address) = 0;
153 159
154 // Called when a connection is rejected statelessly. 160 // Called when a connection is rejected statelessly.
155 virtual void OnConnectionRejectedStatelessly(); 161 virtual void OnConnectionRejectedStatelessly();
156 162
157 // Called when a connection is closed statelessly. 163 // Called when a connection is closed statelessly.
158 virtual void OnConnectionClosedStatelessly(QuicErrorCode error); 164 virtual void OnConnectionClosedStatelessly(QuicErrorCode error);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 // Returns a fate which describes what subsequent processing should be 276 // Returns a fate which describes what subsequent processing should be
271 // performed on the packets, like ValidityChecks. 277 // performed on the packets, like ValidityChecks.
272 QuicPacketFate MaybeRejectStatelessly(QuicConnectionId connection_id, 278 QuicPacketFate MaybeRejectStatelessly(QuicConnectionId connection_id,
273 const QuicPacketHeader& header); 279 const QuicPacketHeader& header);
274 280
275 // Deliver |packets| to |session| for further processing. 281 // Deliver |packets| to |session| for further processing.
276 void DeliverPacketsToSession( 282 void DeliverPacketsToSession(
277 const std::list<QuicBufferedPacketStore::BufferedPacket>& packets, 283 const std::list<QuicBufferedPacketStore::BufferedPacket>& packets,
278 QuicServerSessionBase* session); 284 QuicServerSessionBase* session);
279 285
286 void set_new_sessions_allowed_per_event_loop(
287 int16_t new_sessions_allowed_per_event_loop) {
288 new_sessions_allowed_per_event_loop_ = new_sessions_allowed_per_event_loop;
289 }
290
280 const QuicConfig& config_; 291 const QuicConfig& config_;
281 292
282 const QuicCryptoServerConfig* crypto_config_; 293 const QuicCryptoServerConfig* crypto_config_;
283 294
284 // The cache for most recently compressed certs. 295 // The cache for most recently compressed certs.
285 QuicCompressedCertsCache compressed_certs_cache_; 296 QuicCompressedCertsCache compressed_certs_cache_;
286 297
287 // The list of connections waiting to write. 298 // The list of connections waiting to write.
288 WriteBlockedList write_blocked_list_; 299 WriteBlockedList write_blocked_list_;
289 300
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 333
323 // Used to get the supported versions based on flag. Does not own. 334 // Used to get the supported versions based on flag. Does not own.
324 QuicVersionManager* version_manager_; 335 QuicVersionManager* version_manager_;
325 336
326 QuicFramer framer_; 337 QuicFramer framer_;
327 338
328 // The last error set by SetLastError(), which is called by 339 // The last error set by SetLastError(), which is called by
329 // framer_visitor_->OnError(). 340 // framer_visitor_->OnError().
330 QuicErrorCode last_error_; 341 QuicErrorCode last_error_;
331 342
343 // A backward counter of how many new sessions can be create within current
344 // event loop. When reaches 0, it means can't create sessions for now.
345 int16_t new_sessions_allowed_per_event_loop_;
346
332 DISALLOW_COPY_AND_ASSIGN(QuicDispatcher); 347 DISALLOW_COPY_AND_ASSIGN(QuicDispatcher);
333 }; 348 };
334 349
335 } // namespace net 350 } // namespace net
336 351
337 #endif // NET_TOOLS_QUIC_QUIC_DISPATCHER_H_ 352 #endif // NET_TOOLS_QUIC_QUIC_DISPATCHER_H_
OLDNEW
« no previous file with comments | « net/tools/quic/end_to_end_test.cc ('k') | net/tools/quic/quic_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698