Browse Source

Move net2 bindings out of process

v0.7.4-release
Ryan Dahl 15 years ago
parent
commit
953fa3a5f5
  1. 4
      lib/http2.js
  2. 53
      lib/net.js
  3. 20
      src/node.cc

4
lib/http2.js

@ -2,6 +2,8 @@ var sys = require('sys');
var net = require('net');
var events = require('events');
var HTTPParser = process.binding('http_parser').HTTPParser;
var CRLF = "\r\n";
var STATUS_CODES = exports.STATUS_CODES = {
100 : 'Continue',
@ -315,7 +317,7 @@ function newParser (type) {
parser = parserFreeList.shift();
parser.reinitialize(type);
} else {
parser = new process.HTTPParser(type);
parser = new HTTPParser(type);
parser.onMessageBegin = function () {
parser.incoming = new IncomingMessage(parser.socket);

53
lib/net.js

@ -1,5 +1,7 @@
var sys = require("sys");
var fs = require("fs");
var events = require("events");
var debugLevel = 0;
if ('NODE_DEBUG' in process.ENV) debugLevel = 1;
function debug (x) {
@ -8,30 +10,33 @@ function debug (x) {
}
}
var binding = process.binding('net');
var Buffer = process.Buffer;
var IOWatcher = process.IOWatcher;
var assert = process.assert;
var socket = process.socket;
var bind = process.bind;
var connect = process.connect;
var listen = process.listen;
var accept = process.accept;
var close = process.close;
var shutdown = process.shutdown;
var read = process.read;
var recvMsg = process.recvMsg;
var sendFD = process.sendFD;
var write = process.write;
var toRead = process.toRead;
var setNoDelay = process.setNoDelay;
var socketError = process.socketError;
var getsockname = process.getsockname;
var getaddrinfo = process.getaddrinfo;
var needsLookup = process.needsLookup;
var errnoException = process.errnoException;
var EINPROGRESS = process.EINPROGRESS;
var ENOENT = process.ENOENT;
var socket = binding.socket;
var bind = binding.bind;
var connect = binding.connect;
var listen = binding.listen;
var accept = binding.accept;
var close = binding.close;
var shutdown = binding.shutdown;
var read = binding.read;
var recvMsg = binding.recvMsg;
var sendFD = binding.sendFD;
var write = binding.write;
var toRead = binding.toRead;
var setNoDelay = binding.setNoDelay;
var socketError = binding.socketError;
var getsockname = binding.getsockname;
var getaddrinfo = binding.getaddrinfo;
var needsLookup = binding.needsLookup;
var errnoException = binding.errnoException;
var EINPROGRESS = binding.EINPROGRESS;
var ENOENT = binding.ENOENT;
var END_OF_FILE = 0;
@ -357,7 +362,7 @@ function initSocket (self) {
}
function Socket (fd) {
process.EventEmitter.call(this);
events.EventEmitter.call(this);
this.fd = null;
@ -372,7 +377,7 @@ function Socket (fd) {
this.writable = true;
}
};
sys.inherits(Socket, process.EventEmitter);
sys.inherits(Socket, events.EventEmitter);
exports.Socket = Socket;
@ -750,7 +755,7 @@ Socket.prototype.close = function () {
function Server (listener) {
process.EventEmitter.call(this);
events.EventEmitter.call(this);
var self = this;
if (listener) {
@ -778,7 +783,7 @@ function Server (listener) {
}
};
}
sys.inherits(Server, process.EventEmitter);
sys.inherits(Server, events.EventEmitter);
exports.Server = Server;

20
src/node.cc

@ -1139,6 +1139,24 @@ static Handle<Value> Binding(const Arguments& args) {
binding_cache->Set(module, exports);
}
} else if (!strcmp(*module_v, "net")) {
if (binding_cache->Has(module)) {
exports = binding_cache->Get(module)->ToObject();
} else {
exports = Object::New();
InitNet2(exports);
binding_cache->Set(module, exports);
}
} else if (!strcmp(*module_v, "http_parser")) {
if (binding_cache->Has(module)) {
exports = binding_cache->Get(module)->ToObject();
} else {
exports = Object::New();
InitHttpParser(exports);
binding_cache->Set(module, exports);
}
} else if (!strcmp(*module_v, "natives")) {
if (binding_cache->Has(module)) {
exports = binding_cache->Get(module)->ToObject();
@ -1267,8 +1285,6 @@ static void Load(int argc, char *argv[]) {
IOWatcher::Initialize(process); // io_watcher.cc
IdleWatcher::Initialize(process); // idle_watcher.cc
Timer::Initialize(process); // timer.cc
InitNet2(process); // net2.cc
InitHttpParser(process); // http_parser.cc
ChildProcess::Initialize(process); // child_process.cc
DefineConstants(process); // constants.cc

Loading…
Cancel
Save