OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/socket/tcp_socket_win.h" | 5 #include "net/socket/tcp_socket_win.h" |
6 | 6 |
7 #include <mstcpip.h> | 7 #include <mstcpip.h> |
8 | 8 |
9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 | 332 |
333 int result = bind(socket_, storage.addr, storage.addr_len); | 333 int result = bind(socket_, storage.addr, storage.addr_len); |
334 if (result < 0) { | 334 if (result < 0) { |
335 PLOG(ERROR) << "bind() returned an error"; | 335 PLOG(ERROR) << "bind() returned an error"; |
336 return MapSystemError(WSAGetLastError()); | 336 return MapSystemError(WSAGetLastError()); |
337 } | 337 } |
338 | 338 |
339 return OK; | 339 return OK; |
340 } | 340 } |
341 | 341 |
| 342 int TCPSocketWin::AdoptBoundSocket(SOCKET socket) { |
| 343 DCHECK(CalledOnValidThread()); |
| 344 DCHECK_EQ(socket_, INVALID_SOCKET); |
| 345 |
| 346 socket_ = socket; |
| 347 |
| 348 if (SetNonBlocking(socket_)) { |
| 349 int result = MapSystemError(WSAGetLastError()); |
| 350 Close(); |
| 351 return result; |
| 352 } |
| 353 |
| 354 return OK; |
| 355 } |
| 356 |
342 int TCPSocketWin::Listen(int backlog) { | 357 int TCPSocketWin::Listen(int backlog) { |
343 DCHECK(CalledOnValidThread()); | 358 DCHECK(CalledOnValidThread()); |
344 DCHECK_GT(backlog, 0); | 359 DCHECK_GT(backlog, 0); |
345 DCHECK_NE(socket_, INVALID_SOCKET); | 360 DCHECK_NE(socket_, INVALID_SOCKET); |
346 DCHECK_EQ(accept_event_, WSA_INVALID_EVENT); | 361 DCHECK_EQ(accept_event_, WSA_INVALID_EVENT); |
347 | 362 |
348 accept_event_ = WSACreateEvent(); | 363 accept_event_ = WSACreateEvent(); |
349 if (accept_event_ == WSA_INVALID_EVENT) { | 364 if (accept_event_ == WSA_INVALID_EVENT) { |
350 PLOG(ERROR) << "WSACreateEvent()"; | 365 PLOG(ERROR) << "WSACreateEvent()"; |
351 return MapSystemError(WSAGetLastError()); | 366 return MapSystemError(WSAGetLastError()); |
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
994 waiting_read_ = false; | 1009 waiting_read_ = false; |
995 core_->read_iobuffer_ = NULL; | 1010 core_->read_iobuffer_ = NULL; |
996 core_->read_buffer_length_ = 0; | 1011 core_->read_buffer_length_ = 0; |
997 | 1012 |
998 DCHECK_NE(rv, ERR_IO_PENDING); | 1013 DCHECK_NE(rv, ERR_IO_PENDING); |
999 base::ResetAndReturn(&read_callback_).Run(rv); | 1014 base::ResetAndReturn(&read_callback_).Run(rv); |
1000 } | 1015 } |
1001 | 1016 |
1002 } // namespace net | 1017 } // namespace net |
1003 | 1018 |
OLD | NEW |