YUKI Hiroshi
null+****@clear*****
Fri Oct 17 15:31:35 JST 2014
YUKI Hiroshi 2014-10-17 15:31:35 +0900 (Fri, 17 Oct 2014) New Revision: 137acd8fc16759109125e39b8a1e014af7cde02c https://github.com/droonga/express-droonga/commit/137acd8fc16759109125e39b8a1e014af7cde02c Message: Add thennable versions of "emitMessage()", "close()" and "once()" Modified files: lib/droonga-protocol/connection.js lib/droonga-protocol/receiver.js package.json Modified: lib/droonga-protocol/connection.js (+9 -0) =================================================================== --- lib/droonga-protocol/connection.js 2014-10-17 15:28:59 +0900 (8aa4b35) +++ lib/droonga-protocol/connection.js 2014-10-17 15:31:35 +0900 (57c1069) @@ -11,6 +11,7 @@ var EventEmitter = require('events').EventEmitter; var fluent = require('fluent-logger'); var FluentReceiver = require('./receiver').FluentReceiver; var util = require('util'); +var Q = require('q'); var ConsoleLogger = require('../console-logger').ConsoleLogger; var DEFAULT_FLUENT_TAG = @@ -221,6 +222,14 @@ Connection.prototype.emitMessage = function(type, body, callback, options) { return envelope; }; +Connection.prototype.thennableEmitMessage = function(type, body, options) { + return Q.Promise((function(resolve, reject, notify) { + this.emitMessage(type, body, function(errorCode, response) { + resolve({ errorCode: errorCode, response: response }); + }, options); + }).bind(this)); +}; + Connection.prototype.close = function() { this.removeAllListeners(); Modified: lib/droonga-protocol/receiver.js (+39 -2) =================================================================== --- lib/droonga-protocol/receiver.js 2014-10-17 15:28:59 +0900 (85c7d67) +++ lib/droonga-protocol/receiver.js 2014-10-17 15:31:35 +0900 (1be8da9) @@ -2,6 +2,7 @@ var util = require('util'); var net = require('net'); var EventEmitter = require('events').EventEmitter; var msgpack = require('msgpack'); +var Q = require('q'); var ConsoleLogger = require('../console-logger').ConsoleLogger; function MsgPackReceiver(port, options) { @@ -55,18 +56,54 @@ MsgPackReceiver.prototype.listen = function(callback) { MsgPackReceiver.prototype.close = function(callback) { this._connections.forEach(function(connection) { connection.socket.end(); - }); + }); this._connections = []; if (this._server) { this._server.close(callback); this._server = undefined; - } else if (callback) { + } else if (typeof callback == 'function') { callback(); } this.port = undefined; }; +MsgPackReceiver.prototype.thennableClose = function() { + var closed = false; + var resolver = undefined; + this.close(function() { + closed = true; + if (typeof resolver == 'function') + resolver(); + }); + + return Q.Promise((function(resolve, reject, notify) { + if (closed) + return resolve(); + + resolver = resolve; + }).bind(this)); +}; + +MsgPackReceiver.prototype.thennableOnce = function(event) { + var fired = false; + var givenArgs = []; + var resolver = undefined; + this.once(event, function() { + fired = true; + givenArgs = arguments; + if (typeof resolver == 'function') + resolver(givenArgs); + }); + + return Q.Promise((function(resolve, reject, notify) { + if (fired) + return resolve(givenArgs); + + resolver = resolve; + }).bind(this)); +}; + exports.MsgPackReceiver = MsgPackReceiver; Modified: package.json (+1 -0) =================================================================== --- package.json 2014-10-17 15:28:59 +0900 (3fcb64c) +++ package.json 2014-10-17 15:31:35 +0900 (40f7109) @@ -31,6 +31,7 @@ "uber-cache": "*", "method-override": "*", "msgpack": "*", + "q": "*", "serve-static": "*", "socket.io": ">=1.0", "winston": "*" -------------- next part -------------- HTML����������������������������...Download