Skip to content

Commit

Permalink
modfiy caller
Browse files Browse the repository at this point in the history
  • Loading branch information
oopschen committed Mar 27, 2012
1 parent 5257d4d commit 196908b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
20 changes: 12 additions & 8 deletions lib/fileByteReader.js
Expand Up @@ -10,43 +10,47 @@ var b = function(file,cb){
var callback = !cb ? function(){}:cb;
fs.open(file,'r',function(err,fd) {
if(err) {
callback(err);
callback.call(bSelf,err);
return;
}
bSelf.fd = fd;
fs.fstat(fd,function(err,stat) {
if(err) {
callback(err);
callback.call(bSelf,err);
return;
}
bSelf.tol = stat.size;
callback(undefined,bSelf);
callback.call(bSelf);
});
});
};

b.prototype.read = function(cb) {
if(this.start >= this.tol ) {
cb(undefined,undefined,this);
cb.call(this,undefined,undefined,this);
return;
}
var len = this.tol-this.start;
len = len > defaultBufSize ? defaultBufSize : len
len = len > defaultBufSize ? defaultBufSize : len;
this.start += len;

var buf = new Buffer(len);
var bSelf = this;
fs.read(this.fd,buf,0,buf.length,null,function(err,size,buffer) {
if(err) {
cb(err);
cb.call(bSelf,err);
return;
}
cb(err,buffer,bSelf);
cb.call(bSelf,err,buffer);
});
};

b.prototype.close = function(cb){
fs.close(this.fd,cb);
var bSelf = this;
var callback = !cb ? function(){} : cb;
fs.close(this.fd,function(){
callback.call(bSelf);
});
this.start = 0;
this.tol = 0;
};
Expand Down
10 changes: 5 additions & 5 deletions test/aReader.js
Expand Up @@ -4,19 +4,19 @@ var assert = require('assert');
var path = __dirname + "/a";

var i = 0;
var readCB = function(err,buf,fbr) {
var readCB = function(err,buf) {
if(!buf) {
fbr.close();
this.close();
return;
}
assert.equal(buf.toString().split('\n')[i],i+1,'fail 1 ea');
i++;
fbr.read(readCB);
this.read(readCB);
};
new FileByteReader(path,function(err,fbr){
new FileByteReader(path,function(err){
if(err) {
console.error(err);
return;
}
fbr.read(readCB);
this.read(readCB);
});

0 comments on commit 196908b

Please sign in to comment.