| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/base/client_socket_handle.h" |
| |
| #include "net/base/client_socket.h" |
| #include "net/base/client_socket_pool.h" |
| |
| namespace net { |
| |
| ClientSocketHandle::ClientSocketHandle(ClientSocketPool* pool) |
| : pool_(pool), socket_(NULL) { |
| } |
| |
| ClientSocketHandle::~ClientSocketHandle() { |
| Reset(); |
| } |
| |
| int ClientSocketHandle::Init(const std::string& group_name, |
| CompletionCallback* callback) { |
| Reset(); |
| group_name_ = group_name; |
| return pool_->RequestSocket(this, callback); |
| } |
| |
| void ClientSocketHandle::Reset() { |
| if (group_name_.empty()) // Was Init called? |
| return; |
| if (socket_) { |
| pool_->ReleaseSocket(this); |
| socket_ = NULL; |
| } else { |
| pool_->CancelRequest(this); |
| } |
| group_name_.clear(); |
| } |
| |
| } // namespace net |
| |