--- /dev/null
+var Seq = require('seq');
+var Hash = require('hashish');
+var EventEmitter = require('events').EventEmitter;
+
+var Bin = require('binary');
+var Buf = require('bufferlist/binary');
+var BufferList = require('bufferlist');
+
+console.log('loop');
+function emitter () {
+ var em = new EventEmitter;
+
+ var i = 0;
+ var iv = setInterval(function () {
+ var buf = new Buffer(10000);
+ buf[0] = 0xff;
+
+ if (++ i >= 2000) {
+ buf[0] = 0;
+ clearInterval(iv);
+ }
+ em.emit('data', buf);
+ }, 1);
+
+ return em;
+}
+
+Seq()
+ .seq(function () {
+ var next = this.bind({}, null);
+ bufferlist(next);
+ })
+ .seq(function () {
+ var next = this.bind({}, null);
+ binary(next);
+ })
+;
+
+function binary (next) {
+ var em = emitter();
+ var t0 = Date.now();
+
+ Bin(em)
+ .loop(function (end) {
+ this
+ .word8('x')
+ .word8('y')
+ .word32be('z')
+ .word32le('w')
+ .buffer('buf', 10000 - 10)
+ .tap(function (vars) {
+ if (vars.x === 0) {
+ var tf = Date.now();
+ console.log(' binary: ' + (tf - t0) + ' ms');
+ end();
+ setTimeout(next, 20);
+ }
+ })
+ })
+ ;
+}
+
+function bufferlist (next) {
+ var em = emitter();
+ var t0 = Date.now();
+
+ var blist = new BufferList;
+ em.on('data', function (buf) {
+ blist.push(buf);
+ });
+
+ Buf(blist)
+ .forever(function () {
+ var top = this;
+ this
+ .getWord8('x')
+ .getWord8('y')
+ .getWord32be('z')
+ .getWord32le('w')
+ .getBuffer('buf', 10000 - 10)
+ .tap(function (vars) {
+ if (vars.x === 0) {
+ var tf = Date.now();
+ console.log(' bufferlist: ' + (tf - t0) + ' ms');
+ top.exit();
+ setTimeout(next, 20);
+ }
+ })
+ })
+ .end()
+ ;
+}