| 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 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 // Completing asynchronously. | 285 // Completing asynchronously. |
| 286 pending_read_ = buffer; | 286 pending_read_ = buffer; |
| 287 return true; | 287 return true; |
| 288 } | 288 } |
| 289 OverlappedBuffer::DisposeBuffer(buffer); | 289 OverlappedBuffer::DisposeBuffer(buffer); |
| 290 HandleIssueError(); | 290 HandleIssueError(); |
| 291 return false; | 291 return false; |
| 292 } else { | 292 } else { |
| 293 // Completing asynchronously through thread. | 293 // Completing asynchronously through thread. |
| 294 pending_read_ = buffer; | 294 pending_read_ = buffer; |
| 295 int result = dart::Thread::Start(ReadFileThread, | 295 int result = Thread::Start(ReadFileThread, |
| 296 reinterpret_cast<uword>(this)); | 296 reinterpret_cast<uword>(this)); |
| 297 if (result != 0) { | 297 if (result != 0) { |
| 298 FATAL1("Failed to start read file thread %d", result); | 298 FATAL1("Failed to start read file thread %d", result); |
| 299 } | 299 } |
| 300 return true; | 300 return true; |
| 301 } | 301 } |
| 302 } | 302 } |
| 303 | 303 |
| 304 | 304 |
| 305 bool Handle::IssueRecvFrom() { | 305 bool Handle::IssueRecvFrom() { |
| (...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 // not available as a RawSocket, but only wrapped in a Socket. | 740 // not available as a RawSocket, but only wrapped in a Socket. |
| 741 // Note that we return '0', unless a thread have already completed a write. | 741 // Note that we return '0', unless a thread have already completed a write. |
| 742 MonitorLocker locker(write_monitor_); | 742 MonitorLocker locker(write_monitor_); |
| 743 if (thread_wrote_ > 0) { | 743 if (thread_wrote_ > 0) { |
| 744 if (num_bytes > thread_wrote_) num_bytes = thread_wrote_; | 744 if (num_bytes > thread_wrote_) num_bytes = thread_wrote_; |
| 745 thread_wrote_ -= num_bytes; | 745 thread_wrote_ -= num_bytes; |
| 746 return num_bytes; | 746 return num_bytes; |
| 747 } | 747 } |
| 748 if (!write_thread_exists_) { | 748 if (!write_thread_exists_) { |
| 749 write_thread_exists_ = true; | 749 write_thread_exists_ = true; |
| 750 int result = dart::Thread::Start(WriteFileThread, | 750 int result = Thread::Start(WriteFileThread, |
| 751 reinterpret_cast<uword>(this)); | 751 reinterpret_cast<uword>(this)); |
| 752 if (result != 0) { | 752 if (result != 0) { |
| 753 FATAL1("Failed to start write file thread %d", result); | 753 FATAL1("Failed to start write file thread %d", result); |
| 754 } | 754 } |
| 755 while (!write_thread_running_) { | 755 while (!write_thread_running_) { |
| 756 // Wait until we the thread is running. | 756 // Wait until we the thread is running. |
| 757 locker.Wait(Monitor::kNoTimeout); | 757 locker.Wait(Monitor::kNoTimeout); |
| 758 } | 758 } |
| 759 } | 759 } |
| 760 // Only queue up to INT_MAX bytes. | 760 // Only queue up to INT_MAX bytes. |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1344 delete msg; | 1344 delete msg; |
| 1345 } else { | 1345 } else { |
| 1346 handler_impl->HandleIOCompletion(bytes, key, overlapped); | 1346 handler_impl->HandleIOCompletion(bytes, key, overlapped); |
| 1347 } | 1347 } |
| 1348 } | 1348 } |
| 1349 delete handler; | 1349 delete handler; |
| 1350 } | 1350 } |
| 1351 | 1351 |
| 1352 | 1352 |
| 1353 void EventHandlerImplementation::Start(EventHandler* handler) { | 1353 void EventHandlerImplementation::Start(EventHandler* handler) { |
| 1354 int result = dart::Thread::Start(EventHandlerEntry, | 1354 int result = Thread::Start(EventHandlerEntry, |
| 1355 reinterpret_cast<uword>(handler)); | 1355 reinterpret_cast<uword>(handler)); |
| 1356 if (result != 0) { | 1356 if (result != 0) { |
| 1357 FATAL1("Failed to start event handler thread %d", result); | 1357 FATAL1("Failed to start event handler thread %d", result); |
| 1358 } | 1358 } |
| 1359 | 1359 |
| 1360 // Initialize Winsock32 | 1360 // Initialize Winsock32 |
| 1361 if (!Socket::Initialize()) { | 1361 if (!Socket::Initialize()) { |
| 1362 FATAL("Failed to initialized Windows sockets"); | 1362 FATAL("Failed to initialized Windows sockets"); |
| 1363 } | 1363 } |
| 1364 } | 1364 } |
| 1365 | 1365 |
| 1366 | 1366 |
| 1367 void EventHandlerImplementation::Shutdown() { | 1367 void EventHandlerImplementation::Shutdown() { |
| 1368 SendData(kShutdownId, 0, 0); | 1368 SendData(kShutdownId, 0, 0); |
| 1369 } | 1369 } |
| 1370 | 1370 |
| 1371 } // namespace bin | 1371 } // namespace bin |
| 1372 } // namespace dart | 1372 } // namespace dart |
| 1373 | 1373 |
| 1374 #endif // defined(TARGET_OS_WINDOWS) | 1374 #endif // defined(TARGET_OS_WINDOWS) |
| OLD | NEW |