flow-tcp-unmarshal

0.0.0 • Public • Published

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.

Package Sidebar

Install

npm i flow-tcp-unmarshal

Weekly Downloads

1

Version

0.0.0

License

none

Last publish

Collaborators

  • kgryte