Index: runtime/bin/socket_win.cc |
=================================================================== |
--- runtime/bin/socket_win.cc (revision 19251) |
+++ runtime/bin/socket_win.cc (working copy) |
@@ -288,4 +288,26 @@ |
client_socket->Close(); |
} |
+ |
+static bool SetBlockingHelper(intptr_t fd, bool blocking) { |
+ SocketHandle* handle = reinterpret_cast<SocketHandle*>(fd); |
+ u_long iMode = blocking ? 0 : 1; |
+ int status = ioctlsocket(handle->socket(), FIONBIO, &iMode); |
+ if (status != NO_ERROR) { |
+ Log::PrintErr("ioctlsocket FIONBIO failed: %d\n", status); |
+ return false; |
+ } |
+ return true; |
+} |
+ |
+ |
+bool Socket::SetNonBlocking(intptr_t fd) { |
+ return SetBlockingHelper(fd, false); |
+} |
+ |
+ |
+bool Socket::SetBlocking(intptr_t fd) { |
+ return SetBlockingHelper(fd, true); |
+} |
+ |
#endif // defined(TARGET_OS_WINDOWS) |