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

Unified Diff: frog/lib/node/net.dart

Issue 9034014: Add support for the node net module. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: frog/lib/node/net.dart
===================================================================
--- frog/lib/node/net.dart (revision 0)
+++ frog/lib/node/net.dart (revision 0)
@@ -0,0 +1,231 @@
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#library('net');
+#import('node.dart');
+
+class net native "require('net')" {
+ static Server createServer([ServerConnectionListener connectionListener,
+ Map options]) native;
+
+ static Socket createConnection(int port, [String hostName,
+ SocketConnectListener connectListener]) native;
+
+ static Socket createUnixConnection(String path,
+ [SocketConnectListener connectListener])
+ native "return this.createConnection(path,connectListener)";
+
+ static int isIP(String input) native;
+ static bool isIPv4(String input) native;
+ static bool isIPv6(String input) native;
+}
+
+typedef void ServerListeningListener();
+typedef void ServerConnectionListener(Socket socket);
+typedef void ServerCloseListener();
+typedef void ServerErrorListener(Error e);
+
+// TODO(jackpal): resolve name conflict with http.Server. Maybe both should go
+// into their own libraries.
+
+class Server implements EventEmitter native "require('net').Server" {
+ // EventEmitter
+ void removeAllListeners(String event) native;
+ void setMaxListeners(num n) native;
+ var _listeners(String key)
+ native "return this.listeners(key);";
+
+ // event 'listening'
+ void emitListening()
+ native "this.emit('listening');";
+ void addListenerListening(ServerListeningListener listener)
+ native "this.addListener('listening', listener);";
+ void onListening(ServerListeningListener listener)
+ native "this.on('listening', listener);";
+ void onceListening(ServerListeningListener listener)
+ native "this.once('listening', listener);";
+ void removeListenerListening(ServerListeningListener listener)
+ native "this.removeListener('listening', listener);";
+ List<ServerListeningListener> listenersListening()
+ => new _NativeListPrimitiveElement<ServerListeningListener>(
+ _listeners('listening'));
+
+ // event 'connection'
+ void emitConnection()
+ native "this.emit('connection');";
+ void addListenerConnection(ServerConnectionListener listener)
+ native "this.addListener('connection', listener);";
+ void onConnection(ServerConnectionListener listener)
+ native "this.on('connection', listener);";
+ void onceConnection(ServerConnectionListener listener)
+ native "this.once('connection', listener);";
+ void removeListenerConnection(ServerConnectionListener listener)
+ native "this.removeListener('connection', listener);";
+ List<ServerConnectionListener> listenersConnection()
+ => new _NativeListPrimitiveElement<ServerConnectionListener>(
+ _listeners('connection'));
+
+ // event 'close'
+ void emitClose()
+ native "this.emit('close');";
+ void addListenerClose(ServerCloseListener listener)
+ native "this.addListener('close', listener);";
+ void onClose(ServerCloseListener listener)
+ native "this.on('close', listener);";
+ void onceClose(ServerCloseListener listener)
+ native "this.once('close', listener);";
+ void removeListenerClose(ServerCloseListener listener)
+ native "this.removeListener('close', listener);";
+ List<ServerCloseListener> listenersClose()
+ => new _NativeListPrimitiveElement<ServerCloseListener>(
+ _listeners('close'));
+
+ // event 'error'
+ void emitError()
+ native "this.emit('error');";
+ void addListenerError(ServerErrorListener listener)
+ native "this.addListener('error', listener);";
+ void onError(ServerErrorListener listener)
+ native "this.on('error', listener);";
+ void onceError(ServerErrorListener listener)
+ native "this.once('error', listener);";
+ void removeListenerError(ServerErrorListener listener)
+ native "this.removeListener('error', listener);";
+ List<ServerErrorListener> listenersError()
+ => new _NativeListPrimitiveElement<ServerErrorListener>(
+ _listeners('error'));
+
+ void listen(int port, [String host,
+ ServerListeningListener listeningListener]) native;
+ void listenUnix(String path,
+ [ServerListeningListener listeningListener])
+ native "this.listen(path, listeningListener);";
+ void pause([int msecs]) native;
+ void close() native;
+ String address() native;
+ int maxConnections;
+ int connections;
+}
+
+typedef void SocketConnectListener();
+typedef void SocketTimeoutListener();
+typedef void SocketCloseListener(bool had_error);
+
+class Socket implements ReadWriteStream native "require('net').Socket" {
+ // EventEmitter
+ void removeAllListeners(String event) native;
+ void setMaxListeners(num n) native;
+ var _listeners(String key)
+ native "return this.listeners(key);";
+
+ // CommonStream
+
+ // Error event
+ void emitError(Error error)
+ native "this.emit('error', error);";
+ void addListenerError(StreamErrorListener listener)
+ native "this.addListener('error', listener);";
+ void onError(StreamErrorListener listener)
+ native "this.on('error', listener);";
+ void onceError(StreamErrorListener listener)
+ native "this.once('error', listener);";
+ void removeListenerError(StreamErrorListener listener)
+ native "this.removeListener('error', listener);";
+ List<StreamErrorListener> listenersError()
+ => new _NativeListPrimitiveElement<StreamErrorListener>(
+ _listeners('error'));
+
+ // Close event
+ void emitClose()
+ native "this.emit('close');";
+ void addListenerClose(StreamCloseListener listener)
+ native "this.addListener('close', listener);";
+ void onClose(StreamCloseListener listener)
+ native "this.on('close', listener);";
+ void onceClose(StreamCloseListener listener)
+ native "this.once('close', listener);";
+ void removeListenerClose(StreamCloseListener listener)
+ native "this.removeListener('close', listener);";
+ List<StreamCloseListener> listenersClose()
+ => new _NativeListPrimitiveElement<StreamCloseListener>(
+ _listeners('close'));
+
+ // ReadableStream
+
+ // Data event
+ void emitData(var data)
+ native "this.emit('data', data);";
+ void addListenerData(ReadableStreamDataListener listener)
+ native "this.addListener('data', listener);";
+ void onData(ReadableStreamDataListener listener)
+ native "this.on('data', listener);";
+ void onceData(ReadableStreamDataListener listener)
+ native "this.once('data', listener);";
+ void removeListenerData(ReadableStreamDataListener listener)
+ native "this.removeListener('data', listener);";
+ List<ReadableStreamDataListener> listenersData()
+ => new _NativeListPrimitiveElement<ReadableStreamDataListener>(
+ _listeners('data'));
+
+ // End event
+ void emitEnd()
+ native "this.emit('end');";
+ void addListenerEnd(ReadableStreamEndListener listener)
+ native "this.addListener('end', listener);";
+ void onEnd(ReadableStreamEndListener listener)
+ native "this.on('end', listener);";
+ void onceEnd(ReadableStreamEndListener listener)
+ native "this.once('end', listener);";
+ void removeListenerEnd(ReadableStreamEndListener listener)
+ native "this.removeListener('end', listener);";
+ List<ReadableStreamEndListener> listenersEnd()
+ => new _NativeListPrimitiveElement<ReadableStreamEndListener>(
+ _listeners('end'));
+
+ bool readable;
+ void setEncoding(String encoding) native;
+ void pause() native;
+ void resume() native;
+ void destroy() native;
+ void destroySoon() native;
+ WritableStream pipe(WritableStream destination, [Map options]) native;
+
+ // WritableStream
+
+ // Drain event
+ void emitDrain()
+ native "this.emit('drain');";
+ void addListenerDrain(WritableStreamDrainListener listener)
+ native "this.addListener('drain', listener);";
+ void onDrain(WritableStreamDrainListener listener)
+ native "this.on('drain', listener);";
+ void onceDrain(WritableStreamDrainListener listener)
+ native "this.once('drain', listener);";
+ void removeListenerDrain(WritableStreamDrainListener listener)
+ native "this.removeListener('drain', listener);";
+ List<WritableStreamDrainListener> listenersDrain()
+ => new _NativeListPrimitiveElement<WritableStreamDrainListener>(
+ _listeners('drain'));
+
+ // Pipe event
+ void emitPipe(ReadableStream src)
+ native "this.emit('pipe', src);";
+ void addListenerPipe(WritableStreamPipeListener listener)
+ native "this.addListener('pipe', listener);";
+ void onPipe(WritableStreamPipeListener listener)
+ native "this.on('pipe', listener);";
+ void oncePipe(WritableStreamPipeListener listener)
+ native "this.once('pipe', listener);";
+ void removeListenerPipe(WritableStreamPipeListener listener)
+ native "this.removeListener('pipe', listener);";
+ List<WritableStreamPipeListener> listenersPipe()
+ => new _NativeListPrimitiveElement<WritableStreamPipeListener>(
+ _listeners('pipe'));
+
+ bool writable;
+ bool write(String string, [String encoding, int fd]) native;
+ bool writeBuffer(Buffer buffer) native;
+ void end([String string, String encoding]) native;
+ void endBuffer(Buffer buffer) native "this.end(buffer);";
+}

Powered by Google App Engine
This is Rietveld 408576698