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

Side by Side Diff: net/udp/udp_socket_win.cc

Issue 2315613002: Extracted NetLog class's inner enum types into their own enum classes and (Closed)
Patch Set: Ran "git cl format" on code. Much formatting ensued. Created 4 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 unified diff | Download patch
« no previous file with comments | « net/udp/udp_socket_unittest.cc ('k') | net/url_request/sdch_dictionary_fetcher.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/udp/udp_socket_win.h" 5 #include "net/udp/udp_socket_win.h"
6 6
7 #include <mstcpip.h> 7 #include <mstcpip.h>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "base/metrics/histogram_macros.h" 14 #include "base/metrics/histogram_macros.h"
15 #include "base/metrics/sparse_histogram.h" 15 #include "base/metrics/sparse_histogram.h"
16 #include "base/rand_util.h" 16 #include "base/rand_util.h"
17 #include "net/base/io_buffer.h" 17 #include "net/base/io_buffer.h"
18 #include "net/base/ip_address.h" 18 #include "net/base/ip_address.h"
19 #include "net/base/ip_endpoint.h" 19 #include "net/base/ip_endpoint.h"
20 #include "net/base/net_errors.h" 20 #include "net/base/net_errors.h"
21 #include "net/base/network_activity_monitor.h" 21 #include "net/base/network_activity_monitor.h"
22 #include "net/base/network_change_notifier.h" 22 #include "net/base/network_change_notifier.h"
23 #include "net/base/sockaddr_storage.h" 23 #include "net/base/sockaddr_storage.h"
24 #include "net/base/winsock_init.h" 24 #include "net/base/winsock_init.h"
25 #include "net/base/winsock_util.h" 25 #include "net/base/winsock_util.h"
26 #include "net/log/net_log.h" 26 #include "net/log/net_log.h"
27 #include "net/log/net_log_event_type.h"
28 #include "net/log/net_log_source_type.h"
27 #include "net/socket/socket_descriptor.h" 29 #include "net/socket/socket_descriptor.h"
28 #include "net/udp/udp_net_log_parameters.h" 30 #include "net/udp/udp_net_log_parameters.h"
29 31
30 namespace { 32 namespace {
31 33
32 const int kBindRetries = 10; 34 const int kBindRetries = 10;
33 const int kPortStart = 1024; 35 const int kPortStart = 1024;
34 const int kPortEnd = 65535; 36 const int kPortEnd = 65535;
35 37
36 } // namespace 38 } // namespace
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 is_connected_(false), 250 is_connected_(false),
249 socket_options_(SOCKET_OPTION_MULTICAST_LOOP), 251 socket_options_(SOCKET_OPTION_MULTICAST_LOOP),
250 multicast_interface_(0), 252 multicast_interface_(0),
251 multicast_time_to_live_(1), 253 multicast_time_to_live_(1),
252 bind_type_(bind_type), 254 bind_type_(bind_type),
253 rand_int_cb_(rand_int_cb), 255 rand_int_cb_(rand_int_cb),
254 use_non_blocking_io_(false), 256 use_non_blocking_io_(false),
255 read_iobuffer_len_(0), 257 read_iobuffer_len_(0),
256 write_iobuffer_len_(0), 258 write_iobuffer_len_(0),
257 recv_from_address_(NULL), 259 recv_from_address_(NULL),
258 net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_UDP_SOCKET)), 260 net_log_(BoundNetLog::Make(net_log, NetLogSourceType::UDP_SOCKET)),
259 qos_handle_(NULL), 261 qos_handle_(NULL),
260 qos_flow_id_(0) { 262 qos_flow_id_(0) {
261 EnsureWinsockInit(); 263 EnsureWinsockInit();
262 net_log_.BeginEvent(NetLog::TYPE_SOCKET_ALIVE, 264 net_log_.BeginEvent(NetLogEventType::SOCKET_ALIVE,
263 source.ToEventParametersCallback()); 265 source.ToEventParametersCallback());
264 if (bind_type == DatagramSocket::RANDOM_BIND) 266 if (bind_type == DatagramSocket::RANDOM_BIND)
265 DCHECK(!rand_int_cb.is_null()); 267 DCHECK(!rand_int_cb.is_null());
266 } 268 }
267 269
268 UDPSocketWin::~UDPSocketWin() { 270 UDPSocketWin::~UDPSocketWin() {
269 Close(); 271 Close();
270 net_log_.EndEvent(NetLog::TYPE_SOCKET_ALIVE); 272 net_log_.EndEvent(NetLogEventType::SOCKET_ALIVE);
271 } 273 }
272 274
273 int UDPSocketWin::Open(AddressFamily address_family) { 275 int UDPSocketWin::Open(AddressFamily address_family) {
274 DCHECK(CalledOnValidThread()); 276 DCHECK(CalledOnValidThread());
275 DCHECK_EQ(socket_, INVALID_SOCKET); 277 DCHECK_EQ(socket_, INVALID_SOCKET);
276 278
277 addr_family_ = ConvertAddressFamily(address_family); 279 addr_family_ = ConvertAddressFamily(address_family);
278 socket_ = CreatePlatformSocket(addr_family_, SOCK_DGRAM, IPPROTO_UDP); 280 socket_ = CreatePlatformSocket(addr_family_, SOCK_DGRAM, IPPROTO_UDP);
279 if (socket_ == INVALID_SOCKET) 281 if (socket_ == INVALID_SOCKET)
280 return MapSystemError(WSAGetLastError()); 282 return MapSystemError(WSAGetLastError());
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 350
349 // TODO(szym): Simplify. http://crbug.com/126152 351 // TODO(szym): Simplify. http://crbug.com/126152
350 if (!local_address_.get()) { 352 if (!local_address_.get()) {
351 SockaddrStorage storage; 353 SockaddrStorage storage;
352 if (getsockname(socket_, storage.addr, &storage.addr_len)) 354 if (getsockname(socket_, storage.addr, &storage.addr_len))
353 return MapSystemError(WSAGetLastError()); 355 return MapSystemError(WSAGetLastError());
354 std::unique_ptr<IPEndPoint> local_address(new IPEndPoint()); 356 std::unique_ptr<IPEndPoint> local_address(new IPEndPoint());
355 if (!local_address->FromSockAddr(storage.addr, storage.addr_len)) 357 if (!local_address->FromSockAddr(storage.addr, storage.addr_len))
356 return ERR_ADDRESS_INVALID; 358 return ERR_ADDRESS_INVALID;
357 local_address_.reset(local_address.release()); 359 local_address_.reset(local_address.release());
358 net_log_.AddEvent(NetLog::TYPE_UDP_LOCAL_ADDRESS, 360 net_log_.AddEvent(NetLogEventType::UDP_LOCAL_ADDRESS,
359 CreateNetLogUDPConnectCallback( 361 CreateNetLogUDPConnectCallback(
360 local_address_.get(), 362 local_address_.get(),
361 NetworkChangeNotifier::kInvalidNetworkHandle)); 363 NetworkChangeNotifier::kInvalidNetworkHandle));
362 } 364 }
363 365
364 *address = *local_address_; 366 *address = *local_address_;
365 return OK; 367 return OK;
366 } 368 }
367 369
368 int UDPSocketWin::Read(IOBuffer* buf, 370 int UDPSocketWin::Read(IOBuffer* buf,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 425
424 if (address) 426 if (address)
425 send_to_address_.reset(new IPEndPoint(*address)); 427 send_to_address_.reset(new IPEndPoint(*address));
426 write_callback_ = callback; 428 write_callback_ = callback;
427 return ERR_IO_PENDING; 429 return ERR_IO_PENDING;
428 } 430 }
429 431
430 int UDPSocketWin::Connect(const IPEndPoint& address) { 432 int UDPSocketWin::Connect(const IPEndPoint& address) {
431 DCHECK_NE(socket_, INVALID_SOCKET); 433 DCHECK_NE(socket_, INVALID_SOCKET);
432 net_log_.BeginEvent( 434 net_log_.BeginEvent(
433 NetLog::TYPE_UDP_CONNECT, 435 NetLogEventType::UDP_CONNECT,
434 CreateNetLogUDPConnectCallback( 436 CreateNetLogUDPConnectCallback(
435 &address, NetworkChangeNotifier::kInvalidNetworkHandle)); 437 &address, NetworkChangeNotifier::kInvalidNetworkHandle));
436 int rv = InternalConnect(address); 438 int rv = InternalConnect(address);
437 net_log_.EndEventWithNetErrorCode(NetLog::TYPE_UDP_CONNECT, rv); 439 net_log_.EndEventWithNetErrorCode(NetLogEventType::UDP_CONNECT, rv);
438 is_connected_ = (rv == OK); 440 is_connected_ = (rv == OK);
439 return rv; 441 return rv;
440 } 442 }
441 443
442 int UDPSocketWin::InternalConnect(const IPEndPoint& address) { 444 int UDPSocketWin::InternalConnect(const IPEndPoint& address) {
443 DCHECK(!is_connected()); 445 DCHECK(!is_connected());
444 DCHECK(!remote_address_.get()); 446 DCHECK(!remote_address_.get());
445 447
446 int rv = 0; 448 int rv = 0;
447 if (bind_type_ == DatagramSocket::RANDOM_BIND) { 449 if (bind_type_ == DatagramSocket::RANDOM_BIND) {
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 return; 696 return;
695 bool watched = 697 bool watched =
696 read_write_watcher_.StartWatchingOnce(read_write_event_.Get(), this); 698 read_write_watcher_.StartWatchingOnce(read_write_event_.Get(), this);
697 DCHECK(watched); 699 DCHECK(watched);
698 } 700 }
699 701
700 void UDPSocketWin::LogRead(int result, 702 void UDPSocketWin::LogRead(int result,
701 const char* bytes, 703 const char* bytes,
702 const IPEndPoint* address) const { 704 const IPEndPoint* address) const {
703 if (result < 0) { 705 if (result < 0) {
704 net_log_.AddEventWithNetErrorCode(NetLog::TYPE_UDP_RECEIVE_ERROR, result); 706 net_log_.AddEventWithNetErrorCode(NetLogEventType::UDP_RECEIVE_ERROR,
707 result);
705 return; 708 return;
706 } 709 }
707 710
708 if (net_log_.IsCapturing()) { 711 if (net_log_.IsCapturing()) {
709 net_log_.AddEvent( 712 net_log_.AddEvent(
710 NetLog::TYPE_UDP_BYTES_RECEIVED, 713 NetLogEventType::UDP_BYTES_RECEIVED,
711 CreateNetLogUDPDataTranferCallback(result, bytes, address)); 714 CreateNetLogUDPDataTranferCallback(result, bytes, address));
712 } 715 }
713 716
714 NetworkActivityMonitor::GetInstance()->IncrementBytesReceived(result); 717 NetworkActivityMonitor::GetInstance()->IncrementBytesReceived(result);
715 } 718 }
716 719
717 void UDPSocketWin::LogWrite(int result, 720 void UDPSocketWin::LogWrite(int result,
718 const char* bytes, 721 const char* bytes,
719 const IPEndPoint* address) const { 722 const IPEndPoint* address) const {
720 if (result < 0) { 723 if (result < 0) {
721 net_log_.AddEventWithNetErrorCode(NetLog::TYPE_UDP_SEND_ERROR, result); 724 net_log_.AddEventWithNetErrorCode(NetLogEventType::UDP_SEND_ERROR, result);
722 return; 725 return;
723 } 726 }
724 727
725 if (net_log_.IsCapturing()) { 728 if (net_log_.IsCapturing()) {
726 net_log_.AddEvent( 729 net_log_.AddEvent(
727 NetLog::TYPE_UDP_BYTES_SENT, 730 NetLogEventType::UDP_BYTES_SENT,
728 CreateNetLogUDPDataTranferCallback(result, bytes, address)); 731 CreateNetLogUDPDataTranferCallback(result, bytes, address));
729 } 732 }
730 733
731 NetworkActivityMonitor::GetInstance()->IncrementBytesSent(result); 734 NetworkActivityMonitor::GetInstance()->IncrementBytesSent(result);
732 } 735 }
733 736
734 int UDPSocketWin::InternalRecvFromOverlapped(IOBuffer* buf, 737 int UDPSocketWin::InternalRecvFromOverlapped(IOBuffer* buf,
735 int buf_len, 738 int buf_len,
736 IPEndPoint* address) { 739 IPEndPoint* address) {
737 DCHECK(!core_->read_iobuffer_.get()); 740 DCHECK(!core_->read_iobuffer_.get());
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 void UDPSocketWin::DetachFromThread() { 1191 void UDPSocketWin::DetachFromThread() {
1189 base::NonThreadSafe::DetachFromThread(); 1192 base::NonThreadSafe::DetachFromThread();
1190 } 1193 }
1191 1194
1192 void UDPSocketWin::UseNonBlockingIO() { 1195 void UDPSocketWin::UseNonBlockingIO() {
1193 DCHECK(!core_); 1196 DCHECK(!core_);
1194 use_non_blocking_io_ = true; 1197 use_non_blocking_io_ = true;
1195 } 1198 }
1196 1199
1197 } // namespace net 1200 } // namespace net
OLDNEW
« no previous file with comments | « net/udp/udp_socket_unittest.cc ('k') | net/url_request/sdch_dictionary_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698