1 |
|
2 |
|
3 | exports.createDecodeStream = DecodeStream;
|
4 |
|
5 | var util = require("util");
|
6 | var Transform = require("stream").Transform;
|
7 | var DecodeBuffer = require("./decode-buffer").DecodeBuffer;
|
8 | var decodeAsync = require("./read-core").decodeAsync;
|
9 |
|
10 | util.inherits(DecodeStream, Transform);
|
11 |
|
12 | var DEFAULT_OPTIONS = {objectMode: true};
|
13 |
|
14 | function DecodeStream(options) {
|
15 | if (!(this instanceof DecodeStream)) return new DecodeStream(options);
|
16 | if (options) {
|
17 | options.objectMode = true;
|
18 | } else {
|
19 | options = DEFAULT_OPTIONS;
|
20 | }
|
21 | Transform.call(this, options);
|
22 | var stream = this;
|
23 | var decoder = this.decoder = new DecodeBuffer(options);
|
24 | decoder.push = function(chunk) {
|
25 | stream.push(chunk);
|
26 | };
|
27 | }
|
28 |
|
29 | DecodeStream.prototype._transform = function(chunk, encoding, callback) {
|
30 | this.decoder.append(chunk);
|
31 | decodeAsync(this.decoder);
|
32 | if (callback) callback();
|
33 | };
|