Skip to content

Instantly share code, notes, and snippets.

diff --git a/binding.gyp b/binding.gyp
index 379026f..0413e95 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -6,6 +6,7 @@
# Replace gyp platform with node platform, blech
['platform == "mac"', {'variables': {'platform': 'darwin'}}],
['platform == "win"', {'variables': {'platform': 'win32'}}],
+ ['platform == "solaris"', {'variables': {'platform': 'sunos'}}],
],
@laverdet
laverdet / newAndRun.diff
Created March 31, 2012 02:42
new Fiber + run() in same C++ function
diff --git a/src/fibers.cc b/src/fibers.cc
index 49a20f7..c446f9d 100644
--- a/src/fibers.cc
+++ b/src/fibers.cc
@@ -143,6 +143,42 @@ class Fiber {
}
/**
+ * Build a new fiber and immediately run it.
+ */
@laverdet
laverdet / rimraf.js
Created August 8, 2011 02:12
rimraf with futures
var path = require('path'),
fs = require('fs'),
Future = require('fibers/future');
// Create future-returning fs functions
var fs2 = {};
for (var ii in fs) {
fs2[ii] = Future.wrap(fs[ii]);
}
@laverdet
laverdet / fibonacci.js
Created August 4, 2011 05:47
Fibonacci Generator
require('fibers');
// Generator function. Returns a function which returns incrementing
// Fibonacci numbers with each call.
function Fibonacci() {
// Create a new fiber which yields sequential Fibonacci numbers
var fiber = Fiber(function() {
Fiber.yield(0); // F(0) -> 0
var prev = 0, curr = 1;
while (true) {
@laverdet
laverdet / binlog-tailer.js
Created May 6, 2011 07:56
MySQL binlog tailer
"use strict";
this.MysqlBinlogTailer = MysqlBinlogTailer;
var EventEmitter = require('events').EventEmitter;
var fs = require('fs');
var path = require('path');
/**
* Tails a Mysql binlog and emits an event for every query executed.
*/
// Bad third-party code
var fs = require('fs');
require('fibers');
function fetchSomething() { // don't do this!
var fiber = Fiber.current;
fs.readFile(__filename, 'utf8', function(err, val) {
fiber.run(val);
});
return Fiber.yield();
@laverdet
laverdet / nextTick.js
Created March 29, 2011 23:49
nextTick will ALWAYS fire before a setTimeout from the same tick
setTimeout(function() {
console.log('timeout');
}, 0);
// simulate extreme cpu load
var d = +new Date;
console.log(new Date);
while (d + 2000 > new Date);
console.log(new Date);
@laverdet
laverdet / future.js
Created March 29, 2011 14:16
Simple future library which makes use of node-fibers for blocking operations
"use strict";
require('fibers');
this.Future = Future;
this.FiberFuture = FiberFuture;
this.wait = wait;
/**
* Return a function which automatically creates a fiber for each invocation.
*/
function Future() {}
Future.mixin({
didComplete: function(value) {
if (value === undefined) {
throw new TypeError('May not return undefined from future');
}
this._value = value;
var fibers = this._fibers;
if (fibers) {
String.prototype.method = function() {}
function func(str) {}
var stringObject = new String("hello world");
var stringPrimitive = "hello world";
exports.compare = {
"stringObject.method()": function() {
stringObject.method();
},