| 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 #if !defined(DART_IO_DISABLED) | 5 #if !defined(DART_IO_DISABLED) |
| 6 | 6 |
| 7 #include "platform/globals.h" | 7 #include "platform/globals.h" |
| 8 #if defined(TARGET_OS_WINDOWS) | 8 #if defined(TARGET_OS_WINDOWS) |
| 9 | 9 |
| 10 #include "bin/eventhandler.h" | 10 #include "bin/eventhandler.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 handle(), completion_port, reinterpret_cast<ULONG_PTR>(this), 0); | 142 handle(), completion_port, reinterpret_cast<ULONG_PTR>(this), 0); |
| 143 return (completion_port_ != NULL); | 143 return (completion_port_ != NULL); |
| 144 } | 144 } |
| 145 | 145 |
| 146 | 146 |
| 147 void Handle::Close() { | 147 void Handle::Close() { |
| 148 if (!SupportsOverlappedIO()) { | 148 if (!SupportsOverlappedIO()) { |
| 149 // If the handle uses synchronous I/O (e.g. stdin), cancel any pending | 149 // If the handle uses synchronous I/O (e.g. stdin), cancel any pending |
| 150 // operation before closing the handle, so the read thread is not blocked. | 150 // operation before closing the handle, so the read thread is not blocked. |
| 151 BOOL result = CancelIoEx(handle_, NULL); | 151 BOOL result = CancelIoEx(handle_, NULL); |
| 152 ASSERT(result); | 152 ASSERT(result || (GetLastError() == ERROR_NOT_FOUND)); |
| 153 } | 153 } |
| 154 MonitorLocker ml(monitor_); | 154 MonitorLocker ml(monitor_); |
| 155 if (!IsClosing()) { | 155 if (!IsClosing()) { |
| 156 // Close the socket and set the closing state. This close method can be | 156 // Close the socket and set the closing state. This close method can be |
| 157 // called again if this socket has pending IO operations in flight. | 157 // called again if this socket has pending IO operations in flight. |
| 158 MarkClosing(); | 158 MarkClosing(); |
| 159 // Perform handle type specific closing. | 159 // Perform handle type specific closing. |
| 160 DoClose(); | 160 DoClose(); |
| 161 } | 161 } |
| 162 ASSERT(IsHandleClosed()); | 162 ASSERT(IsHandleClosed()); |
| (...skipping 1293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1456 void EventHandlerImplementation::Shutdown() { | 1456 void EventHandlerImplementation::Shutdown() { |
| 1457 SendData(kShutdownId, 0, 0); | 1457 SendData(kShutdownId, 0, 0); |
| 1458 } | 1458 } |
| 1459 | 1459 |
| 1460 } // namespace bin | 1460 } // namespace bin |
| 1461 } // namespace dart | 1461 } // namespace dart |
| 1462 | 1462 |
| 1463 #endif // defined(TARGET_OS_WINDOWS) | 1463 #endif // defined(TARGET_OS_WINDOWS) |
| 1464 | 1464 |
| 1465 #endif // !defined(DART_IO_DISABLED) | 1465 #endif // !defined(DART_IO_DISABLED) |
| OLD | NEW |