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
Creates the BufferStream
Param | Type | Default | Description |
---|---|---|---|
[opts] | DataStreamOptions |
{} |
Stream options passed to superclass |
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 |
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. |
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 |
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. |
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 |
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) |
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 |