40 lines
977 B
JavaScript
40 lines
977 B
JavaScript
|
/**
|
||
|
* What is necessary to create an event stream in node?
|
||
|
* - http response stream
|
||
|
* - parser
|
||
|
* - event stream model
|
||
|
*/
|
||
|
|
||
|
var EventMessageChunkerStream = require('../event-stream/event-message-chunker-stream').EventMessageChunkerStream;
|
||
|
var EventUnmarshallerStream = require('../event-stream/event-message-unmarshaller-stream').EventUnmarshallerStream;
|
||
|
|
||
|
function createEventStream(stream, parser, model) {
|
||
|
var eventStream = new EventUnmarshallerStream({
|
||
|
parser: parser,
|
||
|
eventStreamModel: model
|
||
|
});
|
||
|
|
||
|
var eventMessageChunker = new EventMessageChunkerStream();
|
||
|
|
||
|
stream.pipe(
|
||
|
eventMessageChunker
|
||
|
).pipe(eventStream);
|
||
|
|
||
|
stream.on('error', function(err) {
|
||
|
eventMessageChunker.emit('error', err);
|
||
|
});
|
||
|
|
||
|
eventMessageChunker.on('error', function(err) {
|
||
|
eventStream.emit('error', err);
|
||
|
});
|
||
|
|
||
|
return eventStream;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @api private
|
||
|
*/
|
||
|
module.exports = {
|
||
|
createEventStream: createEventStream
|
||
|
};
|