core/plugins/c9.nodeapi/json-stream.js
nightwing cb9466ae62 Revert "Revert "Merge branch 'master' of github.com:c9/newclient""
This reverts commit 223b4dfcc4281f25612b714984e150e74a575c55.
2016-03-29 20:31:52 +04:00

47 lines
1.1 KiB
JavaScript

define(function(require, exports, module) {
var EventEmitter = require("events").EventEmitter;
module.exports = function(stream) {
var emit = this.emit.bind(this);
var buffer = "";
stream.on("data", function(chunk) {
buffer += chunk;
var parts = buffer.split("\n");
while (parts.length) {
try {
var message = JSON.parse(parts[0]);
emit("data", message);
parts.shift();
}
catch (e) {
if (parts.length !== 1) {
emit("error", e);
parts.shift();
}
else {
break;
}
}
}
buffer = parts.join("\n");
});
stream.on("error", function(err){
emit("error", err);
});
stream.on("close", function(data){
emit("close", data);
});
this.write = function(data) {
stream.write(JSON.stringify(data) + "\n");
};
};
module.exports.prototype = new EventEmitter();
});