Skip to content

Latest commit

 

History

History
168 lines (104 loc) · 3.92 KB

README.md

File metadata and controls

168 lines (104 loc) · 3.92 KB

flow-tcp-marshal

NPM version Build Status Coverage Status Dependencies

Transform stream factory to format data for TCP transmission.

Installation

$ npm install flow-tcp-marshal

For use in the browser, use browserify.

Usage

To create a stream factory,

var flowFactory = require( 'flow-tcp-marshal' );

// Create a new factory:
var flow = flowFactory();

The factory has the following methods...

flow.delimiter( [value] )

This method is a setter/getter. If no delimiter is provided, returns the delimiter used when marshalling streamed data. To set the delimiter,

flow.delimiter( ' | ' );

The default delimiter is a line feed: \n.

flow.marshal( [format] )

This method is a setter/getter. If no format is provided, returns the marshal format. To set the format,

flow.marshal( 'number' );

Available formats include: json, number, string, and boolean. The default marshal format is json.

flow.stream()

To create a new stream,

var stream = flowStream.stream();

Notes

When used as setters, all setter/getter methods are chainable. For example,

var flowFactory = require( 'flow-tcp-marshal' );

var stream = flowFactory()
	.delimiter( ' | ' )
	.marshal( 'number' )
	.stream();

Examples

var eventStream = require( 'event-stream' ),
	flowFactory = require( 'flow-tcp-marshal' );

// Create some data...
var data = new Array( 20 );
for ( var i = 0; i < data.length; i++ ) {
	data[ i ] = Math.random();
}

// Create a readable stream:
var readStream = eventStream.readArray( data );

// Create a new stream:
var stream = flowFactory()
	.delimiter( ' | ' )
	.marshal( 'number' )
	.stream();

// Pipe the data:
readStream
	.pipe( stream )
	.pipe( eventStream.map( function( d, clbk ){
		clbk( null, d.toString() );
	}))
	.pipe( process.stdout );

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ open reports/coverage/lcov-report/index.html

License

MIT license.


Copyright

Copyright © 2014. Athan Reines.