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

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

Issue 2596703002: http2: Update priorities of pushed streams (Closed)
Patch Set: actually rebase Created 3 years, 11 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 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 return spdy_session_key_; 319 return spdy_session_key_;
320 } 320 }
321 // Get a pushed stream for a given |url|. If the server initiates a 321 // Get a pushed stream for a given |url|. If the server initiates a
322 // stream, it might already exist for a given path. The server 322 // stream, it might already exist for a given path. The server
323 // might also not have initiated the stream yet, but indicated it 323 // might also not have initiated the stream yet, but indicated it
324 // will via X-Associated-Content. Returns OK if a stream was found 324 // will via X-Associated-Content. Returns OK if a stream was found
325 // and put into |spdy_stream|, or if one was not found but it is 325 // and put into |spdy_stream|, or if one was not found but it is
326 // okay to create a new stream (in which case |spdy_stream| is 326 // okay to create a new stream (in which case |spdy_stream| is
327 // reset). Returns an error (not ERR_IO_PENDING) otherwise, and 327 // reset). Returns an error (not ERR_IO_PENDING) otherwise, and
328 // resets |spdy_stream|. 328 // resets |spdy_stream|.
329 //
330 // If a stream was found and the stream is still open, the priority
331 // of that stream is updated to match |priority|.
329 int GetPushStream(const GURL& url, 332 int GetPushStream(const GURL& url,
333 RequestPriority priority,
330 base::WeakPtr<SpdyStream>* spdy_stream, 334 base::WeakPtr<SpdyStream>* spdy_stream,
331 const NetLogWithSource& stream_net_log); 335 const NetLogWithSource& stream_net_log);
332 336
333 // Called when the pushed stream should be cancelled. If the pushed stream is 337 // Called when the pushed stream should be cancelled. If the pushed stream is
334 // not claimed and active, sends RST to the server to cancel the stream. 338 // not claimed and active, sends RST to the server to cancel the stream.
335 void CancelPush(const GURL& url); 339 void CancelPush(const GURL& url);
336 340
337 // Initialize the session with the given connection. |is_secure| 341 // Initialize the session with the given connection. |is_secure|
338 // must indicate whether |connection| uses an SSL socket or not; it 342 // must indicate whether |connection| uses an SSL socket or not; it
339 // is usually true, but it can be false for testing or when SPDY is 343 // is usually true, but it can be false for testing or when SPDY is
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 // there is none. 671 // there is none.
668 base::WeakPtr<SpdyStreamRequest> GetNextPendingStreamRequest(); 672 base::WeakPtr<SpdyStreamRequest> GetNextPendingStreamRequest();
669 673
670 // Called when there is room to create more streams (e.g., a stream 674 // Called when there is room to create more streams (e.g., a stream
671 // was closed). Processes as many pending stream requests as 675 // was closed). Processes as many pending stream requests as
672 // possible. 676 // possible.
673 void ProcessPendingStreamRequests(); 677 void ProcessPendingStreamRequests();
674 678
675 void TryCreatePushStream(SpdyStreamId stream_id, 679 void TryCreatePushStream(SpdyStreamId stream_id,
676 SpdyStreamId associated_stream_id, 680 SpdyStreamId associated_stream_id,
677 SpdyPriority priority,
678 SpdyHeaderBlock headers); 681 SpdyHeaderBlock headers);
679 682
680 // Close the stream pointed to by the given iterator. Note that that 683 // Close the stream pointed to by the given iterator. Note that that
681 // stream may hold the last reference to the session. 684 // stream may hold the last reference to the session.
682 void CloseActiveStreamIterator(ActiveStreamMap::iterator it, int status); 685 void CloseActiveStreamIterator(ActiveStreamMap::iterator it, int status);
683 686
684 // Close the stream pointed to by the given iterator. Note that that 687 // Close the stream pointed to by the given iterator. Note that that
685 // stream may hold the last reference to the session. 688 // stream may hold the last reference to the session.
686 void CloseCreatedStreamIterator(CreatedStreamSet::iterator it, int status); 689 void CloseCreatedStreamIterator(CreatedStreamSet::iterator it, int status);
687 690
688 // Calls EnqueueResetStreamFrame() and then 691 // Calls EnqueueResetStreamFrame() and then
689 // CloseActiveStreamIterator(). 692 // CloseActiveStreamIterator().
690 void ResetStreamIterator(ActiveStreamMap::iterator it, 693 void ResetStreamIterator(ActiveStreamMap::iterator it,
691 SpdyRstStreamStatus status, 694 SpdyRstStreamStatus status,
692 const std::string& description); 695 const std::string& description);
693 696
694 // Send a RST_STREAM frame with the given parameters. There should 697 // Send a RST_STREAM frame with the given parameters. There should
695 // either be no active stream with the given ID, or that active 698 // either be no active stream with the given ID, or that active
696 // stream should be closed shortly after this function is called. 699 // stream should be closed shortly after this function is called.
697 //
698 // TODO(akalin): Rename this to EnqueueResetStreamFrame().
699 void EnqueueResetStreamFrame(SpdyStreamId stream_id, 700 void EnqueueResetStreamFrame(SpdyStreamId stream_id,
700 RequestPriority priority, 701 RequestPriority priority,
701 SpdyRstStreamStatus status, 702 SpdyRstStreamStatus status,
702 const std::string& description); 703 const std::string& description);
703 704
705 // Send a PRIORITY frame with the given parameters.
706 void EnqueuePriorityFrame(SpdyStreamId stream_id,
707 SpdyStreamId dependency_id,
708 int weight,
709 bool exclusive);
710
704 // Calls DoReadLoop. Use this function instead of DoReadLoop when 711 // Calls DoReadLoop. Use this function instead of DoReadLoop when
705 // posting a task to pump the read loop. 712 // posting a task to pump the read loop.
706 void PumpReadLoop(ReadState expected_read_state, int result); 713 void PumpReadLoop(ReadState expected_read_state, int result);
707 714
708 // Advance the ReadState state machine. |expected_read_state| is the 715 // Advance the ReadState state machine. |expected_read_state| is the
709 // expected starting read state. 716 // expected starting read state.
710 // 717 //
711 // This function must always be called via PumpReadLoop(). 718 // This function must always be called via PumpReadLoop().
712 int DoReadLoop(ReadState expected_read_state, int result); 719 int DoReadLoop(ReadState expected_read_state, int result);
713 // The implementations of the states of the ReadState state machine. 720 // The implementations of the states of the ReadState state machine.
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 // Used for posting asynchronous IO tasks. We use this even though 1212 // Used for posting asynchronous IO tasks. We use this even though
1206 // SpdySession is refcounted because we don't need to keep the SpdySession 1213 // SpdySession is refcounted because we don't need to keep the SpdySession
1207 // alive if the last reference is within a RunnableMethod. Just revoke the 1214 // alive if the last reference is within a RunnableMethod. Just revoke the
1208 // method. 1215 // method.
1209 base::WeakPtrFactory<SpdySession> weak_factory_; 1216 base::WeakPtrFactory<SpdySession> weak_factory_;
1210 }; 1217 };
1211 1218
1212 } // namespace net 1219 } // namespace net
1213 1220
1214 #endif // NET_SPDY_SPDY_SESSION_H_ 1221 #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