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

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

Issue 304353012: Introduce STATE_RESERVED_REMOTE. No behavioral changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix review remarks Created 6 years, 6 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
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_STREAM_H_ 5 #ifndef NET_SPDY_SPDY_STREAM_H_
6 #define NET_SPDY_SPDY_STREAM_H_ 6 #define NET_SPDY_SPDY_STREAM_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // writes. 279 // writes.
280 bool WasEverUsed() const; 280 bool WasEverUsed() const;
281 281
282 const BoundNetLog& net_log() const { return net_log_; } 282 const BoundNetLog& net_log() const { return net_log_; }
283 283
284 base::Time GetRequestTime() const; 284 base::Time GetRequestTime() const;
285 void SetRequestTime(base::Time t); 285 void SetRequestTime(base::Time t);
286 286
287 // Called at most once by the SpdySession when the initial response 287 // Called at most once by the SpdySession when the initial response
288 // headers have been received for this stream, i.e., a SYN_REPLY (or 288 // headers have been received for this stream, i.e., a SYN_REPLY (or
289 // SYN_STREAM for push streams) frame has been received. This is the 289 // SYN_STREAM for push streams) frame has been received. Returns a status
290 // entry point for a push stream. Returns a status code; if it is 290 // code; if it is an error, the stream was closed by this function.
291 // an error, the stream was closed by this function.
292 int OnInitialResponseHeadersReceived(const SpdyHeaderBlock& response_headers, 291 int OnInitialResponseHeadersReceived(const SpdyHeaderBlock& response_headers,
293 base::Time response_time, 292 base::Time response_time,
294 base::TimeTicks recv_first_byte_time); 293 base::TimeTicks recv_first_byte_time);
295 294
296 // Called by the SpdySession (only after 295 // Called by the SpdySession (only after
297 // OnInitialResponseHeadersReceived() has been called) when 296 // OnInitialResponseHeadersReceived() has been called) when
298 // late-bound headers are received for a stream. Returns a status 297 // late-bound headers are received for a stream. Returns a status
299 // code; if it is an error, the stream was closed by this function. 298 // code; if it is an error, the stream was closed by this function.
300 int OnAdditionalResponseHeadersReceived( 299 int OnAdditionalResponseHeadersReceived(
301 const SpdyHeaderBlock& additional_response_headers); 300 const SpdyHeaderBlock& additional_response_headers);
302 301
302 // Called by the SpdySession when a frame carrying request headers opening a
303 // push stream is received. Stream transits to STATE_RESERVED_REMOTE state.
304 // Returns a status code; if it is an error, the stream was closed by this
305 // function.
306 int OnPushPromiseHeadersReceived(const SpdyHeaderBlock& headers);
307
303 // Called by the SpdySession when response data has been received 308 // Called by the SpdySession when response data has been received
304 // for this stream. This callback may be called multiple times as 309 // for this stream. This callback may be called multiple times as
305 // data arrives from the network, and will never be called prior to 310 // data arrives from the network, and will never be called prior to
306 // OnResponseHeadersReceived. 311 // OnResponseHeadersReceived.
307 // 312 //
308 // |buffer| contains the data received, or NULL if the stream is 313 // |buffer| contains the data received, or NULL if the stream is
309 // being closed. The stream must copy any data from this 314 // being closed. The stream must copy any data from this
310 // buffer before returning from this callback. 315 // buffer before returning from this callback.
311 // 316 //
312 // |length| is the number of bytes received (at most 2^24 - 1) or 0 if 317 // |length| is the number of bytes received (at most 2^24 - 1) or 0 if
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 438
434 private: 439 private:
435 class SynStreamBufferProducer; 440 class SynStreamBufferProducer;
436 class HeaderBufferProducer; 441 class HeaderBufferProducer;
437 442
438 // SpdyStream states and transitions are modeled 443 // SpdyStream states and transitions are modeled
439 // on the HTTP/2 stream state machine. All states and transitions 444 // on the HTTP/2 stream state machine. All states and transitions
440 // are modeled, with the exceptions of RESERVED_LOCAL (the client 445 // are modeled, with the exceptions of RESERVED_LOCAL (the client
441 // cannot initate push streams), and the transition to OPEN due to 446 // cannot initate push streams), and the transition to OPEN due to
442 // a remote SYN_STREAM (the client can only initate streams). 447 // a remote SYN_STREAM (the client can only initate streams).
443 // TODO(jgraettinger): RESERVED_REMOTE must be added to the state
444 // machine when PUSH_PROMISE is implemented.
445 enum State { 448 enum State {
446 STATE_IDLE, 449 STATE_IDLE,
447 STATE_OPEN, 450 STATE_OPEN,
448 STATE_HALF_CLOSED_LOCAL_UNCLAIMED, 451 STATE_HALF_CLOSED_LOCAL_UNCLAIMED,
449 STATE_HALF_CLOSED_LOCAL, 452 STATE_HALF_CLOSED_LOCAL,
450 STATE_HALF_CLOSED_REMOTE, 453 STATE_HALF_CLOSED_REMOTE,
454 STATE_RESERVED_REMOTE,
451 STATE_CLOSED, 455 STATE_CLOSED,
452 }; 456 };
453 457
454 // Update the histograms. Can safely be called repeatedly, but should only 458 // Update the histograms. Can safely be called repeatedly, but should only
455 // be called after the stream has completed. 459 // be called after the stream has completed.
456 void UpdateHistograms(); 460 void UpdateHistograms();
457 461
458 // When a server-push stream is claimed by SetDelegate(), this function is 462 // When a server-push stream is claimed by SetDelegate(), this function is
459 // posted on the current MessageLoop to replay everything the server has sent. 463 // posted on the current MessageLoop to replay everything the server has sent.
460 // From the perspective of SpdyStream's state machine, headers, data, and 464 // From the perspective of SpdyStream's state machine, headers, data, and
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 bool write_handler_guard_; 565 bool write_handler_guard_;
562 566
563 base::WeakPtrFactory<SpdyStream> weak_ptr_factory_; 567 base::WeakPtrFactory<SpdyStream> weak_ptr_factory_;
564 568
565 DISALLOW_COPY_AND_ASSIGN(SpdyStream); 569 DISALLOW_COPY_AND_ASSIGN(SpdyStream);
566 }; 570 };
567 571
568 } // namespace net 572 } // namespace net
569 573
570 #endif // NET_SPDY_SPDY_STREAM_H_ 574 #endif // NET_SPDY_SPDY_STREAM_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698