| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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_CLIENT_SOCKET_HANDLE_H_ | 5 #ifndef NET_SOCKET_CLIENT_SOCKET_HANDLE_H_ |
| 6 #define NET_SOCKET_CLIENT_SOCKET_HANDLE_H_ | 6 #define NET_SOCKET_CLIENT_SOCKET_HANDLE_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 // otherwise it will be set to a new connected socket. Consumers can then | 48 // otherwise it will be set to a new connected socket. Consumers can then |
| 49 // call is_reused() to see if the socket was reused. If not reusing an | 49 // call is_reused() to see if the socket was reused. If not reusing an |
| 50 // existing socket, ClientSocketPool may need to establish a new | 50 // existing socket, ClientSocketPool may need to establish a new |
| 51 // connection using |socket_params|. | 51 // connection using |socket_params|. |
| 52 // | 52 // |
| 53 // This method returns ERR_IO_PENDING if it cannot complete synchronously, in | 53 // This method returns ERR_IO_PENDING if it cannot complete synchronously, in |
| 54 // which case the consumer will be notified of completion via |callback|. | 54 // which case the consumer will be notified of completion via |callback|. |
| 55 // | 55 // |
| 56 // Init may be called multiple times. | 56 // Init may be called multiple times. |
| 57 // | 57 // |
| 58 // Profiling information for the request is saved to |load_log| if non-NULL. | 58 // Profiling information for the request is saved to |net_log| if non-NULL. |
| 59 // | 59 // |
| 60 template <typename SocketParams, typename PoolType> | 60 template <typename SocketParams, typename PoolType> |
| 61 int Init(const std::string& group_name, | 61 int Init(const std::string& group_name, |
| 62 const SocketParams& socket_params, | 62 const SocketParams& socket_params, |
| 63 RequestPriority priority, | 63 RequestPriority priority, |
| 64 CompletionCallback* callback, | 64 CompletionCallback* callback, |
| 65 PoolType* pool, | 65 PoolType* pool, |
| 66 LoadLog* load_log); | 66 const BoundNetLog& net_log); |
| 67 | 67 |
| 68 // An initialized handle can be reset, which causes it to return to the | 68 // An initialized handle can be reset, which causes it to return to the |
| 69 // un-initialized state. This releases the underlying socket, which in the | 69 // un-initialized state. This releases the underlying socket, which in the |
| 70 // case of a socket that still has an established connection, indicates that | 70 // case of a socket that still has an established connection, indicates that |
| 71 // the socket may be kept alive for use by a subsequent ClientSocketHandle. | 71 // the socket may be kept alive for use by a subsequent ClientSocketHandle. |
| 72 // | 72 // |
| 73 // NOTE: To prevent the socket from being kept alive, be sure to call its | 73 // NOTE: To prevent the socket from being kept alive, be sure to call its |
| 74 // Disconnect method. This will result in the ClientSocketPool deleting the | 74 // Disconnect method. This will result in the ClientSocketPool deleting the |
| 75 // ClientSocket. | 75 // ClientSocket. |
| 76 void Reset(); | 76 void Reset(); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 DISALLOW_COPY_AND_ASSIGN(ClientSocketHandle); | 143 DISALLOW_COPY_AND_ASSIGN(ClientSocketHandle); |
| 144 }; | 144 }; |
| 145 | 145 |
| 146 // Template function implementation: | 146 // Template function implementation: |
| 147 template <typename SocketParams, typename PoolType> | 147 template <typename SocketParams, typename PoolType> |
| 148 int ClientSocketHandle::Init(const std::string& group_name, | 148 int ClientSocketHandle::Init(const std::string& group_name, |
| 149 const SocketParams& socket_params, | 149 const SocketParams& socket_params, |
| 150 RequestPriority priority, | 150 RequestPriority priority, |
| 151 CompletionCallback* callback, | 151 CompletionCallback* callback, |
| 152 PoolType* pool, | 152 PoolType* pool, |
| 153 LoadLog* load_log) { | 153 const BoundNetLog& net_log) { |
| 154 CHECK(!group_name.empty()); | 154 CHECK(!group_name.empty()); |
| 155 // Note that this will result in a link error if the SocketParams has not been | 155 // Note that this will result in a link error if the SocketParams has not been |
| 156 // registered for the PoolType via REGISTER_SOCKET_PARAMS_FOR_POOL (defined in | 156 // registered for the PoolType via REGISTER_SOCKET_PARAMS_FOR_POOL (defined in |
| 157 // client_socket_pool.h). | 157 // client_socket_pool.h). |
| 158 CheckIsValidSocketParamsForPool<PoolType, SocketParams>(); | 158 CheckIsValidSocketParamsForPool<PoolType, SocketParams>(); |
| 159 ResetInternal(true); | 159 ResetInternal(true); |
| 160 pool_ = pool; | 160 pool_ = pool; |
| 161 group_name_ = group_name; | 161 group_name_ = group_name; |
| 162 init_time_ = base::TimeTicks::Now(); | 162 init_time_ = base::TimeTicks::Now(); |
| 163 int rv = pool_->RequestSocket( | 163 int rv = pool_->RequestSocket( |
| 164 group_name, &socket_params, priority, this, &callback_, load_log); | 164 group_name, &socket_params, priority, this, &callback_, net_log); |
| 165 if (rv == ERR_IO_PENDING) { | 165 if (rv == ERR_IO_PENDING) { |
| 166 user_callback_ = callback; | 166 user_callback_ = callback; |
| 167 } else { | 167 } else { |
| 168 HandleInitCompletion(rv); | 168 HandleInitCompletion(rv); |
| 169 } | 169 } |
| 170 return rv; | 170 return rv; |
| 171 } | 171 } |
| 172 | 172 |
| 173 } // namespace net | 173 } // namespace net |
| 174 | 174 |
| 175 #endif // NET_SOCKET_CLIENT_SOCKET_HANDLE_H_ | 175 #endif // NET_SOCKET_CLIENT_SOCKET_HANDLE_H_ |
| OLD | NEW |