Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Unified Diff: net/socket/client_socket_pool_base.cc

Issue 8990001: base::Bind: Convert most of net/http. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clang. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 bb7eb069f4dea37ca14ec7124106c89570a2e7dc..fa3c17350b36c8f6d3b8f67197a7bd23ce8920d1 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -161,7 +161,7 @@ namespace internal {
ClientSocketPoolBaseHelper::Request::Request(
ClientSocketHandle* handle,
- OldCompletionCallback* callback,
+ const CompletionCallback& callback,
RequestPriority priority,
bool ignore_limits,
Flags flags,
@@ -192,7 +192,7 @@ ClientSocketPoolBaseHelper::ClientSocketPoolBaseHelper(
connect_job_factory_(connect_job_factory),
connect_backup_jobs_enabled_(false),
pool_generation_number_(0),
- method_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
DCHECK_LE(0, max_sockets_per_group);
DCHECK_LE(max_sockets_per_group, max_sockets);
@@ -212,6 +212,8 @@ ClientSocketPoolBaseHelper::~ClientSocketPoolBaseHelper() {
NetworkChangeNotifier::RemoveIPAddressObserver(this);
}
+ClientSocketPoolBaseHelper::CallbackResultPair::~CallbackResultPair() {}
+
// InsertRequestIntoQueue inserts the request into the queue based on
// priority. Highest priorities are closest to the front. Older requests are
// prioritized over requests of equal priority.
@@ -252,7 +254,7 @@ void ClientSocketPoolBaseHelper::RemoveLayeredPool(LayeredPool* pool) {
int ClientSocketPoolBaseHelper::RequestSocket(
const std::string& group_name,
const Request* request) {
- CHECK(request->callback());
+ CHECK(!request->callback().is_null());
CHECK(request->handle());
// Cleanup any timed-out idle sockets if no timer is used.
@@ -277,7 +279,7 @@ void ClientSocketPoolBaseHelper::RequestSockets(
const std::string& group_name,
const Request& request,
int num_sockets) {
- DCHECK(!request.callback());
+ DCHECK(request.callback().is_null());
DCHECK(!request.handle());
// Cleanup any timed out idle sockets if no timer is used.
@@ -1110,14 +1112,13 @@ bool ClientSocketPoolBaseHelper::CloseOneIdleConnectionInLayeredPool() {
}
void ClientSocketPoolBaseHelper::InvokeUserCallbackLater(
- ClientSocketHandle* handle, OldCompletionCallback* callback, int rv) {
+ ClientSocketHandle* handle, const CompletionCallback& 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::Bind(&ClientSocketPoolBaseHelper::InvokeUserCallback,
+ weak_factory_.GetWeakPtr(), handle));
}
void ClientSocketPoolBaseHelper::InvokeUserCallback(
@@ -1129,15 +1130,15 @@ void ClientSocketPoolBaseHelper::InvokeUserCallback(
return;
CHECK(!handle->is_initialized());
- OldCompletionCallback* callback = it->second.callback;
+ CompletionCallback callback = it->second.callback;
int result = it->second.result;
pending_callback_map_.erase(it);
- callback->Run(result);
+ callback.Run(result);
}
ClientSocketPoolBaseHelper::Group::Group()
: active_socket_count_(0),
- ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {}
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {}
ClientSocketPoolBaseHelper::Group::~Group() {
CleanupBackupJob();
@@ -1147,13 +1148,13 @@ 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 (weak_factory_.HasWeakPtrs())
return;
MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- method_factory_.NewRunnableMethod(
- &Group::OnBackupSocketTimerFired, group_name, pool),
+ base::Bind(&Group::OnBackupSocketTimerFired, weak_factory_.GetWeakPtr(),
+ group_name, pool),
pool->ConnectRetryIntervalMs());
}
@@ -1207,7 +1208,7 @@ void ClientSocketPoolBaseHelper::Group::RemoveAllJobs() {
STLDeleteElements(&jobs_);
// Cancel pending backup job.
- method_factory_.RevokeAll();
+ weak_factory_.InvalidateWeakPtrs();
}
} // namespace internal

Powered by Google App Engine
This is Rietveld 408576698