Move Buffer into own module
authorRyan Dahl <ry@tinyclouds.org>
Sat, 20 Mar 2010 03:50:29 +0000 (20:50 -0700)
committerRyan Dahl <ry@tinyclouds.org>
Sat, 20 Mar 2010 03:58:24 +0000 (20:58 -0700)
lib/buffer.js [new file with mode: 0644]
lib/net.js
src/node.cc
test/disabled/test-net-fd-passing.js
test/fixtures/net-fd-passing-receiver.js
test/simple/test-buffer.js
test/simple/test-http-parser.js
test/simple/test-net-pingpong.js

diff --git a/lib/buffer.js b/lib/buffer.js
new file mode 100644 (file)
index 0000000..6b570ee
--- /dev/null
@@ -0,0 +1,20 @@
+var Buffer = process.binding('buffer').Buffer;
+
+exports.Buffer = Buffer;
+
+Buffer.prototype.toString = function () {
+  return this.utf8Slice(0, this.length);
+};
+
+Buffer.prototype.toJSON = function () {
+  return this.utf8Slice(0, this.length);
+  /*
+  var s = "";
+  for (var i = 0; i < this.length; i++) {
+    s += this[i].toString(16) + " ";
+  }
+  return s;
+  */
+};
+
+
index 72618e1..b5951ac 100644 (file)
@@ -18,7 +18,7 @@ var binding = process.binding('net');
 // represent buffer.used) that can be seeked around would be easier. I'm not
 // yet convinced that every use-case can be fit into that abstraction, so
 // waiting to implement it until I get more experience with this.
-var Buffer      = process.Buffer;
+var Buffer = require('buffer').Buffer;
 
 var IOWatcher   = process.IOWatcher;
 var assert      = process.assert;
index 3fb9f80..5f98e7d 100644 (file)
@@ -1176,6 +1176,15 @@ static Handle<Value> Binding(const Arguments& args) {
       binding_cache->Set(module, exports);
     }
 
+  } else if (!strcmp(*module_v, "buffer")) {
+    if (binding_cache->Has(module)) {
+      exports = binding_cache->Get(module)->ToObject();
+    } else {
+      exports = Object::New();
+      Buffer::Initialize(exports);
+      binding_cache->Set(module, exports);
+    }
+
   } else if (!strcmp(*module_v, "natives")) {
     if (binding_cache->Has(module)) {
       exports = binding_cache->Get(module)->ToObject();
@@ -1184,6 +1193,7 @@ static Handle<Value> Binding(const Arguments& args) {
       // Explicitly define native sources.
       // TODO DRY/automate this?
       exports->Set(String::New("assert"),       String::New(native_assert));
+      exports->Set(String::New("buffer"),       String::New(native_buffer));
       exports->Set(String::New("child_process"),String::New(native_child_process));
       exports->Set(String::New("dns"),          String::New(native_dns));
       exports->Set(String::New("events"),       String::New(native_events));
@@ -1301,7 +1311,6 @@ static void Load(int argc, char *argv[]) {
 
 
   // Initialize the C++ modules..................filename of module
-  Buffer::Initialize(process);                 // buffer.cc
   IOWatcher::Initialize(process);              // io_watcher.cc
   IdleWatcher::Initialize(process);            // idle_watcher.cc
   Timer::Initialize(process);                  // timer.cc
index 1cf577b..3d16ff6 100644 (file)
@@ -1,10 +1,6 @@
 process.mixin(require("../common"));
 net = require("net");
 
-process.Buffer.prototype.toString = function () {
-  return this.utf8Slice(0, this.length);
-};
-
 var tests_run = 0;
 
 function fdPassingTest(path, port) {
index be29a28..bcaf9e1 100644 (file)
@@ -1,11 +1,6 @@
 process.mixin(require("../common"));
 net = require("net");
 
-process.Buffer.prototype.toString = function () {
-  return this.utf8Slice(0, this.length);
-};
-
-
 path = process.ARGV[2];
 greeting = process.ARGV[3];
 
index a069fac..d175c4d 100644 (file)
@@ -1,8 +1,9 @@
 require("../common");
 assert = require("assert");
 
+var Buffer = require('buffer').Buffer;
 
-var b = new process.Buffer(1024);
+var b = new Buffer(1024);
 
 puts("b.length == " + b.length);
 assert.equal(1024, b.length);
@@ -52,7 +53,7 @@ for (var j = 0; j < 100; j++) {
 
 // unpack
 
-var b = new process.Buffer(10);
+var b = new Buffer(10);
 b[0] = 0x00;
 b[1] = 0x01;
 b[2] = 0x03;
index 6ad6510..e524cd0 100644 (file)
@@ -9,7 +9,8 @@ var HTTPParser = process.binding('http_parser').HTTPParser;
 
 var parser = new HTTPParser("request");
 
-var buffer = new process.Buffer(1024);
+var Buffer = require('buffer').Buffer;
+var buffer = new Buffer(1024);
 
 var request = "GET /hello HTTP/1.1\r\n\r\n";
 
index 860b200..ed8cfeb 100644 (file)
@@ -2,10 +2,6 @@ require("../common");
 
 net = require("net");
 
-process.Buffer.prototype.toString = function () {
-  return this.utf8Slice(0, this.length);
-};
-
 var tests_run = 0;
 
 function pingPongTest (port, host) {