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 // NOTE: This code is not shared between Google and Chrome. | 5 // NOTE: This code is not shared between Google and Chrome. |
6 | 6 |
7 #ifndef NET_QUIC_QUIC_RELIABLE_CLIENT_STREAM_H_ | 7 #ifndef NET_QUIC_QUIC_RELIABLE_CLIENT_STREAM_H_ |
8 #define NET_QUIC_QUIC_RELIABLE_CLIENT_STREAM_H_ | 8 #define NET_QUIC_QUIC_RELIABLE_CLIENT_STREAM_H_ |
9 | 9 |
10 #include "net/base/ip_endpoint.h" | 10 #include "net/base/ip_endpoint.h" |
11 #include "net/base/upload_data_stream.h" | 11 #include "net/base/upload_data_stream.h" |
12 #include "net/http/http_request_info.h" | 12 #include "net/http/http_request_info.h" |
13 #include "net/http/http_response_info.h" | 13 #include "net/http/http_response_info.h" |
14 #include "net/http/http_stream.h" | 14 #include "net/http/http_stream.h" |
15 #include "net/quic/reliable_quic_stream.h" | 15 #include "net/quic/quic_data_stream.h" |
16 | 16 |
17 namespace net { | 17 namespace net { |
18 | 18 |
19 class QuicClientSession; | 19 class QuicClientSession; |
20 | 20 |
21 // A client-initiated ReliableQuicStream. Instances of this class | 21 // A client-initiated ReliableQuicStream. Instances of this class |
22 // are owned by the QuicClientSession which created them. | 22 // are owned by the QuicClientSession which created them. |
23 class NET_EXPORT_PRIVATE QuicReliableClientStream : public ReliableQuicStream { | 23 class NET_EXPORT_PRIVATE QuicReliableClientStream : public QuicDataStream { |
24 public: | 24 public: |
25 // Delegate handles protocol specific behavior of a quic stream. | 25 // Delegate handles protocol specific behavior of a quic stream. |
26 class NET_EXPORT_PRIVATE Delegate { | 26 class NET_EXPORT_PRIVATE Delegate { |
27 public: | 27 public: |
28 Delegate() {} | 28 Delegate() {} |
29 | 29 |
30 // Called when data is received. | 30 // Called when data is received. |
31 // Returns network error code. OK when it successfully receives data. | 31 // Returns network error code. OK when it successfully receives data. |
32 virtual int OnDataReceived(const char* data, int length) = 0; | 32 virtual int OnDataReceived(const char* data, int length) = 0; |
33 | 33 |
(...skipping 12 matching lines...) Expand all Loading... |
46 private: | 46 private: |
47 DISALLOW_COPY_AND_ASSIGN(Delegate); | 47 DISALLOW_COPY_AND_ASSIGN(Delegate); |
48 }; | 48 }; |
49 | 49 |
50 QuicReliableClientStream(QuicStreamId id, | 50 QuicReliableClientStream(QuicStreamId id, |
51 QuicSession* session, | 51 QuicSession* session, |
52 const BoundNetLog& net_log); | 52 const BoundNetLog& net_log); |
53 | 53 |
54 virtual ~QuicReliableClientStream(); | 54 virtual ~QuicReliableClientStream(); |
55 | 55 |
56 // ReliableQuicStream | 56 // QuicDataStream |
57 virtual uint32 ProcessData(const char* data, uint32 data_len) OVERRIDE; | 57 virtual uint32 ProcessData(const char* data, uint32 data_len) OVERRIDE; |
58 virtual void OnFinRead() OVERRIDE; | 58 virtual void OnFinRead() OVERRIDE; |
59 virtual void OnCanWrite() OVERRIDE; | 59 virtual void OnCanWrite() OVERRIDE; |
60 virtual QuicPriority EffectivePriority() const OVERRIDE; | 60 virtual QuicPriority EffectivePriority() const OVERRIDE; |
61 | 61 |
62 // While the server's set_priority shouldn't be called externally, the creator | 62 // While the server's set_priority shouldn't be called externally, the creator |
63 // of client-side streams should be able to set the priority. | 63 // of client-side streams should be able to set the priority. |
64 using ReliableQuicStream::set_priority; | 64 using QuicDataStream::set_priority; |
65 | 65 |
66 int WriteStreamData(base::StringPiece data, | 66 int WriteStreamData(base::StringPiece data, |
67 bool fin, | 67 bool fin, |
68 const CompletionCallback& callback); | 68 const CompletionCallback& callback); |
69 // Set new |delegate|. |delegate| must not be NULL. | 69 // Set new |delegate|. |delegate| must not be NULL. |
70 // If this stream has already received data, OnDataReceived() will be | 70 // If this stream has already received data, OnDataReceived() will be |
71 // called on the delegate. | 71 // called on the delegate. |
72 void SetDelegate(Delegate* delegate); | 72 void SetDelegate(Delegate* delegate); |
73 Delegate* GetDelegate() { return delegate_; } | 73 Delegate* GetDelegate() { return delegate_; } |
74 void OnError(int error); | 74 void OnError(int error); |
75 | 75 |
76 // Returns true if the stream can possible write data. (The socket may | 76 // Returns true if the stream can possible write data. (The socket may |
77 // turn out to be write blocked, of course). If the stream can not write, | 77 // turn out to be write blocked, of course). If the stream can not write, |
78 // this method returns false, and |callback| will be invoked when | 78 // this method returns false, and |callback| will be invoked when |
79 // it becomes writable. | 79 // it becomes writable. |
80 bool CanWrite(const CompletionCallback& callback); | 80 bool CanWrite(const CompletionCallback& callback); |
81 | 81 |
82 const BoundNetLog& net_log() const { return net_log_; } | 82 const BoundNetLog& net_log() const { return net_log_; } |
83 | 83 |
84 using ReliableQuicStream::HasBufferedData; | 84 using QuicDataStream::HasBufferedData; |
85 | 85 |
86 private: | 86 private: |
87 BoundNetLog net_log_; | 87 BoundNetLog net_log_; |
88 Delegate* delegate_; | 88 Delegate* delegate_; |
89 | 89 |
90 CompletionCallback callback_; | 90 CompletionCallback callback_; |
91 | 91 |
92 DISALLOW_COPY_AND_ASSIGN(QuicReliableClientStream); | 92 DISALLOW_COPY_AND_ASSIGN(QuicReliableClientStream); |
93 }; | 93 }; |
94 | 94 |
95 } // namespace net | 95 } // namespace net |
96 | 96 |
97 #endif // NET_QUIC_QUIC_RELIABLE_CLIENT_STREAM_H_ | 97 #endif // NET_QUIC_QUIC_RELIABLE_CLIENT_STREAM_H_ |
OLD | NEW |