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

Side by Side Diff: runtime/bin/socket.h

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 #ifndef RUNTIME_BIN_SOCKET_H_ 5 #ifndef RUNTIME_BIN_SOCKET_H_
6 #define RUNTIME_BIN_SOCKET_H_ 6 #define RUNTIME_BIN_SOCKET_H_
7 7
8 #if defined(DART_IO_DISABLED) 8 #if defined(DART_IO_DISABLED)
9 #error "socket.h can only be included on builds with IO enabled" 9 #error "socket.h can only be included on builds with IO enabled"
10 #endif 10 #endif
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 // deallocated either from the finalizer attached to _NativeSockets there, or 253 // deallocated either from the finalizer attached to _NativeSockets there, or
254 // from the eventhandler, whichever drops the last reference. 254 // from the eventhandler, whichever drops the last reference.
255 class Socket : public ReferenceCounted<Socket> { 255 class Socket : public ReferenceCounted<Socket> {
256 public: 256 public:
257 enum SocketRequest { 257 enum SocketRequest {
258 kLookupRequest = 0, 258 kLookupRequest = 0,
259 kListInterfacesRequest = 1, 259 kListInterfacesRequest = 1,
260 kReverseLookupRequest = 2, 260 kReverseLookupRequest = 2,
261 }; 261 };
262 262
263 enum SocketFinalizer {
264 kFinalizerNormal,
265 kFinalizerListening,
266 kFinalizerStdio,
267 };
268
263 explicit Socket(intptr_t fd); 269 explicit Socket(intptr_t fd);
264 270
265 intptr_t fd() const { return fd_; } 271 intptr_t fd() const { return fd_; }
266 void SetClosedFd(); 272 void SetClosedFd();
267 273
268 Dart_Port port() const { return port_; } 274 Dart_Port port() const { return port_; }
269 void set_port(Dart_Port port) { port_ = port; } 275 void set_port(Dart_Port port) { port_ = port; }
270 276
271 // TODO(dart:io): Convert these to instance methods where possible. 277 // TODO(dart:io): Convert these to instance methods where possible.
272 static bool Initialize(); 278 static bool Initialize();
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 OSError** os_error); 348 OSError** os_error);
343 349
344 static CObject* LookupRequest(const CObjectArray& request); 350 static CObject* LookupRequest(const CObjectArray& request);
345 static CObject* ListInterfacesRequest(const CObjectArray& request); 351 static CObject* ListInterfacesRequest(const CObjectArray& request);
346 static CObject* ReverseLookupRequest(const CObjectArray& request); 352 static CObject* ReverseLookupRequest(const CObjectArray& request);
347 353
348 static Dart_Port GetServicePort(); 354 static Dart_Port GetServicePort();
349 355
350 static void SetSocketIdNativeField(Dart_Handle handle, 356 static void SetSocketIdNativeField(Dart_Handle handle,
351 intptr_t id, 357 intptr_t id,
352 bool listening); 358 SocketFinalizer finalizer);
353 static void ReuseSocketIdNativeField(Dart_Handle handle, 359 static void ReuseSocketIdNativeField(Dart_Handle handle,
354 Socket* socket, 360 Socket* socket,
355 bool listening); 361 SocketFinalizer finalizer);
356 static Socket* GetSocketIdNativeField(Dart_Handle socket); 362 static Socket* GetSocketIdNativeField(Dart_Handle socket);
357 363
358 private: 364 private:
359 ~Socket() { ASSERT(fd_ == kClosedFd); } 365 ~Socket() { ASSERT(fd_ == kClosedFd); }
360 366
361 static const int kClosedFd = -1; 367 static const int kClosedFd = -1;
362 368
363 intptr_t fd_; 369 intptr_t fd_;
364 Dart_Port port_; 370 Dart_Port port_;
365 371
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 509
504 Mutex* mutex_; 510 Mutex* mutex_;
505 511
506 DISALLOW_COPY_AND_ASSIGN(ListeningSocketRegistry); 512 DISALLOW_COPY_AND_ASSIGN(ListeningSocketRegistry);
507 }; 513 };
508 514
509 } // namespace bin 515 } // namespace bin
510 } // namespace dart 516 } // namespace dart
511 517
512 #endif // RUNTIME_BIN_SOCKET_H_ 518 #endif // RUNTIME_BIN_SOCKET_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698