pull-length-prefixed
Version:
Streaming length prefixed buffers with pull-streams
94 lines (65 loc) • 3.48 kB
Markdown
# pull-length-prefixed
[](http://ipn.io)
[](http://ipfs.io/)
[](http://webchat.freenode.net/?channels=%23ipfs)
[](https://coveralls.io/github/dignifiedquire/pull-length-prefixed?branch=master)
[](https://travis-ci.org/dignifiedquire/pull-length-prefixed)
[](https://circleci.com/gh/dignifiedquire/pull-length-prefixed)
[](https://david-dm.org/dignifiedquire/pull-length-prefixed) [](https://github.com/feross/standard)
[](https://github.com/RichardLitt/standard-readme)
> Streaming length prefixed buffers with pull-streams
## Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Contribute](#contribute)
- [License](#license)
## Installation
```bash
$ npm install --save pull-length-prefixed
```
## Usage
```js
var pull = require('pull-stream')
var lp = require('pull-length-prefixed')
// encode
pull(
pull.values([Buffer.from('hello world')]),
lp.encode(),
pull.collect(function (err, encoded) {
if (err) throw err
console.log(encoded)
// => [Buffer <0b 68 65 6c 6c 6f 20 77 6f 72 6c 64>]
})
)
// decode
pull(
pull.values(encoded), // e.g. from above
lp.decode(),
pull.collect(function (err, decoded) {
if (err) throw err
console.log(decoded)
// => [Buffer <68 65 6c 6c 6f 20 77 6f 72 6c 64>]
})
)
```
## API
### `encode([opts])`
- `opts: Object`, optional
- `fixed: false`: If true uses a fixed 4 byte Int32BE prefix instead of varint
By default all messages will be prefixed with a varint. If you want to use a fixed length prefix you can specify this through the `opts`.
Returns a pull-stream through.
### `decode([opts])`
- `opts: Object`, optional
- `fixed: false`: If true uses a fixed 4 byte Int32BE prefix instead of varint
- `maxLength`: If provided, will not decode messages longer than the size specified, if omitted will use the current default of 4MB.
By default all messages will be prefixed with a varint. If you want to use a fixed length prefix you can specify this through the `opts`.
Returns a pull-stream through.
### `decodeFromReader(reader, [opts], cb)`
- `reader: [pull-reader](https://github.com/dominictarr/pull-reader)`
- `opts: Object`, optional. Same as for `decode`.
- `cb: Function`: Callback called with `(err, message)`.
This uses a [pull-reader](https://github.com/dominictarr/pull-reader) instance to reade and decode a single message. Useful when using [pull-handshake](https://github.com/pull-stream/pull-handshake) with length prefixed messages.
## Contribute
PRs and issues gladly accepted! Check out the [issues](//github.com/dignifiedquire/pull-length-prefixed/issues).
## License
MIT © 2016 Friedel Ziegelmayer