| Index: net/socket/client_socket_pool_base.cc
|
| diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
|
| index 86ba2dd47212c94da9f2816ba22dbdbd7be52909..7c8e03bc4ee6aa8c4571e9fcb6aff73756063ef6 100644
|
| --- a/net/socket/client_socket_pool_base.cc
|
| +++ b/net/socket/client_socket_pool_base.cc
|
| @@ -133,7 +133,7 @@ namespace internal {
|
|
|
| ClientSocketPoolBaseHelper::Request::Request(
|
| ClientSocketHandle* handle,
|
| - CompletionCallback* callback,
|
| + Tr1CompletionCallback callback,
|
| RequestPriority priority,
|
| Flags flags,
|
| const BoundNetLog& net_log)
|
| @@ -160,8 +160,7 @@ ClientSocketPoolBaseHelper::ClientSocketPoolBaseHelper(
|
| used_idle_socket_timeout_(used_idle_socket_timeout),
|
| connect_job_factory_(connect_job_factory),
|
| connect_backup_jobs_enabled_(false),
|
| - pool_generation_number_(0),
|
| - method_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
|
| + pool_generation_number_(0) {
|
| DCHECK_LE(0, max_sockets_per_group);
|
| DCHECK_LE(max_sockets_per_group, max_sockets);
|
|
|
| @@ -208,7 +207,6 @@ ClientSocketPoolBaseHelper::RemoveRequestFromQueue(
|
| int ClientSocketPoolBaseHelper::RequestSocket(
|
| const std::string& group_name,
|
| const Request* request) {
|
| - CHECK(request->callback());
|
| CHECK(request->handle());
|
|
|
| request->net_log().BeginEvent(NetLog::TYPE_SOCKET_POOL, NULL);
|
| @@ -229,7 +227,6 @@ void ClientSocketPoolBaseHelper::RequestSockets(
|
| const std::string& group_name,
|
| const Request& request,
|
| int num_sockets) {
|
| - DCHECK(!request.callback());
|
| DCHECK(!request.handle());
|
|
|
| if (num_sockets > max_sockets_per_group_) {
|
| @@ -975,14 +972,15 @@ bool ClientSocketPoolBaseHelper::CloseOneIdleSocketExceptInGroup(
|
| }
|
|
|
| void ClientSocketPoolBaseHelper::InvokeUserCallbackLater(
|
| - ClientSocketHandle* handle, CompletionCallback* callback, int rv) {
|
| + ClientSocketHandle* handle, Tr1CompletionCallback callback, int rv) {
|
| CHECK(!ContainsKey(pending_callback_map_, handle));
|
| pending_callback_map_[handle] = CallbackResultPair(callback, rv);
|
| - MessageLoop::current()->PostTask(
|
| - FROM_HERE,
|
| - method_factory_.NewRunnableMethod(
|
| - &ClientSocketPoolBaseHelper::InvokeUserCallback,
|
| - handle));
|
| +
|
| + base::Thunk<void(void)> invoke_thunk =
|
| + base::Prebind(&ClientSocketPoolBaseHelper::InvokeUserCallback,
|
| + base::Unretained(this), handle);
|
| + MessageLoop::current()->PostThunk(FROM_HERE,
|
| + thunk_canceller_.Wrap(invoke_thunk));
|
| }
|
|
|
| void ClientSocketPoolBaseHelper::InvokeUserCallback(
|
| @@ -994,15 +992,14 @@ void ClientSocketPoolBaseHelper::InvokeUserCallback(
|
| return;
|
|
|
| CHECK(!handle->is_initialized());
|
| - CompletionCallback* callback = it->second.callback;
|
| + Tr1CompletionCallback callback = it->second.callback;
|
| int result = it->second.result;
|
| pending_callback_map_.erase(it);
|
| - callback->Run(result);
|
| + callback(result);
|
| }
|
|
|
| ClientSocketPoolBaseHelper::Group::Group()
|
| - : active_socket_count_(0),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {}
|
| + : active_socket_count_(0) {}
|
|
|
| ClientSocketPoolBaseHelper::Group::~Group() {
|
| CleanupBackupJob();
|
| @@ -1012,13 +1009,14 @@ void ClientSocketPoolBaseHelper::Group::StartBackupSocketTimer(
|
| const std::string& group_name,
|
| ClientSocketPoolBaseHelper* pool) {
|
| // Only allow one timer pending to create a backup socket.
|
| - if (!method_factory_.empty())
|
| + if (!thunk_canceller_.empty())
|
| return;
|
|
|
| - MessageLoop::current()->PostDelayedTask(
|
| +
|
| + MessageLoop::current()->PostDelayedThunk(
|
| FROM_HERE,
|
| - method_factory_.NewRunnableMethod(
|
| - &Group::OnBackupSocketTimerFired, group_name, pool),
|
| + thunk_canceller_.Wrap(base::Prebind(&Group::OnBackupSocketTimerFired,
|
| + base::Unretained(this), group_name, pool)),
|
| pool->ConnectRetryIntervalMs());
|
| }
|
|
|
| @@ -1074,7 +1072,7 @@ void ClientSocketPoolBaseHelper::Group::RemoveAllJobs() {
|
| STLDeleteElements(&jobs_);
|
|
|
| // Cancel pending backup job.
|
| - method_factory_.RevokeAll();
|
| + thunk_canceller_.RevokeAll();
|
| }
|
|
|
| } // namespace internal
|
|
|