| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_SOCKET_STREAM_SOCKET_STREAM_H_ | 5 #ifndef NET_SOCKET_STREAM_SOCKET_STREAM_H_ |
| 6 #define NET_SOCKET_STREAM_SOCKET_STREAM_H_ | 6 #define NET_SOCKET_STREAM_SOCKET_STREAM_H_ |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/linked_ptr.h" | 13 #include "base/linked_ptr.h" |
| 14 #include "base/ref_counted.h" | 14 #include "base/ref_counted.h" |
| 15 #include "base/scoped_ptr.h" | 15 #include "base/scoped_ptr.h" |
| 16 #include "base/task.h" | 16 #include "base/task.h" |
| 17 #include "net/base/address_list.h" | 17 #include "net/base/address_list.h" |
| 18 #include "net/base/completion_callback.h" | 18 #include "net/base/completion_callback.h" |
| 19 #include "net/base/io_buffer.h" | 19 #include "net/base/io_buffer.h" |
| 20 #include "net/base/net_log.h" | 20 #include "net/base/net_log.h" |
| 21 #include "net/base/net_errors.h" |
| 21 #include "net/http/http_auth.h" | 22 #include "net/http/http_auth.h" |
| 22 #include "net/http/http_auth_cache.h" | 23 #include "net/http/http_auth_cache.h" |
| 23 #include "net/http/http_auth_handler.h" | 24 #include "net/http/http_auth_handler.h" |
| 24 #include "net/proxy/proxy_service.h" | 25 #include "net/proxy/proxy_service.h" |
| 25 #include "net/socket/tcp_client_socket.h" | 26 #include "net/socket/tcp_client_socket.h" |
| 26 #include "net/url_request/url_request_context.h" | 27 #include "net/url_request/url_request_context.h" |
| 27 | 28 |
| 28 namespace net { | 29 namespace net { |
| 29 | 30 |
| 30 class AuthChallengeInfo; | 31 class AuthChallengeInfo; |
| 31 class ClientSocketFactory; | 32 class ClientSocketFactory; |
| 32 class HostResolver; | 33 class HostResolver; |
| 33 class HttpAuthHandlerFactory; | 34 class HttpAuthHandlerFactory; |
| 34 class SSLConfigService; | 35 class SSLConfigService; |
| 35 class SingleRequestHostResolver; | 36 class SingleRequestHostResolver; |
| 36 class SocketStreamMetrics; | 37 class SocketStreamMetrics; |
| 37 class SocketStreamThrottle; | |
| 38 | 38 |
| 39 // SocketStream is used to implement Web Sockets. | 39 // SocketStream is used to implement Web Sockets. |
| 40 // It provides plain full-duplex stream with proxy and SSL support. | 40 // It provides plain full-duplex stream with proxy and SSL support. |
| 41 // For proxy authentication, only basic mechanisum is supported. It will try | 41 // For proxy authentication, only basic mechanisum is supported. It will try |
| 42 // authentication identity for proxy URL first. If server requires proxy | 42 // authentication identity for proxy URL first. If server requires proxy |
| 43 // authentication, it will try authentication identity for realm that server | 43 // authentication, it will try authentication identity for realm that server |
| 44 // requests. | 44 // requests. |
| 45 class SocketStream : public base::RefCountedThreadSafe<SocketStream> { | 45 class SocketStream : public base::RefCountedThreadSafe<SocketStream> { |
| 46 public: | 46 public: |
| 47 // Derive from this class and add your own data members to associate extra | 47 // Derive from this class and add your own data members to associate extra |
| 48 // information with a SocketStream. Use GetUserData(key) and | 48 // information with a SocketStream. Use GetUserData(key) and |
| 49 // SetUserData(key, data). | 49 // SetUserData(key, data). |
| 50 class UserData { | 50 class UserData { |
| 51 public: | 51 public: |
| 52 UserData() {} | 52 UserData() {} |
| 53 virtual ~UserData() {} | 53 virtual ~UserData() {} |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 class Delegate { | 56 class Delegate { |
| 57 public: | 57 public: |
| 58 virtual ~Delegate() {} | 58 virtual ~Delegate() {} |
| 59 | 59 |
| 60 virtual int OnStartOpenConnection(SocketStream* socket, |
| 61 CompletionCallback* callback) { |
| 62 return OK; |
| 63 } |
| 64 |
| 60 // Called when socket stream has been connected. The socket stream accepts | 65 // Called when socket stream has been connected. The socket stream accepts |
| 61 // at most |max_pending_send_allowed| so that a client of the socket stream | 66 // at most |max_pending_send_allowed| so that a client of the socket stream |
| 62 // should keep track of how much it has pending and shouldn't go over | 67 // should keep track of how much it has pending and shouldn't go over |
| 63 // |max_pending_send_allowed| bytes. | 68 // |max_pending_send_allowed| bytes. |
| 64 virtual void OnConnected(SocketStream* socket, | 69 virtual void OnConnected(SocketStream* socket, |
| 65 int max_pending_send_allowed) = 0; | 70 int max_pending_send_allowed) = 0; |
| 66 | 71 |
| 67 // Called when |amount_sent| bytes of data are sent. | 72 // Called when |amount_sent| bytes of data are sent. |
| 68 virtual void OnSentData(SocketStream* socket, | 73 virtual void OnSentData(SocketStream* socket, |
| 69 int amount_sent) = 0; | 74 int amount_sent) = 0; |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 // |max_pending_send_allowed_|. | 311 // |max_pending_send_allowed_|. |
| 307 // |write_buf_| holds requested data and |current_write_buf_| is used | 312 // |write_buf_| holds requested data and |current_write_buf_| is used |
| 308 // for Write operation, that is, |current_write_buf_| is | 313 // for Write operation, that is, |current_write_buf_| is |
| 309 // |write_buf_| + |write_buf_offset_|. | 314 // |write_buf_| + |write_buf_offset_|. |
| 310 scoped_refptr<IOBuffer> write_buf_; | 315 scoped_refptr<IOBuffer> write_buf_; |
| 311 scoped_refptr<DrainableIOBuffer> current_write_buf_; | 316 scoped_refptr<DrainableIOBuffer> current_write_buf_; |
| 312 int write_buf_offset_; | 317 int write_buf_offset_; |
| 313 int write_buf_size_; | 318 int write_buf_size_; |
| 314 PendingDataQueue pending_write_bufs_; | 319 PendingDataQueue pending_write_bufs_; |
| 315 | 320 |
| 316 SocketStreamThrottle* throttle_; | |
| 317 | |
| 318 scoped_ptr<SocketStreamMetrics> metrics_; | 321 scoped_ptr<SocketStreamMetrics> metrics_; |
| 319 | 322 |
| 320 DISALLOW_COPY_AND_ASSIGN(SocketStream); | 323 DISALLOW_COPY_AND_ASSIGN(SocketStream); |
| 321 }; | 324 }; |
| 322 | 325 |
| 323 } // namespace net | 326 } // namespace net |
| 324 | 327 |
| 325 #endif // NET_SOCKET_STREAM_SOCKET_STREAM_H_ | 328 #endif // NET_SOCKET_STREAM_SOCKET_STREAM_H_ |
| OLD | NEW |