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

Side by Side Diff: net/spdy/spdy_session.h

Issue 2600973002: Implement HTTP/2 settings field trial parameters. (Closed)
Patch Set: Re: #7. Created 3 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
« no previous file with comments | « net/spdy/spdy_network_transaction_unittest.cc ('k') | net/spdy/spdy_session.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 #ifndef NET_SPDY_SPDY_SESSION_H_ 5 #ifndef NET_SPDY_SPDY_SESSION_H_
6 #define NET_SPDY_SPDY_SESSION_H_ 6 #define NET_SPDY_SPDY_SESSION_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 const int kMaxSpdyFrameChunkSize = (2 * kMss) - 8; 68 const int kMaxSpdyFrameChunkSize = (2 * kMss) - 8;
69 69
70 // Default value of SETTINGS_INITIAL_WINDOW_SIZE per protocol specification. 70 // Default value of SETTINGS_INITIAL_WINDOW_SIZE per protocol specification.
71 // A session is always created with this initial window size. 71 // A session is always created with this initial window size.
72 const int32_t kDefaultInitialWindowSize = 65535; 72 const int32_t kDefaultInitialWindowSize = 65535;
73 73
74 // Maximum number of concurrent streams we will create, unless the server 74 // Maximum number of concurrent streams we will create, unless the server
75 // sends a SETTINGS frame with a different value. 75 // sends a SETTINGS frame with a different value.
76 const size_t kInitialMaxConcurrentStreams = 100; 76 const size_t kInitialMaxConcurrentStreams = 100;
77 77
78 // Specifies the maximum HPACK dynamic table size the server is allowed to set.
79 const int kMaxHeaderTableSize = 64 * 1024;
80
81 // Specifies the maximum concurrent streams server could send (via push).
82 const int kMaxConcurrentPushedStreams = 1000;
83
84 // If more than this many bytes have been read or more than that many 78 // If more than this many bytes have been read or more than that many
85 // milliseconds have passed, return ERR_IO_PENDING from ReadLoop. 79 // milliseconds have passed, return ERR_IO_PENDING from ReadLoop.
86 const int kYieldAfterBytesRead = 32 * 1024; 80 const int kYieldAfterBytesRead = 32 * 1024;
87 const int kYieldAfterDurationMilliseconds = 20; 81 const int kYieldAfterDurationMilliseconds = 20;
88 82
89 // First and last valid stream IDs. As we always act as the client, 83 // First and last valid stream IDs. As we always act as the client,
90 // start at 1 for the first stream id. 84 // start at 1 for the first stream id.
91 const SpdyStreamId kFirstStreamId = 1; 85 const SpdyStreamId kFirstStreamId = 1;
92 const SpdyStreamId kLastStreamId = 0x7fffffff; 86 const SpdyStreamId kLastStreamId = 0x7fffffff;
93 87
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 // |spdy_session_key| is the host/port that this session connects to, privacy 294 // |spdy_session_key| is the host/port that this session connects to, privacy
301 // and proxy configuration settings that it's using. 295 // and proxy configuration settings that it's using.
302 // |session| is the HttpNetworkSession. |net_log| is the NetLog that we log 296 // |session| is the HttpNetworkSession. |net_log| is the NetLog that we log
303 // network events to. 297 // network events to.
304 SpdySession(const SpdySessionKey& spdy_session_key, 298 SpdySession(const SpdySessionKey& spdy_session_key,
305 HttpServerProperties* http_server_properties, 299 HttpServerProperties* http_server_properties,
306 TransportSecurityState* transport_security_state, 300 TransportSecurityState* transport_security_state,
307 bool enable_sending_initial_data, 301 bool enable_sending_initial_data,
308 bool enable_ping_based_connection_checking, 302 bool enable_ping_based_connection_checking,
309 size_t session_max_recv_window_size, 303 size_t session_max_recv_window_size,
310 size_t stream_max_recv_window_size, 304 const SettingsMap& initial_settings,
311 TimeFunc time_func, 305 TimeFunc time_func,
312 ServerPushDelegate* push_delegate, 306 ServerPushDelegate* push_delegate,
313 ProxyDelegate* proxy_delegate, 307 ProxyDelegate* proxy_delegate,
314 NetLog* net_log); 308 NetLog* net_log);
315 309
316 ~SpdySession() override; 310 ~SpdySession() override;
317 311
318 const HostPortPair& host_port_pair() const { 312 const HostPortPair& host_port_pair() const {
319 return spdy_session_key_.host_port_proxy_pair().first; 313 return spdy_session_key_.host_port_proxy_pair().first;
320 } 314 }
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 AvailabilityState availability_state_; 1081 AvailabilityState availability_state_;
1088 ReadState read_state_; 1082 ReadState read_state_;
1089 WriteState write_state_; 1083 WriteState write_state_;
1090 1084
1091 // If the session is closing (i.e., |availability_state_| is STATE_DRAINING), 1085 // If the session is closing (i.e., |availability_state_| is STATE_DRAINING),
1092 // then |error_on_close_| holds the error with which it was closed, which 1086 // then |error_on_close_| holds the error with which it was closed, which
1093 // may be OK (upon a polite GOAWAY) or an error < ERR_IO_PENDING otherwise. 1087 // may be OK (upon a polite GOAWAY) or an error < ERR_IO_PENDING otherwise.
1094 // Initialized to OK. 1088 // Initialized to OK.
1095 Error error_on_close_; 1089 Error error_on_close_;
1096 1090
1091 // Settings that are sent in the initial SETTINGS frame
1092 // (if |enable_sending_initial_data_| is true),
1093 // and also control SpdySession parameters like initial receive window size
1094 // and maximum HPACK dynamic table size.
1095 const SettingsMap initial_settings_;
1096
1097 // Limits 1097 // Limits
1098 size_t max_concurrent_streams_; 1098 size_t max_concurrent_streams_;
1099 size_t max_concurrent_pushed_streams_; 1099 size_t max_concurrent_pushed_streams_;
1100 1100
1101 // Some statistics counters for the session. 1101 // Some statistics counters for the session.
1102 int streams_initiated_count_; 1102 int streams_initiated_count_;
1103 int streams_pushed_count_; 1103 int streams_pushed_count_;
1104 int streams_pushed_and_claimed_count_; 1104 int streams_pushed_and_claimed_count_;
1105 int streams_abandoned_count_; 1105 int streams_abandoned_count_;
1106 1106
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 // When bytes are consumed, SpdyIOBuffer destructor calls back to SpdySession, 1144 // When bytes are consumed, SpdyIOBuffer destructor calls back to SpdySession,
1145 // and this member keeps count of them until the corresponding WINDOW_UPDATEs 1145 // and this member keeps count of them until the corresponding WINDOW_UPDATEs
1146 // are sent. Zero unless session flow control is turned on. 1146 // are sent. Zero unless session flow control is turned on.
1147 int32_t session_unacked_recv_window_bytes_; 1147 int32_t session_unacked_recv_window_bytes_;
1148 1148
1149 // Initial send window size for this session's streams. Can be 1149 // Initial send window size for this session's streams. Can be
1150 // changed by an arriving SETTINGS frame. Newly created streams use 1150 // changed by an arriving SETTINGS frame. Newly created streams use
1151 // this value for the initial send window size. 1151 // this value for the initial send window size.
1152 int32_t stream_initial_send_window_size_; 1152 int32_t stream_initial_send_window_size_;
1153 1153
1154 // The maximum HPACK dynamic table size the server is allowed to set.
1155 uint32_t max_header_table_size_;
1156
1154 // Initial receive window size for this session's streams. There are 1157 // Initial receive window size for this session's streams. There are
1155 // plans to add a command line switch that would cause a SETTINGS 1158 // plans to add a command line switch that would cause a SETTINGS
1156 // frame with window size announcement to be sent on startup. Newly 1159 // frame with window size announcement to be sent on startup. Newly
1157 // created streams will use this value for the initial receive 1160 // created streams will use this value for the initial receive
1158 // window size. 1161 // window size.
1159 int32_t stream_max_recv_window_size_; 1162 int32_t stream_max_recv_window_size_;
1160 1163
1161 // A queue of stream IDs that have been send-stalled at some point 1164 // A queue of stream IDs that have been send-stalled at some point
1162 // in the past. 1165 // in the past.
1163 std::deque<SpdyStreamId> stream_send_unstall_queue_[NUM_PRIORITIES]; 1166 std::deque<SpdyStreamId> stream_send_unstall_queue_[NUM_PRIORITIES];
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 // Used for posting asynchronous IO tasks. We use this even though 1205 // Used for posting asynchronous IO tasks. We use this even though
1203 // SpdySession is refcounted because we don't need to keep the SpdySession 1206 // SpdySession is refcounted because we don't need to keep the SpdySession
1204 // alive if the last reference is within a RunnableMethod. Just revoke the 1207 // alive if the last reference is within a RunnableMethod. Just revoke the
1205 // method. 1208 // method.
1206 base::WeakPtrFactory<SpdySession> weak_factory_; 1209 base::WeakPtrFactory<SpdySession> weak_factory_;
1207 }; 1210 };
1208 1211
1209 } // namespace net 1212 } // namespace net
1210 1213
1211 #endif // NET_SPDY_SPDY_SESSION_H_ 1214 #endif // NET_SPDY_SPDY_SESSION_H_
OLDNEW
« no previous file with comments | « net/spdy/spdy_network_transaction_unittest.cc ('k') | net/spdy/spdy_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698