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 #include "net/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
819 max_concurrent_streams_ - | 819 max_concurrent_streams_ - |
820 (active_streams_.size() + created_streams_.size()); | 820 (active_streams_.size() + created_streams_.size()); |
821 } | 821 } |
822 for (size_t i = 0; | 822 for (size_t i = 0; |
823 max_requests_to_process == 0 || i < max_requests_to_process; ++i) { | 823 max_requests_to_process == 0 || i < max_requests_to_process; ++i) { |
824 base::WeakPtr<SpdyStreamRequest> pending_request = | 824 base::WeakPtr<SpdyStreamRequest> pending_request = |
825 GetNextPendingStreamRequest(); | 825 GetNextPendingStreamRequest(); |
826 if (!pending_request) | 826 if (!pending_request) |
827 break; | 827 break; |
828 | 828 |
829 // Note that this post can race with other stream creations, and it's | |
830 // possible that the un-stalled stream will be stalled again if it loses. | |
831 // TODO(jgraettinger): Provide stronger ordering guarantees. | |
829 base::MessageLoop::current()->PostTask( | 832 base::MessageLoop::current()->PostTask( |
830 FROM_HERE, | 833 FROM_HERE, |
831 base::Bind(&SpdySession::CompleteStreamRequest, | 834 base::Bind(&SpdySession::CompleteStreamRequest, |
832 weak_factory_.GetWeakPtr(), | 835 weak_factory_.GetWeakPtr(), |
833 pending_request)); | 836 pending_request)); |
834 } | 837 } |
835 } | 838 } |
836 | 839 |
837 void SpdySession::AddPooledAlias(const SpdySessionKey& alias_key) { | 840 void SpdySession::AddPooledAlias(const SpdySessionKey& alias_key) { |
838 pooled_aliases_.insert(alias_key); | 841 pooled_aliases_.insert(alias_key); |
(...skipping 2014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2853 } | 2856 } |
2854 } | 2857 } |
2855 | 2858 |
2856 void SpdySession::CompleteStreamRequest( | 2859 void SpdySession::CompleteStreamRequest( |
2857 const base::WeakPtr<SpdyStreamRequest>& pending_request) { | 2860 const base::WeakPtr<SpdyStreamRequest>& pending_request) { |
2858 // Abort if the request has already been cancelled. | 2861 // Abort if the request has already been cancelled. |
2859 if (!pending_request) | 2862 if (!pending_request) |
2860 return; | 2863 return; |
2861 | 2864 |
2862 base::WeakPtr<SpdyStream> stream; | 2865 base::WeakPtr<SpdyStream> stream; |
2863 int rv = CreateStream(*pending_request, &stream); | 2866 int rv = TryCreateStream(pending_request, &stream); |
2864 | 2867 |
2865 if (rv == OK) { | 2868 if (rv == OK) { |
Ryan Hamilton
2014/05/19 23:00:07
How 'bout early return here:
if (rv == OK) {
DC
Johnny
2014/05/19 23:37:32
Done.
| |
2866 DCHECK(stream); | 2869 DCHECK(stream); |
2867 pending_request->OnRequestCompleteSuccess(stream); | 2870 pending_request->OnRequestCompleteSuccess(stream); |
2871 } else if (rv == ERR_IO_PENDING) { | |
2872 DCHECK(!stream); | |
2868 } else { | 2873 } else { |
2869 DCHECK(!stream); | 2874 DCHECK(!stream); |
2870 pending_request->OnRequestCompleteFailure(rv); | 2875 pending_request->OnRequestCompleteFailure(rv); |
2871 } | 2876 } |
2872 } | 2877 } |
2873 | 2878 |
2874 SSLClientSocket* SpdySession::GetSSLClientSocket() const { | 2879 SSLClientSocket* SpdySession::GetSSLClientSocket() const { |
2875 if (!is_secure_) | 2880 if (!is_secure_) |
2876 return NULL; | 2881 return NULL; |
2877 SSLClientSocket* ssl_socket = | 2882 SSLClientSocket* ssl_socket = |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3069 if (!queue->empty()) { | 3074 if (!queue->empty()) { |
3070 SpdyStreamId stream_id = queue->front(); | 3075 SpdyStreamId stream_id = queue->front(); |
3071 queue->pop_front(); | 3076 queue->pop_front(); |
3072 return stream_id; | 3077 return stream_id; |
3073 } | 3078 } |
3074 } | 3079 } |
3075 return 0; | 3080 return 0; |
3076 } | 3081 } |
3077 | 3082 |
3078 } // namespace net | 3083 } // namespace net |
OLD | NEW |