Skip to content
This repository has been archived by the owner on Nov 29, 2021. It is now read-only.

Commit

Permalink
Fixed some end of stream issue.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ivan (egorich) Egorov committed Jun 11, 2010
1 parent c32d735 commit 021d059
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 38 deletions.
76 changes: 41 additions & 35 deletions demo/streams-test.js
Expand Up @@ -3,43 +3,49 @@ var sys=require("sys");
var posix=require("fs");
var Buffer = require('buffer').Buffer;

sys.puts('Compressing...');
var gzdata = '';
var gzip=new compress.GzipStream();
gzip.setInputEncoding('utf8');
gzip.setEncoding('binary');
gzip.addListener('data', function(data) {
gzdata += data;
}).addListener('error', function(err) {
throw err;
}).addListener('end', function() {
sys.puts('Compressed length: ' + gzdata.length);
});
function doCompress(continuation) {
sys.puts('Making compression requests...');
var gzdata = '';
var gzip=new compress.GzipStream();
gzip.setInputEncoding('utf8');
gzip.setEncoding('binary');
gzip.addListener('data', function(data) {
gzdata += data;
}).addListener('error', function(err) {
throw err;
}).addListener('end', function() {
sys.puts('Compressed length: ' + gzdata.length);
continuation(gzdata);
});

gzip.write("My data that needs ");
gzip.write("to be compressed. 01234567890.");
gzip.close();
sys.puts('Compression finished.');
gzip.write("My data that needs ");
gzip.write("to be compressed. 01234567890.");
gzip.close();
sys.puts('Requests done.');
}

var d1 = gzdata.substr(0, 25);
var d2 = gzdata.substr(25);
function doDecompress(gzdata) {
var d1 = gzdata.substr(0, 25);
var d2 = gzdata.substr(25);

sys.puts('Making decompression requests...');
var rawdata = '';
var gunzip = new compress.GunzipStream();
gunzip.setInputEncoding('binary');
gunzip.setEncoding('utf8');
gunzip.addListener('data', function(data) {
rawdata += data;
}).addListener('error', function(err) {
throw err;
}).addListener('end', function() {
sys.puts('Decompressed length: ' + rawdata.length);
sys.puts('Raw data: ' + rawdata);
});
gunzip.write(d1);
gunzip.write(d2);
gunzip.close();
sys.puts('Requests done.');
}

sys.puts('Decompressing...');
var rawdata = '';
var gunzip = new compress.GunzipStream();
gunzip.setInputEncoding('binary');
gunzip.setEncoding('utf8');
gunzip.addListener('data', function(data) {
rawdata += data;
}).addListener('error', function(err) {
throw err;
}).addListener('end', function() {
sys.puts('Decompressed length: ' + rawdata.length);
sys.puts('Raw data: ' + rawdata);
});
gunzip.write(d1);
gunzip.write(d2);
gunzip.close();
sys.puts('Decompression finished.');
doCompress(doDecompress);

13 changes: 10 additions & 3 deletions lib/compress.js
Expand Up @@ -108,11 +108,18 @@ CommonStream.prototype.emitData_ = function(data) {
this.dataQueue_.push(data);
} else {
for (var i = 0; i < this.dataQueue_.length; ++i) {
this.emit('data', this.dataQueue_[i]);
var data = this.dataQueue_[i];
if (data !== null) {
this.emit('data', data);
} else {
this.emit('end');
}
}
this.dataQueue_.length = 0;
if (data != null) {
if (data !== null) {
this.emit('data', data);
} else {
this.emit('end');
}
}
};
Expand All @@ -138,7 +145,7 @@ CommonStream.prototype.emitEvent_ = function(err, data, fin) {
this.emitData_(data);

if (fin) {
this.emit('end');
this.emitData_(null);
}
};

Expand Down

0 comments on commit 021d059

Please sign in to comment.