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

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

Issue 10810069: SPDY: Add WriteHeaders interface to SpdySession and SpdyStream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: spdy3 Created 8 years, 4 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 | Annotate | Revision Log
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 <list> 8 #include <list>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 virtual void OnClose(int status) = 0; 81 virtual void OnClose(int status) = 0;
82 82
83 protected: 83 protected:
84 friend class base::RefCounted<Delegate>; 84 friend class base::RefCounted<Delegate>;
85 virtual ~Delegate() {} 85 virtual ~Delegate() {}
86 86
87 private: 87 private:
88 DISALLOW_COPY_AND_ASSIGN(Delegate); 88 DISALLOW_COPY_AND_ASSIGN(Delegate);
89 }; 89 };
90 90
91 // Indicates pending frame type.
92 enum PendingFrameType {
93 TYPE_HEADER,
94 TYPE_DATA
95 };
96
97 // Structure to contains pending frame information.
98 typedef struct {
99 PendingFrameType type;
100 union {
101 SpdyHeaderBlock* header_block;
102 SpdyDataFrame* data_frame;
103 } data;
Ryan Hamilton 2012/08/02 16:32:23 nit: you should be able to use an anonymous union
Takashi Toyoshima 2012/08/03 05:11:12 Ah, anonymous looks better here. Thanks!
104 } PendingFrame;
105
91 // SpdyStream constructor 106 // SpdyStream constructor
92 SpdyStream(SpdySession* session, 107 SpdyStream(SpdySession* session,
93 bool pushed, 108 bool pushed,
94 const BoundNetLog& net_log); 109 const BoundNetLog& net_log);
95 110
96 // Set new |delegate|. |delegate| must not be NULL. 111 // Set new |delegate|. |delegate| must not be NULL.
97 // If it already received SYN_REPLY or data, OnResponseReceived() or 112 // If it already received SYN_REPLY or data, OnResponseReceived() or
98 // OnDataReceived() will be called. 113 // OnDataReceived() will be called.
99 void SetDelegate(Delegate* delegate); 114 void SetDelegate(Delegate* delegate);
100 Delegate* GetDelegate() { return delegate_; } 115 Delegate* GetDelegate() { return delegate_; }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // TODO(satorux): This is only for testing. We should be able to remove 230 // TODO(satorux): This is only for testing. We should be able to remove
216 // this once crbug.com/113107 is addressed. 231 // this once crbug.com/113107 is addressed.
217 bool body_sent() const { return io_state_ > STATE_SEND_BODY_COMPLETE; } 232 bool body_sent() const { return io_state_ > STATE_SEND_BODY_COMPLETE; }
218 233
219 // Interface for Spdy[Http|WebSocket]Stream to use. 234 // Interface for Spdy[Http|WebSocket]Stream to use.
220 235
221 // Sends the request. 236 // Sends the request.
222 // For non push stream, it will send SYN_STREAM frame. 237 // For non push stream, it will send SYN_STREAM frame.
223 int SendRequest(bool has_upload_data); 238 int SendRequest(bool has_upload_data);
224 239
240 // Sends a HEADERS frame. SpdyStream owns |headers| and will release it after
241 // the HEADERS frame is actually sent.
242 int WriteHeaders(SpdyHeaderBlock* headers);
243
225 // Sends DATA frame. 244 // Sends DATA frame.
226 int WriteStreamData(IOBuffer* data, int length, 245 int WriteStreamData(IOBuffer* data, int length,
227 SpdyDataFlags flags); 246 SpdyDataFlags flags);
228 247
229 // Fills SSL info in |ssl_info| and returns true when SSL is in use. 248 // Fills SSL info in |ssl_info| and returns true when SSL is in use.
230 bool GetSSLInfo(SSLInfo* ssl_info, 249 bool GetSSLInfo(SSLInfo* ssl_info,
231 bool* was_npn_negotiated, 250 bool* was_npn_negotiated,
232 NextProto* protocol_negotiated); 251 NextProto* protocol_negotiated);
233 252
234 // Fills SSL Certificate Request info |cert_request_info| and returns 253 // Fills SSL Certificate Request info |cert_request_info| and returns
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 // The request to send. 357 // The request to send.
339 scoped_ptr<SpdyHeaderBlock> request_; 358 scoped_ptr<SpdyHeaderBlock> request_;
340 359
341 // The time at which the request was made that resulted in this response. 360 // The time at which the request was made that resulted in this response.
342 // For cached responses, this time could be "far" in the past. 361 // For cached responses, this time could be "far" in the past.
343 base::Time request_time_; 362 base::Time request_time_;
344 363
345 scoped_ptr<SpdyHeaderBlock> response_; 364 scoped_ptr<SpdyHeaderBlock> response_;
346 base::Time response_time_; 365 base::Time response_time_;
347 366
348 std::list<SpdyFrame*> pending_data_frames_; 367 std::list<PendingFrame> pending_frames_;
349 368
350 State io_state_; 369 State io_state_;
351 370
352 // Since we buffer the response, we also buffer the response status. 371 // Since we buffer the response, we also buffer the response status.
353 // Not valid until the stream is closed. 372 // Not valid until the stream is closed.
354 int response_status_; 373 int response_status_;
355 374
356 bool cancelled_; 375 bool cancelled_;
357 bool has_upload_data_; 376 bool has_upload_data_;
358 377
(...skipping 11 matching lines...) Expand all
370 std::string domain_bound_private_key_; 389 std::string domain_bound_private_key_;
371 std::string domain_bound_cert_; 390 std::string domain_bound_cert_;
372 ServerBoundCertService::RequestHandle domain_bound_cert_request_handle_; 391 ServerBoundCertService::RequestHandle domain_bound_cert_request_handle_;
373 392
374 DISALLOW_COPY_AND_ASSIGN(SpdyStream); 393 DISALLOW_COPY_AND_ASSIGN(SpdyStream);
375 }; 394 };
376 395
377 } // namespace net 396 } // namespace net
378 397
379 #endif // NET_SPDY_SPDY_STREAM_H_ 398 #endif // NET_SPDY_SPDY_STREAM_H_
OLDNEW
« no previous file with comments | « net/spdy/spdy_session.cc ('k') | net/spdy/spdy_stream.cc » ('j') | net/spdy/spdy_stream.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698