Skip to content

dignifiedquire/pull-length-prefixed

Repository files navigation

pull-length-prefixed

Coverage Status Travis CI Circle CI Dependency Status js-standard-style standard-readme compliant

Streaming length prefixed buffers with pull-streams

Table of Contents

Installation

$ npm install --save pull-length-prefixed

Usage

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 instance to reade and decode a single message. Useful when using pull-handshake with length prefixed messages.

Contribute

PRs and issues gladly accepted! Check out the issues.

License

MIT © 2016 Friedel Ziegelmayer