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

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

Issue 9034014: Add support for the node net module. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: new version of minfrog 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/http.dart
===================================================================
--- frog/lib/node/http.dart (revision 0)
+++ frog/lib/node/http.dart (revision 0)
@@ -0,0 +1,556 @@
+// 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('http');
+#import('node.dart');
+#import('net.dart', prefix:'net');
+#import('url.dart');
+
+// module http
+
+class http native "require('http')" {
+ static Server createServer([ServerRequestListener listener]) native;
+ static ClientRequest request(UrlObject options, void response(ServerResponse
+ res))
+ native;
+ static ClientRequest get(UrlObject options, void response(ServerResponse res))
+ native;
+ static Agent globalAgent;
+}
+
+typedef void ServerRequestListener(
+ ServerRequest request, ServerResponse response);
+typedef void ServerConnectionListener(net.Socket socket);
+typedef void ServerCloseListener();
+typedef void ServerCheckContinueListener(
+ ServerRequest request, ServerResponse response);
+typedef void ServerUpgradeListener(
+ ServerRequest request, net.Socket socket, Buffer head);
+typedef void ServerClientErrorListener(Error exception);
+
+class Server native "require('http').Server" {
+ // Implement EventEmitter
+ void removeAllListeners(String event)
+ native "this.removeAllListeners(event);";
+ void setMaxListeners(num n)
+ native "this.setMaxListeners(n);";
+ var _listeners(String key)
+ native "return this.listeners(key);";
+
+ // request event
+ void emitRequest(ServerRequest request, ServerResponse response)
+ native "this.emit('request');";
+ void addListenerRequest(ServerRequestListener listener)
+ native "this.addListener('request', listener);";
+ void onRequest(ServerRequestListener listener)
+ native "this.on('request', listener);";
+ void onceRequest(ServerRequestListener listener)
+ native "this.once('request', listener);";
+ void removeListenerRequest(ServerRequestListener listener)
+ native "this.removeListener('request', listener);";
+ List<ServerRequestListener> listenersRequest()
+ => new _NativeListPrimitiveElement<ServerRequestListener>(
+ _listeners('request'));
+
+ // connection event
+ void emitConnection(net.Socket socket)
+ 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'));
+
+ // close event
+ 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'));
+
+ // checkContinue event
+ void emitCheckContinue(ServerRequest request, ServerResponse response)
+ native "this.emit('checkContinue');";
+ void addListenerCheckContinue(ServerCheckContinueListener listener)
+ native "this.addListener('checkContinue', listener);";
+ void onCheckContinue(ServerCheckContinueListener listener)
+ native "this.on('checkContinue', listener);";
+ void onceCheckContinue(ServerCheckContinueListener listener)
+ native "this.once('checkContinue', listener);";
+ void removeListenerCheckContinue(ServerCheckContinueListener listener)
+ native "this.removeListener('checkContinue', listener);";
+ List<ServerCheckContinueListener> listenersCheckContinue()
+ => new _NativeListPrimitiveElement<ServerCheckContinueListener>(
+ _listeners('checkContinue'));
+
+ // upgrade event
+ void emitUpgrade(ServerRequest request, net.Socket socket, Buffer head)
+ native "this.emit('upgrade');";
+ void addListenerUpgrade(ServerUpgradeListener listener)
+ native "this.addListener('upgrade', listener);";
+ void onUpgrade(ServerUpgradeListener listener)
+ native "this.on('upgrade', listener);";
+ void onceUpgrade(ServerUpgradeListener listener)
+ native "this.once('upgrade', listener);";
+ void removeListenerUpgrade(ServerUpgradeListener listener)
+ native "this.removeListener('upgrade', listener);";
+ List<ServerUpgradeListener> listenersUpgrade()
+ => new _NativeListPrimitiveElement<ServerUpgradeListener>(
+ _listeners('upgrade'));
+
+ // clientError event
+ void emitClientError(Error exception)
+ native "this.emit('clientError');";
+ void addListenerClientError(ServerClientErrorListener listener)
+ native "this.addListener('clientError', listener);";
+ void onClientError(ServerClientErrorListener listener)
+ native "this.on('clientError', listener);";
+ void onceClientError(ServerClientErrorListener listener)
+ native "this.once('clientError', listener);";
+ void removeListenerClientError(ServerClientErrorListener listener)
+ native "this.removeListener('clientError', listener);";
+ List<ServerClientErrorListener> listenersClientError()
+ => new _NativeListPrimitiveElement<ServerClientErrorListener>(
+ _listeners('clientError'));
+
+ void listen(int port, [String hostname, void callback()]) native;
+ void listenUnix(String path, [void callback()]) native;
+ void close() native;
+}
+
+typedef void ServerRequestDataListener(var chunk);
+typedef void ServerRequestEndListener();
+typedef void ServerRequestCloseListener();
+
+class ServerRequest implements EventEmitter native
+ "request('http').IncomingMessage" {
+ // EventEmitter
+ void removeAllListeners(String event)
+ native "this.removeAllListeners(event);";
+ void setMaxListeners(num n)
+ native "this.setMaxListeners(n);";
+ var _listeners(String key)
+ native "return this.listeners(key);";
+
+ // data event
+ void emitData(var chunk)
+ native "this.emit('data');";
+ void addListenerData(ServerRequestDataListener listener)
+ native "this.addListener('data', listener);";
+ void onData(ServerRequestDataListener listener)
+ native "this.on('data', listener);";
+ void onceData(ServerRequestDataListener listener)
+ native "this.once('data', listener);";
+ void removeListenerData(ServerRequestDataListener listener)
+ native "this.removeListener('data', listener);";
+ List<ServerRequestDataListener> listenersData()
+ => new _NativeListPrimitiveElement<ServerRequestDataListener>(
+ _listeners('data'));
+
+ // end event
+ void emitEnd()
+ native "this.emit('end');";
+ void addListenerEnd(ServerRequestEndListener listener)
+ native "this.addListener('end', listener);";
+ void onEnd(ServerRequestEndListener listener)
+ native "this.on('end', listener);";
+ void onceEnd(ServerRequestEndListener listener)
+ native "this.once('end', listener);";
+ void removeListenerEnd(ServerRequestEndListener listener)
+ native "this.removeListener('end', listener);";
+ List<ServerRequestEndListener> listenersEnd()
+ => new _NativeListPrimitiveElement<ServerRequestEndListener>(
+ _listeners('end'));
+
+ // close event
+ void emitClose()
+ native "this.emit('close');";
+ void addListenerClose(ServerRequestCloseListener listener)
+ native "this.addListener('close', listener);";
+ void onClose(ServerRequestCloseListener listener)
+ native "this.on('close', listener);";
+ void onceClose(ServerRequestCloseListener listener)
+ native "this.once('close', listener);";
+ void removeListenerClose(ServerRequestCloseListener listener)
+ native "this.removeListener('close', listener);";
+ List<ServerRequestCloseListener> listenersClose()
+ => new _NativeListPrimitiveElement<ServerRequestCloseListener>(
+ _listeners('close'));
+
+ final String method;
+ final String url;
+ Map<String, String> get headers()
+ => new _NativeMapPrimitiveValue<String>(_headers());
+ var _headers() native "return this.headers;";
+ final String httpVersion;
+
+ void setEncoding([String encoding]) native;
+ void pause() native;
+ void resume() native;
+ net.Socket connection;
+}
+
+class ServerResponse implements WritableStream native "http.ServerResponse" {
+ // EventEmitter
+ void removeAllListeners(String event)
+ native "this._writeStream.removeAllListeners(event);";
+ 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'));
+
+ // 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'));
+
+
+ void writeContinue() native;
+ void writeHead(int statusCode, [String reasonPhrase, Map<String,String>
+ headers])
+ native;
+ int statusCode;
+ void setHeader(String name, String value) native;
+ String getHeader(String name) native;
+ void removeHeader(String name) native;
+
+
+ void write(String data, [String encoding = 'utf8']) native;
+ void writeBuffer(Buffer data)
+ native "this.write(data);";
+
+ void addTrailers(Map<String,String> headers) native;
+
+ void end([String data, String encoding = 'utf8']) native;
+}
+
+class Agent native "require('http').Agent" {
+ int maxSockets;
+}
+
+typedef void ClientRequestResponseListener(ClientResponse response);
+typedef void ClientRequestSocketListener(net.Socket socket);
+typedef void ClientRequestUpgradeListener(
+ ClientResponse response, net.Socket socket, Buffer head);
+typedef void ClientRequestContinueListener();
+
+class ClientRequest implements WritableStream native
+ "require('http').ClientRequest" {
+ // EventEmitter
+ void removeAllListeners(String event)
+ native "this._writeStream.removeAllListeners(event);";
+ 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'));
+
+ // 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'));
+
+
+ // ClientRequest specific events
+
+ // response event
+ void emitResponse(ClientResponse response)
+ native "this.emit('response');";
+ void addListenerResponse(ClientRequestResponseListener listener)
+ native "this.addListener('response', listener);";
+ void onResponse(ClientRequestResponseListener listener)
+ native "this.on('response', listener);";
+ void onceResponse(ClientRequestResponseListener listener)
+ native "this.once('response', listener);";
+ void removeListenerResponse(ClientRequestResponseListener listener)
+ native "this.removeListener('response', listener);";
+ List<ClientRequestResponseListener> listenersResponse()
+ => new _NativeListPrimitiveElement<ClientRequestResponseListener>(
+ _listeners('response'));
+
+ // socket event
+ void emitSocket(net.Socket socket)
+ native "this.emit('socket');";
+ void addListenerSocket(ClientRequestSocketListener listener)
+ native "this.addListener('socket', listener);";
+ void onSocket(ClientRequestSocketListener listener)
+ native "this.on('socket', listener);";
+ void onceSocket(ClientRequestSocketListener listener)
+ native "this.once('socket', listener);";
+ void removeListenerSocket(ClientRequestSocketListener listener)
+ native "this.removeListener('socket', listener);";
+ List<ClientRequestSocketListener> listenersSocket()
+ => new _NativeListPrimitiveElement<ClientRequestSocketListener>(
+ _listeners('socket'));
+
+ // upgrade event
+ void emitUpgrade(ClientResponse response, net.Socket socket, Buffer head)
+ native "this.emit('upgrade');";
+ void addListenerUpgrade(ClientRequestUpgradeListener listener)
+ native "this.addListener('upgrade', listener);";
+ void onUpgrade(ClientRequestUpgradeListener listener)
+ native "this.on('upgrade', listener);";
+ void onceUpgrade(ClientRequestUpgradeListener listener)
+ native "this.once('upgrade', listener);";
+ void removeListenerUpgrade(ClientRequestUpgradeListener listener)
+ native "this.removeListener('upgrade', listener);";
+ List<ClientRequestUpgradeListener> listenersUpgrade()
+ => new _NativeListPrimitiveElement<ClientRequestUpgradeListener>(
+ _listeners('upgrade'));
+
+ // continue event
+ void emitContinue()
+ native "this.emit('continue');";
+ void addListenerContinue(ClientRequestContinueListener listener)
+ native "this.addListener('continue', listener);";
+ void onContinue(ClientRequestContinueListener listener)
+ native "this.on('continue', listener);";
+ void onceContinue(ClientRequestContinueListener listener)
+ native "this.once('continue', listener);";
+ void removeListenerContinue(ClientRequestContinueListener listener)
+ native "this.removeListener('continue', listener);";
+ List<ClientRequestContinueListener> listenersContinue()
+ => new _NativeListPrimitiveElement<ClientRequestContinueListener>(
+ _listeners('continue'));
+
+ // WritableStream methods and instance variables
+
+ bool writable;
+ bool write(String string, [String encoding='utf8', int fd]) native;
+ bool writeBuffer(Buffer buffer) native;
+ void end([String string, String encoding]) native;
+ void endBuffer(Buffer buffer) native "this.end(buffer);";
+ void destroy() native;
+ void destroySoon() native;
+
+ // ClientRequest methods
+ void abort() native;
+ void setTimeout(int timeout, void callback()) native;
+ void setNoDelay([bool noDelay]) native;
+ void setSocketKeepAlive([bool enable, int initialDelay]) native;
+}
+
+class ClientResponse implements ReadableStream native
+ "require('http').ClientResponse" {
+ // 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> listenerData()
+ => 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'));
+
+ // ReadableStream methods and instance variables
+
+ 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;
+
+ // class specific methods and instance variables
+ int statusCode;
+ String httpVersion;
+ int httpVersionMajor;
+ int httpVersionMinor;
+ Map<String, String> get headers()
+ => new _NativeMapPrimitiveValue<String>(_headers());
+ var _headers() native "return this.headers;";
+ Map<String, String> trailers()
+ => new _NativeMapPrimitiveValue<String>(_trailers());
+ var _trailers() native "return this.trailers;";
+}
« no previous file with comments | « frog/lib/node/fs.dart ('k') | frog/lib/node/net.dart » ('j') | frog/lib/node/net.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698