BufferStream
:BufferStream : DataStream
A facilitation stream created for easy splitting or parsing buffers.
Useful for working on built-in Node.js streams from files, parsing binary formats etc.
A simple use case would be:
fs.createReadStream("pixels.rgba")
.pipe(new BufferStream()) // pipe a buffer stream into scramjet
.breakup(4) // split into 4 byte fragments
.parse((buffer) => [
buffer.readInt8(0), // the output is a stream of R,G,B and Alpha
buffer.readInt8(1), // values from 0-255 in an array.
buffer.readInt8(2),
buffer.readInt8(3),
]);
Kind: static class
Extends: DataStream
Test: test/methods/buffer-stream-constructor.js
- :BufferStream
DataStream
- new BufferStream([opts])
- bufferStream.shift(chars, func) ↺
- bufferStream.split(splitter) ↺
BufferStream
- bufferStream.breakup(number) ↺
BufferStream
- bufferStream.stringify([encoding])
StringStream
- bufferStream.parse(parser)
DataStream
- BufferStream:pipeline(readable)
BufferStream
- BufferStream:from(stream, [options])
BufferStream
new BufferStream([opts])
Creates the BufferStream
Param | Type | Default | Description |
---|---|---|---|
[opts] | DataStreamOptions |
| Stream options passed to superclass |
bufferStream.shift(chars, func) ↺
Shift given number of bytes from the original stream
Works the same way as @see DataStream.shift, but in this case extracts the given number of bytes.
Kind: instance method of BufferStream
Chainable
Test: test/methods/string-stream-shift.js
Param | Type | Description |
---|---|---|
chars | number | The number of bytes to shift |
func | ShiftBufferCallback | Function that receives a string of shifted bytes |
bufferStream.split(splitter) : BufferStream ↺
Splits the buffer stream into buffer objects
Kind: instance method of BufferStream
Chainable
Returns: BufferStream
- the re-split buffer stream.
Test: test/methods/buffer-stream-split.js
Param | Type | Description |
---|---|---|
splitter | string | Buffer | the buffer or string that the stream should be split by. |
bufferStream.breakup(number) : BufferStream ↺
Breaks up a stream apart into chunks of the specified length
Kind: instance method of BufferStream
Chainable
Returns: BufferStream
- the resulting buffer stream.
Test: test/methods/buffer-stream-breakup.js
Param | Type | Description |
---|---|---|
number | number | the desired chunk length |
bufferStream.stringify([encoding]) : StringStream
Creates a string stream from the given buffer stream
Still it returns a DataStream derivative and isn't the typical node.js stream so you can do all your transforms when you like.
Kind: instance method of BufferStream
Returns: StringStream
- The converted stream.
Test: test/methods/buffer-stream-tostringstream.js
Param | Type | Default | Description |
---|---|---|---|
[encoding] | string | any | ""utf-8"" | The encoding to be used to convert the buffers to streams. |
bufferStream.parse(parser) : DataStream
Parses every buffer to object
The method MUST parse EVERY buffer into a single object, so the buffer stream here should already be split or broken up.
Kind: instance method of BufferStream
Returns: DataStream
- The parsed objects stream.
Test: test/methods/buffer-stream-parse.js
Param | Type | Description |
---|---|---|
parser | BufferParseCallback | The transform function |
BufferStream:pipeline(readable) : BufferStream
Creates a pipeline of streams and returns a scramjet stream.
Kind: static method of BufferStream
Returns: BufferStream
- a new StringStream instance of the resulting pipeline
See: DataStream.pipeline
Param | Type | Description |
---|---|---|
readable | Array | Iterable.<any> | AsyncGeneratorFunction | GeneratorFunction | AsyncFunction | function | string | Readable | the initial readable argument that is streamable by scramjet.from |
...transforms | Array.<(AsyncFunction|function()|Transform)> | Transform functions (as in DataStream..use) or Transform streams (any number of these as consecutive arguments) |
BufferStream:from(stream, [options]) : BufferStream
Create BufferStream from anything.
Kind: static method of BufferStream
Returns: BufferStream
- new StringStream.
See: module:scramjet.from
Param | Type | Default | Description |
---|---|---|---|
stream | Array | Iterable.<any> | AsyncGeneratorFunction | GeneratorFunction | AsyncFunction | function | Readable | argument to be turned into new stream | |
[options] | DataStreamOptions | Writable |
| options passed to the new stream if created |