Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: runtime/bin/socket_win.cc

Issue 2791423002: [dart:io] Don't close stdin with a socket finalizer (Closed)
Patch Set: Windows 7 fix Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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(HOST_OS_WINDOWS) 8 #if defined(HOST_OS_WINDOWS)
9 9
10 #include "bin/socket.h" 10 #include "bin/socket.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 WORD version_requested = MAKEWORD(2, 2); 75 WORD version_requested = MAKEWORD(2, 2);
76 err = WSAStartup(version_requested, &winsock_data); 76 err = WSAStartup(version_requested, &winsock_data);
77 if (err == 0) { 77 if (err == 0) {
78 socket_initialized = true; 78 socket_initialized = true;
79 } else { 79 } else {
80 Log::PrintErr("Unable to initialize Winsock: %d\n", WSAGetLastError()); 80 Log::PrintErr("Unable to initialize Winsock: %d\n", WSAGetLastError());
81 } 81 }
82 return (err == 0); 82 return (err == 0);
83 } 83 }
84 84
85
85 intptr_t Socket::Available(intptr_t fd) { 86 intptr_t Socket::Available(intptr_t fd) {
86 ClientSocket* client_socket = reinterpret_cast<ClientSocket*>(fd); 87 ClientSocket* client_socket = reinterpret_cast<ClientSocket*>(fd);
87 return client_socket->Available(); 88 return client_socket->Available();
88 } 89 }
89 90
90 91
91 intptr_t Socket::Read(intptr_t fd, void* buffer, intptr_t num_bytes) { 92 intptr_t Socket::Read(intptr_t fd, void* buffer, intptr_t num_bytes) {
92 Handle* handle = reinterpret_cast<Handle*>(fd); 93 Handle* handle = reinterpret_cast<Handle*>(fd);
93 return handle->Read(buffer, num_bytes); 94 return handle->Read(buffer, num_bytes);
94 } 95 }
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 282
282 283
283 intptr_t Socket::GetStdioHandle(intptr_t num) { 284 intptr_t Socket::GetStdioHandle(intptr_t num) {
284 if (num != 0) { 285 if (num != 0) {
285 return -1; 286 return -1;
286 } 287 }
287 HANDLE handle = GetStdHandle(STD_INPUT_HANDLE); 288 HANDLE handle = GetStdHandle(STD_INPUT_HANDLE);
288 if (handle == INVALID_HANDLE_VALUE) { 289 if (handle == INVALID_HANDLE_VALUE) {
289 return -1; 290 return -1;
290 } 291 }
291 StdHandle* std_handle = new StdHandle(handle); 292 StdHandle* std_handle = StdHandle::Stdin(handle);
293 std_handle->Retain();
292 std_handle->MarkDoesNotSupportOverlappedIO(); 294 std_handle->MarkDoesNotSupportOverlappedIO();
293 std_handle->EnsureInitialized(EventHandler::delegate()); 295 std_handle->EnsureInitialized(EventHandler::delegate());
294 return reinterpret_cast<intptr_t>(std_handle); 296 return reinterpret_cast<intptr_t>(std_handle);
295 } 297 }
296 298
297 299
298 intptr_t ServerSocket::Accept(intptr_t fd) { 300 intptr_t ServerSocket::Accept(intptr_t fd) {
299 ListenSocket* listen_socket = reinterpret_cast<ListenSocket*>(fd); 301 ListenSocket* listen_socket = reinterpret_cast<ListenSocket*>(fd);
300 ClientSocket* client_socket = listen_socket->Accept(); 302 ClientSocket* client_socket = listen_socket->Accept();
301 if (client_socket != NULL) { 303 if (client_socket != NULL) {
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 return setsockopt(handle->socket(), proto, MCAST_LEAVE_GROUP, 683 return setsockopt(handle->socket(), proto, MCAST_LEAVE_GROUP,
682 reinterpret_cast<char*>(&mreq), sizeof(mreq)) == 0; 684 reinterpret_cast<char*>(&mreq), sizeof(mreq)) == 0;
683 } 685 }
684 686
685 } // namespace bin 687 } // namespace bin
686 } // namespace dart 688 } // namespace dart
687 689
688 #endif // defined(HOST_OS_WINDOWS) 690 #endif // defined(HOST_OS_WINDOWS)
689 691
690 #endif // !defined(DART_IO_DISABLED) 692 #endif // !defined(DART_IO_DISABLED)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698