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 |