0.0.0 • Published 10 years ago

flow-tcp-unmarshal v0.0.0

Weekly downloads
3
License
-
Repository
github
Last release
10 years ago

flow-tcp-unmarshal

NPM version Build Status Coverage Status Dependencies

Transform stream factory to unmarshal TCP transmitted data.

Installation

$ npm install flow-tcp-unmarshal

For use in the browser, use browserify.

Usage

To create a stream factory,

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

// Create a new factory:
var flowStream = 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 delineating streamed data. To set the data delimiter,

// String:
flow.delimiter( ' | ' );

// Regular expression:
flow.delimiter( /\r?\n/ );

The default delimiter is a line feed: /\r?\n/.

flow.unmarshal( format )

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

flow.unmarshal( 'number' );

Available formats include: json, number, string, and boolean. The default unmarshal 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-unmarshal' );

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

Examples

var eventStream = require( 'event-stream' ),
	streamBuffers = require( 'stream-buffers' ),
	flowFactory = require( 'flow-tcp-unmarshal' );

// Create a readable buffer stream:
var source = new streamBuffers.ReadableStreamBuffer({
	'frequency': 0 // ms; pipe data immediately
});

// Create a stream to unmarshal data:
var unmarshal = flowFactory()
	.delimiter( ' | ' )
	.unmarshal( 'number' )
	.stream();

// Create the pipeline:
source
	.pipe( unmarshal )
	.pipe( eventStream.map( function( d, clbk ){
		clbk( null, d.toString()+'\n' );
	}))
	.pipe( process.stdout );

// Write some data...
var data;
for ( var i = 0; i < 20; i++ ) {
	data = Math.random().toString();
	if ( i < 20-1 ) {
		data += ' | ';
	}
	source.put( data, 'utf8' );
}

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.