summaryrefslogtreecommitdiffstats
path: root/net/socket/client_socket_pool_base.h
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-20 19:38:30 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-20 19:38:30 +0000
commitfd7b7c97553ad90ca9c4e6b83b320c076e902af8 (patch)
tree26016f371b93d686f8f025edd931bbe01e7b7a0b /net/socket/client_socket_pool_base.h
parentaf9a7a5f59a1b5988b9c0e948c95724f61910393 (diff)
downloadchromium_src-fd7b7c97553ad90ca9c4e6b83b320c076e902af8.zip
chromium_src-fd7b7c97553ad90ca9c4e6b83b320c076e902af8.tar.gz
chromium_src-fd7b7c97553ad90ca9c4e6b83b320c076e902af8.tar.bz2
Add instrumentation to ClientSocketPool, that writes to LoadLog.
BUG=http://crbug.com/14478 Review URL: http://codereview.chromium.org/174101 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23855 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/client_socket_pool_base.h')
-rw-r--r--net/socket/client_socket_pool_base.h27
1 files changed, 20 insertions, 7 deletions
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h
index bdcee36d..e6368ca 100644
--- a/net/socket/client_socket_pool_base.h
+++ b/net/socket/client_socket_pool_base.h
@@ -64,7 +64,8 @@ class ConnectJob {
ConnectJob(const std::string& group_name,
const ClientSocketHandle* key_handle,
base::TimeDelta timeout_duration,
- Delegate* delegate);
+ Delegate* delegate,
+ LoadLog* load_log);
virtual ~ConnectJob();
// Accessors
@@ -84,11 +85,13 @@ class ConnectJob {
// if it succeeded.
int Connect();
+ LoadLog* load_log() { return load_log_; }
+
protected:
void set_load_state(LoadState load_state) { load_state_ = load_state; }
void set_socket(ClientSocket* socket) { socket_.reset(socket); }
ClientSocket* socket() { return socket_.get(); }
- Delegate* delegate() { return delegate_; }
+ void NotifyDelegateOfCompletion(int rv);
private:
virtual int ConnectInternal() = 0;
@@ -105,6 +108,7 @@ class ConnectJob {
Delegate* delegate_;
LoadState load_state_;
scoped_ptr<ClientSocket> socket_;
+ scoped_refptr<LoadLog> load_log_;
DISALLOW_COPY_AND_ASSIGN(ConnectJob);
};
@@ -126,7 +130,8 @@ class ClientSocketPoolBaseHelper
CompletionCallback* callback,
int priority,
LoadLog* load_log)
- : handle_(handle), callback_(callback), priority_(priority) {}
+ : handle_(handle), callback_(callback), priority_(priority),
+ load_log_(load_log) {}
virtual ~Request() {}
@@ -152,7 +157,8 @@ class ClientSocketPoolBaseHelper
virtual ConnectJob* NewConnectJob(
const std::string& group_name,
const Request& request,
- ConnectJob::Delegate* delegate) const = 0;
+ ConnectJob::Delegate* delegate,
+ LoadLog* load_log) const = 0;
private:
DISALLOW_COPY_AND_ASSIGN(ConnectJobFactory);
@@ -265,6 +271,8 @@ class ClientSocketPoolBaseHelper
static void InsertRequestIntoQueue(const Request* r,
RequestQueue* pending_requests);
+ static const Request* RemoveRequestFromQueue(RequestQueue::iterator it,
+ RequestQueue* pending_requests);
// Closes all idle sockets if |force| is true. Else, only closes idle
// sockets that timed out or can't be reused.
@@ -404,7 +412,8 @@ class ClientSocketPoolBase {
virtual ConnectJob* NewConnectJob(
const std::string& group_name,
const Request& request,
- ConnectJob::Delegate* delegate) const = 0;
+ ConnectJob::Delegate* delegate,
+ LoadLog* load_log) const = 0;
private:
DISALLOW_COPY_AND_ASSIGN(ConnectJobFactory);
@@ -432,9 +441,12 @@ class ClientSocketPoolBase {
LoadLog* load_log) {
scoped_ptr<Request> request(
new Request(handle, callback, priority, params, load_log));
+ LoadLog::BeginEvent(load_log, LoadLog::TYPE_SOCKET_POOL);
int rv = helper_->RequestSocket(group_name, request.get());
if (rv == ERR_IO_PENDING)
request.release();
+ else
+ LoadLog::EndEvent(load_log, LoadLog::TYPE_SOCKET_POOL);
return rv;
}
@@ -493,10 +505,11 @@ class ClientSocketPoolBase {
virtual ConnectJob* NewConnectJob(
const std::string& group_name,
const internal::ClientSocketPoolBaseHelper::Request& request,
- ConnectJob::Delegate* delegate) const {
+ ConnectJob::Delegate* delegate,
+ LoadLog* load_log) const {
const Request* casted_request = static_cast<const Request*>(&request);
return connect_job_factory_->NewConnectJob(
- group_name, *casted_request, delegate);
+ group_name, *casted_request, delegate, load_log);
}
const scoped_ptr<ConnectJobFactory> connect_job_factory_;