| OLD | NEW |
| 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 <stdint.h> |
| 9 |
| 8 #include <deque> | 10 #include <deque> |
| 9 #include <map> | 11 #include <map> |
| 10 #include <set> | 12 #include <set> |
| 11 #include <string> | 13 #include <string> |
| 12 | 14 |
| 13 #include "base/basictypes.h" | |
| 14 #include "base/gtest_prod_util.h" | 15 #include "base/gtest_prod_util.h" |
| 16 #include "base/macros.h" |
| 15 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
| 16 #include "base/memory/scoped_ptr.h" | 18 #include "base/memory/scoped_ptr.h" |
| 17 #include "base/memory/weak_ptr.h" | 19 #include "base/memory/weak_ptr.h" |
| 18 #include "base/time/time.h" | 20 #include "base/time/time.h" |
| 19 #include "net/base/io_buffer.h" | 21 #include "net/base/io_buffer.h" |
| 20 #include "net/base/load_states.h" | 22 #include "net/base/load_states.h" |
| 21 #include "net/base/net_errors.h" | 23 #include "net/base/net_errors.h" |
| 22 #include "net/base/net_export.h" | 24 #include "net/base/net_export.h" |
| 23 #include "net/base/request_priority.h" | 25 #include "net/base/request_priority.h" |
| 24 #include "net/socket/client_socket_handle.h" | 26 #include "net/socket/client_socket_handle.h" |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 LoadState GetLoadState() const; | 359 LoadState GetLoadState() const; |
| 358 | 360 |
| 359 // Fills SSL info in |ssl_info| and returns true when SSL is in use. | 361 // Fills SSL info in |ssl_info| and returns true when SSL is in use. |
| 360 bool GetSSLInfo(SSLInfo* ssl_info, | 362 bool GetSSLInfo(SSLInfo* ssl_info, |
| 361 bool* was_npn_negotiated, | 363 bool* was_npn_negotiated, |
| 362 NextProto* protocol_negotiated); | 364 NextProto* protocol_negotiated); |
| 363 | 365 |
| 364 // Send a WINDOW_UPDATE frame for a stream. Called by a stream | 366 // Send a WINDOW_UPDATE frame for a stream. Called by a stream |
| 365 // whenever receive window size is increased. | 367 // whenever receive window size is increased. |
| 366 void SendStreamWindowUpdate(SpdyStreamId stream_id, | 368 void SendStreamWindowUpdate(SpdyStreamId stream_id, |
| 367 uint32 delta_window_size); | 369 uint32_t delta_window_size); |
| 368 | 370 |
| 369 // Accessors for the session's availability state. | 371 // Accessors for the session's availability state. |
| 370 bool IsAvailable() const { return availability_state_ == STATE_AVAILABLE; } | 372 bool IsAvailable() const { return availability_state_ == STATE_AVAILABLE; } |
| 371 bool IsGoingAway() const { return availability_state_ == STATE_GOING_AWAY; } | 373 bool IsGoingAway() const { return availability_state_ == STATE_GOING_AWAY; } |
| 372 bool IsDraining() const { return availability_state_ == STATE_DRAINING; } | 374 bool IsDraining() const { return availability_state_ == STATE_DRAINING; } |
| 373 | 375 |
| 374 // Closes this session. This will close all active streams and mark | 376 // Closes this session. This will close all active streams and mark |
| 375 // the session as permanently closed. Callers must assume that the | 377 // the session as permanently closed. Callers must assume that the |
| 376 // session is destroyed after this is called. (However, it may not | 378 // session is destroyed after this is called. (However, it may not |
| 377 // be destroyed right away, e.g. when a SpdySession function is | 379 // be destroyed right away, e.g. when a SpdySession function is |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 DCHECK_LE(priority, MAXIMUM_PRIORITY); | 450 DCHECK_LE(priority, MAXIMUM_PRIORITY); |
| 449 return pending_create_stream_queues_[priority].size(); | 451 return pending_create_stream_queues_[priority].size(); |
| 450 } | 452 } |
| 451 | 453 |
| 452 // Returns the (version-dependent) flow control state. | 454 // Returns the (version-dependent) flow control state. |
| 453 FlowControlState flow_control_state() const { | 455 FlowControlState flow_control_state() const { |
| 454 return flow_control_state_; | 456 return flow_control_state_; |
| 455 } | 457 } |
| 456 | 458 |
| 457 // Returns the current |stream_initial_send_window_size_|. | 459 // Returns the current |stream_initial_send_window_size_|. |
| 458 int32 stream_initial_send_window_size() const { | 460 int32_t stream_initial_send_window_size() const { |
| 459 return stream_initial_send_window_size_; | 461 return stream_initial_send_window_size_; |
| 460 } | 462 } |
| 461 | 463 |
| 462 // Returns true if no stream in the session can send data due to | 464 // Returns true if no stream in the session can send data due to |
| 463 // session flow control. | 465 // session flow control. |
| 464 bool IsSendStalled() const { | 466 bool IsSendStalled() const { |
| 465 return | 467 return |
| 466 flow_control_state_ == FLOW_CONTROL_STREAM_AND_SESSION && | 468 flow_control_state_ == FLOW_CONTROL_STREAM_AND_SESSION && |
| 467 session_send_window_size_ == 0; | 469 session_send_window_size_ == 0; |
| 468 } | 470 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 497 size_t GetFrameMaximumSize() const { | 499 size_t GetFrameMaximumSize() const { |
| 498 return buffered_spdy_framer_->GetFrameMaximumSize(); | 500 return buffered_spdy_framer_->GetFrameMaximumSize(); |
| 499 } | 501 } |
| 500 | 502 |
| 501 size_t GetDataFrameMaximumPayload() const { | 503 size_t GetDataFrameMaximumPayload() const { |
| 502 return buffered_spdy_framer_->GetDataFrameMaximumPayload(); | 504 return buffered_spdy_framer_->GetDataFrameMaximumPayload(); |
| 503 } | 505 } |
| 504 | 506 |
| 505 // Default value of SETTINGS_INITIAL_WINDOW_SIZE per protocol specification. | 507 // Default value of SETTINGS_INITIAL_WINDOW_SIZE per protocol specification. |
| 506 // A session is always created with this initial window size. | 508 // A session is always created with this initial window size. |
| 507 static int32 GetDefaultInitialWindowSize(NextProto protocol) { | 509 static int32_t GetDefaultInitialWindowSize(NextProto protocol) { |
| 508 return protocol < kProtoHTTP2 ? 65536 : 65535; | 510 return protocol < kProtoHTTP2 ? 65536 : 65535; |
| 509 } | 511 } |
| 510 | 512 |
| 511 // https://http2.github.io/http2-spec/#TLSUsage mandates minimum security | 513 // https://http2.github.io/http2-spec/#TLSUsage mandates minimum security |
| 512 // standards for TLS. | 514 // standards for TLS. |
| 513 bool HasAcceptableTransportSecurity() const; | 515 bool HasAcceptableTransportSecurity() const; |
| 514 | 516 |
| 515 // Must be used only by |pool_|. | 517 // Must be used only by |pool_|. |
| 516 base::WeakPtr<SpdySession> GetWeakPtr(); | 518 base::WeakPtr<SpdySession> GetWeakPtr(); |
| 517 | 519 |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 711 // Send initial data. Called when a connection is successfully | 713 // Send initial data. Called when a connection is successfully |
| 712 // established in InitializeWithSocket() and | 714 // established in InitializeWithSocket() and |
| 713 // |enable_sending_initial_data_| is true. | 715 // |enable_sending_initial_data_| is true. |
| 714 void SendInitialData(); | 716 void SendInitialData(); |
| 715 | 717 |
| 716 // Helper method to send a SETTINGS frame. | 718 // Helper method to send a SETTINGS frame. |
| 717 void SendSettings(const SettingsMap& settings); | 719 void SendSettings(const SettingsMap& settings); |
| 718 | 720 |
| 719 // Handle SETTING. Either when we send settings, or when we receive a | 721 // Handle SETTING. Either when we send settings, or when we receive a |
| 720 // SETTINGS control frame, update our SpdySession accordingly. | 722 // SETTINGS control frame, update our SpdySession accordingly. |
| 721 void HandleSetting(uint32 id, uint32 value); | 723 void HandleSetting(uint32_t id, uint32_t value); |
| 722 | 724 |
| 723 // Adjust the send window size of all ActiveStreams and PendingStreamRequests. | 725 // Adjust the send window size of all ActiveStreams and PendingStreamRequests. |
| 724 void UpdateStreamsSendWindowSize(int32 delta_window_size); | 726 void UpdateStreamsSendWindowSize(int32_t delta_window_size); |
| 725 | 727 |
| 726 // Send the PING (preface-PING) frame. | 728 // Send the PING (preface-PING) frame. |
| 727 void SendPrefacePingIfNoneInFlight(); | 729 void SendPrefacePingIfNoneInFlight(); |
| 728 | 730 |
| 729 // Send PING if there are no PINGs in flight and we haven't heard from server. | 731 // Send PING if there are no PINGs in flight and we haven't heard from server. |
| 730 void SendPrefacePing(); | 732 void SendPrefacePing(); |
| 731 | 733 |
| 732 // Send a single WINDOW_UPDATE frame. | 734 // Send a single WINDOW_UPDATE frame. |
| 733 void SendWindowUpdateFrame(SpdyStreamId stream_id, uint32 delta_window_size, | 735 void SendWindowUpdateFrame(SpdyStreamId stream_id, |
| 736 uint32_t delta_window_size, |
| 734 RequestPriority priority); | 737 RequestPriority priority); |
| 735 | 738 |
| 736 // Send the PING frame. | 739 // Send the PING frame. |
| 737 void WritePingFrame(SpdyPingId unique_id, bool is_ack); | 740 void WritePingFrame(SpdyPingId unique_id, bool is_ack); |
| 738 | 741 |
| 739 // Post a CheckPingStatus call after delay. Don't post if there is already | 742 // Post a CheckPingStatus call after delay. Don't post if there is already |
| 740 // CheckPingStatus running. | 743 // CheckPingStatus running. |
| 741 void PlanToCheckPingStatus(); | 744 void PlanToCheckPingStatus(); |
| 742 | 745 |
| 743 // Check the status of the connection. It calls |CloseSessionOnError| if we | 746 // Check the status of the connection. It calls |CloseSessionOnError| if we |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 bool fin) override; | 840 bool fin) override; |
| 838 void OnStreamFrameData(SpdyStreamId stream_id, | 841 void OnStreamFrameData(SpdyStreamId stream_id, |
| 839 const char* data, | 842 const char* data, |
| 840 size_t len, | 843 size_t len, |
| 841 bool fin) override; | 844 bool fin) override; |
| 842 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override; | 845 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override; |
| 843 SpdyHeadersHandlerInterface* OnHeaderFrameStart( | 846 SpdyHeadersHandlerInterface* OnHeaderFrameStart( |
| 844 SpdyStreamId stream_id) override; | 847 SpdyStreamId stream_id) override; |
| 845 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override; | 848 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override; |
| 846 void OnSettings(bool clear_persisted) override; | 849 void OnSettings(bool clear_persisted) override; |
| 847 void OnSetting(SpdySettingsIds id, uint8 flags, uint32 value) override; | 850 void OnSetting(SpdySettingsIds id, uint8_t flags, uint32_t value) override; |
| 848 void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) override; | 851 void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) override; |
| 849 void OnPushPromise(SpdyStreamId stream_id, | 852 void OnPushPromise(SpdyStreamId stream_id, |
| 850 SpdyStreamId promised_stream_id, | 853 SpdyStreamId promised_stream_id, |
| 851 const SpdyHeaderBlock& headers) override; | 854 const SpdyHeaderBlock& headers) override; |
| 852 void OnSynStream(SpdyStreamId stream_id, | 855 void OnSynStream(SpdyStreamId stream_id, |
| 853 SpdyStreamId associated_stream_id, | 856 SpdyStreamId associated_stream_id, |
| 854 SpdyPriority priority, | 857 SpdyPriority priority, |
| 855 bool fin, | 858 bool fin, |
| 856 bool unidirectional, | 859 bool unidirectional, |
| 857 const SpdyHeaderBlock& headers) override; | 860 const SpdyHeaderBlock& headers) override; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 // If session flow control is turned off, this must not be called. | 898 // If session flow control is turned off, this must not be called. |
| 896 void IncreaseSendWindowSize(int delta_window_size); | 899 void IncreaseSendWindowSize(int delta_window_size); |
| 897 | 900 |
| 898 // If session flow control is turned on, called by CreateDataFrame() | 901 // If session flow control is turned on, called by CreateDataFrame() |
| 899 // (which is in turn called by a stream) to decrease this session's | 902 // (which is in turn called by a stream) to decrease this session's |
| 900 // send window size by |delta_window_size|, which must be at least 1 | 903 // send window size by |delta_window_size|, which must be at least 1 |
| 901 // and at most kMaxSpdyFrameChunkSize. |delta_window_size| must not | 904 // and at most kMaxSpdyFrameChunkSize. |delta_window_size| must not |
| 902 // cause this session's send window size to go negative. | 905 // cause this session's send window size to go negative. |
| 903 // | 906 // |
| 904 // If session flow control is turned off, this must not be called. | 907 // If session flow control is turned off, this must not be called. |
| 905 void DecreaseSendWindowSize(int32 delta_window_size); | 908 void DecreaseSendWindowSize(int32_t delta_window_size); |
| 906 | 909 |
| 907 // Called when bytes are consumed by the delegate from a SpdyBuffer | 910 // Called when bytes are consumed by the delegate from a SpdyBuffer |
| 908 // containing received data. Increases the receive window size | 911 // containing received data. Increases the receive window size |
| 909 // accordingly. | 912 // accordingly. |
| 910 // | 913 // |
| 911 // If session flow control is turned off, this must not be called. | 914 // If session flow control is turned off, this must not be called. |
| 912 void OnReadBufferConsumed(size_t consume_size, | 915 void OnReadBufferConsumed(size_t consume_size, |
| 913 SpdyBuffer::ConsumeSource consume_source); | 916 SpdyBuffer::ConsumeSource consume_source); |
| 914 | 917 |
| 915 // Called by OnReadBufferConsume to increase this session's receive | 918 // Called by OnReadBufferConsume to increase this session's receive |
| 916 // window size by |delta_window_size|, which must be at least 1 and | 919 // window size by |delta_window_size|, which must be at least 1 and |
| 917 // must not cause this session's receive window size to overflow, | 920 // must not cause this session's receive window size to overflow, |
| 918 // possibly also sending a WINDOW_UPDATE frame. Also called during | 921 // possibly also sending a WINDOW_UPDATE frame. Also called during |
| 919 // initialization to set the initial receive window size. | 922 // initialization to set the initial receive window size. |
| 920 // | 923 // |
| 921 // If session flow control is turned off, this must not be called. | 924 // If session flow control is turned off, this must not be called. |
| 922 void IncreaseRecvWindowSize(int32 delta_window_size); | 925 void IncreaseRecvWindowSize(int32_t delta_window_size); |
| 923 | 926 |
| 924 // Called by OnStreamFrameData (which is in turn called by the | 927 // Called by OnStreamFrameData (which is in turn called by the |
| 925 // framer) to decrease this session's receive window size by | 928 // framer) to decrease this session's receive window size by |
| 926 // |delta_window_size|, which must be at least 1 and must not cause | 929 // |delta_window_size|, which must be at least 1 and must not cause |
| 927 // this session's receive window size to go negative. | 930 // this session's receive window size to go negative. |
| 928 // | 931 // |
| 929 // If session flow control is turned off, this must not be called. | 932 // If session flow control is turned off, this must not be called. |
| 930 void DecreaseRecvWindowSize(int32 delta_window_size); | 933 void DecreaseRecvWindowSize(int32_t delta_window_size); |
| 931 | 934 |
| 932 // Queue a send-stalled stream for possibly resuming once we're not | 935 // Queue a send-stalled stream for possibly resuming once we're not |
| 933 // send-stalled anymore. | 936 // send-stalled anymore. |
| 934 void QueueSendStalledStream(const SpdyStream& stream); | 937 void QueueSendStalledStream(const SpdyStream& stream); |
| 935 | 938 |
| 936 // Go through the queue of send-stalled streams and try to resume as | 939 // Go through the queue of send-stalled streams and try to resume as |
| 937 // many as possible. | 940 // many as possible. |
| 938 void ResumeSendStalledStreams(); | 941 void ResumeSendStalledStreams(); |
| 939 | 942 |
| 940 // Returns the next stream to possibly resume, or 0 if the queue is | 943 // Returns the next stream to possibly resume, or 0 if the queue is |
| 941 // empty. | 944 // empty. |
| 942 SpdyStreamId PopStreamToPossiblyResume(); | 945 SpdyStreamId PopStreamToPossiblyResume(); |
| 943 | 946 |
| 944 // -------------------------- | 947 // -------------------------- |
| 945 // Helper methods for testing | 948 // Helper methods for testing |
| 946 // -------------------------- | 949 // -------------------------- |
| 947 | 950 |
| 948 void set_connection_at_risk_of_loss_time(base::TimeDelta duration) { | 951 void set_connection_at_risk_of_loss_time(base::TimeDelta duration) { |
| 949 connection_at_risk_of_loss_time_ = duration; | 952 connection_at_risk_of_loss_time_ = duration; |
| 950 } | 953 } |
| 951 | 954 |
| 952 void set_hung_interval(base::TimeDelta duration) { | 955 void set_hung_interval(base::TimeDelta duration) { |
| 953 hung_interval_ = duration; | 956 hung_interval_ = duration; |
| 954 } | 957 } |
| 955 | 958 |
| 956 void set_max_concurrent_pushed_streams(size_t value) { | 959 void set_max_concurrent_pushed_streams(size_t value) { |
| 957 max_concurrent_pushed_streams_ = value; | 960 max_concurrent_pushed_streams_ = value; |
| 958 } | 961 } |
| 959 | 962 |
| 960 int64 pings_in_flight() const { return pings_in_flight_; } | 963 int64_t pings_in_flight() const { return pings_in_flight_; } |
| 961 | 964 |
| 962 SpdyPingId next_ping_id() const { return next_ping_id_; } | 965 SpdyPingId next_ping_id() const { return next_ping_id_; } |
| 963 | 966 |
| 964 base::TimeTicks last_activity_time() const { return last_activity_time_; } | 967 base::TimeTicks last_activity_time() const { return last_activity_time_; } |
| 965 | 968 |
| 966 bool check_ping_status_pending() const { return check_ping_status_pending_; } | 969 bool check_ping_status_pending() const { return check_ping_status_pending_; } |
| 967 | 970 |
| 968 size_t max_concurrent_streams() const { return max_concurrent_streams_; } | 971 size_t max_concurrent_streams() const { return max_concurrent_streams_; } |
| 969 | 972 |
| 970 // Set whether priority->dependency conversion is enabled | 973 // Set whether priority->dependency conversion is enabled |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1093 // |total_bytes_received_| keeps track of all the bytes read by the | 1096 // |total_bytes_received_| keeps track of all the bytes read by the |
| 1094 // SpdySession. It is used by the |Net.SpdySettingsCwnd...| histograms. | 1097 // SpdySession. It is used by the |Net.SpdySettingsCwnd...| histograms. |
| 1095 int total_bytes_received_; | 1098 int total_bytes_received_; |
| 1096 | 1099 |
| 1097 bool sent_settings_; // Did this session send settings when it started. | 1100 bool sent_settings_; // Did this session send settings when it started. |
| 1098 bool received_settings_; // Did this session receive at least one settings | 1101 bool received_settings_; // Did this session receive at least one settings |
| 1099 // frame. | 1102 // frame. |
| 1100 int stalled_streams_; // Count of streams that were ever stalled. | 1103 int stalled_streams_; // Count of streams that were ever stalled. |
| 1101 | 1104 |
| 1102 // Count of all pings on the wire, for which we have not gotten a response. | 1105 // Count of all pings on the wire, for which we have not gotten a response. |
| 1103 int64 pings_in_flight_; | 1106 int64_t pings_in_flight_; |
| 1104 | 1107 |
| 1105 // This is the next ping_id (unique_id) to be sent in PING frame. | 1108 // This is the next ping_id (unique_id) to be sent in PING frame. |
| 1106 SpdyPingId next_ping_id_; | 1109 SpdyPingId next_ping_id_; |
| 1107 | 1110 |
| 1108 // This is the last time we have sent a PING. | 1111 // This is the last time we have sent a PING. |
| 1109 base::TimeTicks last_ping_sent_time_; | 1112 base::TimeTicks last_ping_sent_time_; |
| 1110 | 1113 |
| 1111 // This is the last time we had activity in the session. | 1114 // This is the last time we had activity in the session. |
| 1112 base::TimeTicks last_activity_time_; | 1115 base::TimeTicks last_activity_time_; |
| 1113 | 1116 |
| 1114 // This is the length of the last compressed frame. | 1117 // This is the length of the last compressed frame. |
| 1115 size_t last_compressed_frame_len_; | 1118 size_t last_compressed_frame_len_; |
| 1116 | 1119 |
| 1117 // This is the next time that unclaimed push streams should be checked for | 1120 // This is the next time that unclaimed push streams should be checked for |
| 1118 // expirations. | 1121 // expirations. |
| 1119 base::TimeTicks next_unclaimed_push_stream_sweep_time_; | 1122 base::TimeTicks next_unclaimed_push_stream_sweep_time_; |
| 1120 | 1123 |
| 1121 // Indicate if we have already scheduled a delayed task to check the ping | 1124 // Indicate if we have already scheduled a delayed task to check the ping |
| 1122 // status. | 1125 // status. |
| 1123 bool check_ping_status_pending_; | 1126 bool check_ping_status_pending_; |
| 1124 | 1127 |
| 1125 // Whether to send the (HTTP/2) connection header prefix. | 1128 // Whether to send the (HTTP/2) connection header prefix. |
| 1126 bool send_connection_header_prefix_; | 1129 bool send_connection_header_prefix_; |
| 1127 | 1130 |
| 1128 // The (version-dependent) flow control state. | 1131 // The (version-dependent) flow control state. |
| 1129 FlowControlState flow_control_state_; | 1132 FlowControlState flow_control_state_; |
| 1130 | 1133 |
| 1131 // Current send window size. Zero unless session flow control is turned on. | 1134 // Current send window size. Zero unless session flow control is turned on. |
| 1132 int32 session_send_window_size_; | 1135 int32_t session_send_window_size_; |
| 1133 | 1136 |
| 1134 // Maximum receive window size. Each time a WINDOW_UPDATE is sent, it | 1137 // Maximum receive window size. Each time a WINDOW_UPDATE is sent, it |
| 1135 // restores the receive window size to this value. Zero unless session flow | 1138 // restores the receive window size to this value. Zero unless session flow |
| 1136 // control is turned on. | 1139 // control is turned on. |
| 1137 int32 session_max_recv_window_size_; | 1140 int32_t session_max_recv_window_size_; |
| 1138 | 1141 |
| 1139 // Sum of |session_unacked_recv_window_bytes_| and current receive window | 1142 // Sum of |session_unacked_recv_window_bytes_| and current receive window |
| 1140 // size. Zero unless session flow control is turned on. | 1143 // size. Zero unless session flow control is turned on. |
| 1141 // TODO(bnc): Rename or change semantics so that |window_size_| is actual | 1144 // TODO(bnc): Rename or change semantics so that |window_size_| is actual |
| 1142 // window size. | 1145 // window size. |
| 1143 int32 session_recv_window_size_; | 1146 int32_t session_recv_window_size_; |
| 1144 | 1147 |
| 1145 // When bytes are consumed, SpdyIOBuffer destructor calls back to SpdySession, | 1148 // When bytes are consumed, SpdyIOBuffer destructor calls back to SpdySession, |
| 1146 // and this member keeps count of them until the corresponding WINDOW_UPDATEs | 1149 // and this member keeps count of them until the corresponding WINDOW_UPDATEs |
| 1147 // are sent. Zero unless session flow control is turned on. | 1150 // are sent. Zero unless session flow control is turned on. |
| 1148 int32 session_unacked_recv_window_bytes_; | 1151 int32_t session_unacked_recv_window_bytes_; |
| 1149 | 1152 |
| 1150 // Initial send window size for this session's streams. Can be | 1153 // Initial send window size for this session's streams. Can be |
| 1151 // changed by an arriving SETTINGS frame. Newly created streams use | 1154 // changed by an arriving SETTINGS frame. Newly created streams use |
| 1152 // this value for the initial send window size. | 1155 // this value for the initial send window size. |
| 1153 int32 stream_initial_send_window_size_; | 1156 int32_t stream_initial_send_window_size_; |
| 1154 | 1157 |
| 1155 // Initial receive window size for this session's streams. There are | 1158 // Initial receive window size for this session's streams. There are |
| 1156 // plans to add a command line switch that would cause a SETTINGS | 1159 // plans to add a command line switch that would cause a SETTINGS |
| 1157 // frame with window size announcement to be sent on startup. Newly | 1160 // frame with window size announcement to be sent on startup. Newly |
| 1158 // created streams will use this value for the initial receive | 1161 // created streams will use this value for the initial receive |
| 1159 // window size. | 1162 // window size. |
| 1160 int32 stream_max_recv_window_size_; | 1163 int32_t stream_max_recv_window_size_; |
| 1161 | 1164 |
| 1162 // A queue of stream IDs that have been send-stalled at some point | 1165 // A queue of stream IDs that have been send-stalled at some point |
| 1163 // in the past. | 1166 // in the past. |
| 1164 std::deque<SpdyStreamId> stream_send_unstall_queue_[NUM_PRIORITIES]; | 1167 std::deque<SpdyStreamId> stream_send_unstall_queue_[NUM_PRIORITIES]; |
| 1165 | 1168 |
| 1166 BoundNetLog net_log_; | 1169 BoundNetLog net_log_; |
| 1167 | 1170 |
| 1168 // Outside of tests, these should always be true. | 1171 // Outside of tests, these should always be true. |
| 1169 bool verify_domain_authentication_; | 1172 bool verify_domain_authentication_; |
| 1170 bool enable_sending_initial_data_; | 1173 bool enable_sending_initial_data_; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 // Used for posting asynchronous IO tasks. We use this even though | 1213 // Used for posting asynchronous IO tasks. We use this even though |
| 1211 // SpdySession is refcounted because we don't need to keep the SpdySession | 1214 // SpdySession is refcounted because we don't need to keep the SpdySession |
| 1212 // alive if the last reference is within a RunnableMethod. Just revoke the | 1215 // alive if the last reference is within a RunnableMethod. Just revoke the |
| 1213 // method. | 1216 // method. |
| 1214 base::WeakPtrFactory<SpdySession> weak_factory_; | 1217 base::WeakPtrFactory<SpdySession> weak_factory_; |
| 1215 }; | 1218 }; |
| 1216 | 1219 |
| 1217 } // namespace net | 1220 } // namespace net |
| 1218 | 1221 |
| 1219 #endif // NET_SPDY_SPDY_SESSION_H_ | 1222 #endif // NET_SPDY_SPDY_SESSION_H_ |
| OLD | NEW |