buffer-writer
a fast, efficient buffer writer
Last updated 7 years ago by brianc .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install buffer-writer 
SYNC missed versions from official npm registry.

buffer-writer

Build Status

Fast & efficient buffer writer used to keep memory usage low by internally recycling a single large buffer.

Used as the binary protocol writer in node-postgres

Since postgres requires big endian encoding, this only writes big endian numbers for now, but can & probably will easily be extended to write little endian as well.

I'll admit this has a few postgres specific things I might need to take out in the future, such as addHeader

api

var writer = new (require('buffer-writer')());

writer.addInt32(num)

Writes a 4-byte big endian binary encoded number to the end of the buffer.

writer.addInt16(num)

Writes a 2-byte big endian binary encoded number to the end of the buffer.

writer.addCString(string)

Writes a string to the buffer utf8 encoded and adds a null character (\0) at the end.

var buffer = writer.addHeader(char)

Writes the 5 byte PostgreSQL required header to the beginning of the buffer. (1 byte for character, 1 BE Int32 for length of the buffer)

var buffer = writer.join()

Collects all data in the writer and joins it into a single, new buffer.

var buffer = writer.flush(char)

Writes the 5 byte postgres required message header, collects all data in the writer and joins it into a single, new buffer, and then resets the writer.

thoughts

This is kind of node-postgres specific. If you're interested in using this for a more general purpose thing, lemme know. I would love to work with you on getting this more reusable for your needs.

license

MIT

Current Tags

  • 2.0.0                                ...           latest (7 years ago)

3 Versions

  • 2.0.0                                ...           7 years ago
  • 1.0.1                                ...           10 years ago
  • 1.0.0                                ...           12 years ago
Maintainers (2)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (0)
None
Dev Dependencies (1)
Dependents (2)

Copyright 2013 - present © cnpmjs.org | Home |