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

Unified Diff: net/socket/tcp_client_socket_win.cc

Issue 199048: Add methods for setting socket buffers to the Socket (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months 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
« no previous file with comments | « net/socket/tcp_client_socket_win.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/tcp_client_socket_win.cc
===================================================================
--- net/socket/tcp_client_socket_win.cc (revision 25625)
+++ net/socket/tcp_client_socket_win.cc (working copy)
@@ -7,6 +7,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory_debug.h"
+#include "base/stats_counters.h"
#include "base/string_util.h"
#include "base/sys_info.h"
#include "base/trace_event.h"
@@ -239,6 +240,9 @@
if (socket_ != INVALID_SOCKET)
return OK;
+ static StatsCounter connects("tcp.connect");
+ connects.Increment();
+
TRACE_EVENT_BEGIN("socket.connect", this, "");
const struct addrinfo* ai = current_ai_;
DCHECK(ai);
@@ -386,6 +390,8 @@
// false error reports.
// See bug 5297.
base::MemoryDebug::MarkAsInitialized(core_->read_buffer_.buf, num);
+ static StatsCounter read_bytes("tcp.read_bytes");
+ read_bytes.Add(num);
return static_cast<int>(num);
}
} else {
@@ -409,6 +415,9 @@
DCHECK_GT(buf_len, 0);
DCHECK(!core_->write_iobuffer_);
+ static StatsCounter reads("tcp.writes");
+ reads.Increment();
+
core_->write_buffer_.len = buf_len;
core_->write_buffer_.buf = buf->data();
@@ -422,6 +431,8 @@
if (rv == 0) {
if (ResetEventIfSignaled(core_->write_overlapped_.hEvent)) {
TRACE_EVENT_END("socket.write", this, StringPrintf("%d bytes", num));
+ static StatsCounter write_bytes("tcp.write_bytes");
+ write_bytes.Add(num);
return static_cast<int>(num);
}
} else {
@@ -436,6 +447,20 @@
return ERR_IO_PENDING;
}
+bool TCPClientSocketWin::SetReceiveBufferSize(int32 size) {
+ int rv = setsockopt(socket_, SOL_SOCKET, SO_RCVBUF,
+ reinterpret_cast<const char*>(&size), sizeof(size));
+ DCHECK(!rv) << "Could not set socket receive buffer size: " << GetLastError();
+ return rv == 0;
+}
+
+bool TCPClientSocketWin::SetSendBufferSize(int32 size) {
+ int rv = setsockopt(socket_, SOL_SOCKET, SO_SNDBUF,
+ reinterpret_cast<const char*>(&size), sizeof(size));
+ DCHECK(!rv) << "Could not set socket send buffer size: " << GetLastError();
+ return rv == 0;
+}
+
int TCPClientSocketWin::CreateSocket(const struct addrinfo* ai) {
socket_ = WSASocket(ai->ai_family, ai->ai_socktype, ai->ai_protocol, NULL, 0,
WSA_FLAG_OVERLAPPED);
@@ -459,15 +484,9 @@
base::SysInfo::OperatingSystemVersionNumbers(&major_version, &minor_version,
&fix_version);
if (major_version < 6) {
- const int kSocketBufferSize = 64 * 1024;
- int rv = setsockopt(socket_, SOL_SOCKET, SO_SNDBUF,
- reinterpret_cast<const char*>(&kSocketBufferSize),
- sizeof(kSocketBufferSize));
- DCHECK(!rv) << "Could not set socket send buffer size";
- rv = setsockopt(socket_, SOL_SOCKET, SO_RCVBUF,
- reinterpret_cast<const char*>(&kSocketBufferSize),
- sizeof(kSocketBufferSize));
- DCHECK(!rv) << "Could not set socket receive buffer size";
+ const int32 kSocketBufferSize = 64 * 1024;
+ SetReceiveBufferSize(kSocketBufferSize);
+ SetSendBufferSize(kSocketBufferSize);
}
// Disable Nagle.
@@ -504,6 +523,9 @@
DCHECK_NE(rv, ERR_IO_PENDING);
DCHECK(read_callback_);
+ static StatsCounter read_bytes("tcp.read_bytes");
+ read_bytes.Add(rv);
+
// since Run may result in Read being called, clear read_callback_ up front.
CompletionCallback* c = read_callback_;
read_callback_ = NULL;
@@ -514,6 +536,9 @@
DCHECK_NE(rv, ERR_IO_PENDING);
DCHECK(write_callback_);
+ static StatsCounter write_bytes("tcp.write_bytes");
+ write_bytes.Add(rv);
+
// since Run may result in Write being called, clear write_callback_ up front.
CompletionCallback* c = write_callback_;
write_callback_ = NULL;
« no previous file with comments | « net/socket/tcp_client_socket_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698