| var events = require("events"), |
| util = require("../util"), |
| hiredis = require("hiredis"); |
| |
| exports.debug_mode = false; |
| exports.name = "hiredis"; |
| |
| function HiredisReplyParser(options) { |
| this.name = exports.name; |
| this.options = options || {}; |
| this.reset(); |
| events.EventEmitter.call(this); |
| } |
| |
| util.inherits(HiredisReplyParser, events.EventEmitter); |
| |
| exports.Parser = HiredisReplyParser; |
| |
| HiredisReplyParser.prototype.reset = function () { |
| this.reader = new hiredis.Reader({ |
| return_buffers: this.options.return_buffers || false |
| }); |
| }; |
| |
| HiredisReplyParser.prototype.execute = function (data) { |
| var reply; |
| this.reader.feed(data); |
| while (true) { |
| try { |
| reply = this.reader.get(); |
| } catch (err) { |
| this.emit("error", err); |
| break; |
| } |
| |
| if (reply === undefined) { |
| break; |
| } |
| |
| if (reply && reply.constructor === Error) { |
| this.emit("reply error", reply); |
| } else { |
| this.emit("reply", reply); |
| } |
| } |
| }; |