| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/globals.h" | 5 #include "platform/globals.h" |
| 6 #if defined(TARGET_OS_WINDOWS) | 6 #if defined(TARGET_OS_WINDOWS) |
| 7 | 7 |
| 8 #include "bin/eventhandler.h" | 8 #include "bin/eventhandler.h" |
| 9 | 9 |
| 10 #include <winsock2.h> // NOLINT | 10 #include <winsock2.h> // NOLINT |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 571 | 571 |
| 572 | 572 |
| 573 ClientSocket* ListenSocket::Accept() { | 573 ClientSocket* ListenSocket::Accept() { |
| 574 ScopedLock lock(this); | 574 ScopedLock lock(this); |
| 575 if (accepted_head_ == NULL) return NULL; | 575 if (accepted_head_ == NULL) return NULL; |
| 576 ClientSocket* result = accepted_head_; | 576 ClientSocket* result = accepted_head_; |
| 577 accepted_head_ = accepted_head_->next(); | 577 accepted_head_ = accepted_head_->next(); |
| 578 if (accepted_head_ == NULL) accepted_tail_ = NULL; | 578 if (accepted_head_ == NULL) accepted_tail_ = NULL; |
| 579 result->set_next(NULL); | 579 result->set_next(NULL); |
| 580 if (!IsClosing()) { | 580 if (!IsClosing()) { |
| 581 while (pending_accept_count() < 5) { | 581 if (!IssueAccept()) { |
| 582 if (!IssueAccept()) { | 582 HandleError(this); |
| 583 HandleError(this); | |
| 584 } | |
| 585 } | 583 } |
| 586 } | 584 } |
| 587 return result; | 585 return result; |
| 588 } | 586 } |
| 589 | 587 |
| 590 | 588 |
| 591 void ListenSocket::EnsureInitialized( | 589 void ListenSocket::EnsureInitialized( |
| 592 EventHandlerImplementation* event_handler) { | 590 EventHandlerImplementation* event_handler) { |
| 593 ScopedLock lock(this); | 591 ScopedLock lock(this); |
| 594 if (AcceptEx_ == NULL) { | 592 if (AcceptEx_ == NULL) { |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1033 Handle::ScopedLock lock(listen_socket); | 1031 Handle::ScopedLock lock(listen_socket); |
| 1034 | 1032 |
| 1035 // If incoming connections are requested make sure to post already | 1033 // If incoming connections are requested make sure to post already |
| 1036 // accepted connections. | 1034 // accepted connections. |
| 1037 if ((msg->data & (1 << kInEvent)) != 0) { | 1035 if ((msg->data & (1 << kInEvent)) != 0) { |
| 1038 if (listen_socket->CanAccept()) { | 1036 if (listen_socket->CanAccept()) { |
| 1039 int event_mask = (1 << kInEvent); | 1037 int event_mask = (1 << kInEvent); |
| 1040 handle->set_mask(handle->mask() & ~event_mask); | 1038 handle->set_mask(handle->mask() & ~event_mask); |
| 1041 DartUtils::PostInt32(handle->port(), event_mask); | 1039 DartUtils::PostInt32(handle->port(), event_mask); |
| 1042 } | 1040 } |
| 1043 // Always keep 5 outstanding accepts going, to enhance performance. | |
| 1044 while (listen_socket->pending_accept_count() < 5) { | |
| 1045 bool accept_success = listen_socket->IssueAccept(); | |
| 1046 if (!accept_success) { | |
| 1047 HandleError(listen_socket); | |
| 1048 break; | |
| 1049 } | |
| 1050 } | |
| 1051 } | 1041 } |
| 1052 } else { | 1042 } else { |
| 1053 handle->EnsureInitialized(this); | 1043 handle->EnsureInitialized(this); |
| 1054 | 1044 |
| 1055 Handle::ScopedLock lock(handle); | 1045 Handle::ScopedLock lock(handle); |
| 1056 | 1046 |
| 1057 // Only set mask if we turned on kInEvent or kOutEvent. | 1047 // Only set mask if we turned on kInEvent or kOutEvent. |
| 1058 if ((msg->data & ((1 << kInEvent) | (1 << kOutEvent))) != 0) { | 1048 if ((msg->data & ((1 << kInEvent) | (1 << kOutEvent))) != 0) { |
| 1059 handle->SetPortAndMask(msg->dart_port, msg->data); | 1049 handle->SetPortAndMask(msg->dart_port, msg->data); |
| 1060 } | 1050 } |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1372 | 1362 |
| 1373 | 1363 |
| 1374 void EventHandlerImplementation::Shutdown() { | 1364 void EventHandlerImplementation::Shutdown() { |
| 1375 SendData(kShutdownId, 0, 0); | 1365 SendData(kShutdownId, 0, 0); |
| 1376 } | 1366 } |
| 1377 | 1367 |
| 1378 } // namespace bin | 1368 } // namespace bin |
| 1379 } // namespace dart | 1369 } // namespace dart |
| 1380 | 1370 |
| 1381 #endif // defined(TARGET_OS_WINDOWS) | 1371 #endif // defined(TARGET_OS_WINDOWS) |
| OLD | NEW |