You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					93 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					93 lines
				
				2.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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()
							 | 
						||
| 
								 | 
							
								    ;
							 | 
						||
| 
								 | 
							
								}
							 |