[Groonga-commit] groonga/express-droonga at 8bc0de8 [master] Call "onSubscribed" handler for pubsub commands

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu Aug 1 15:38:02 JST 2013


YUKI Hiroshi	2013-08-01 15:38:02 +0900 (Thu, 01 Aug 2013)

  New Revision: 8bc0de81bddf9b7d51ac8a1391bccb6af9b90f74
  https://github.com/groonga/express-droonga/commit/8bc0de81bddf9b7d51ac8a1391bccb6af9b90f74

  Message:
    Call "onSubscribed" handler for pubsub commands

  Modified files:
    lib/adapter/command.js
    lib/adapter/socket.io.js

  Modified: lib/adapter/command.js (+3 -0)
===================================================================
--- lib/adapter/command.js    2013-08-01 15:15:19 +0900 (628bbf3)
+++ lib/adapter/command.js    2013-08-01 15:38:02 +0900 (506ffaf)
@@ -44,6 +44,9 @@ util.inherits(PublishSubscribe, Command);
 Object.defineProperty(PublishSubscribe.prototype, 'onSubscribe', {
   get: function() { return this._options.onSubscribe; }
 });
+Object.defineProperty(PublishSubscribe.prototype, 'onSubscribed', {
+  get: function() { return this._options.onSubscribed; }
+});
 Object.defineProperty(PublishSubscribe.prototype, 'onPublish', {
   get: function() { return this._options.onPublish; }
 });

  Modified: lib/adapter/socket.io.js (+15 -12)
===================================================================
--- lib/adapter/socket.io.js    2013-08-01 15:15:19 +0900 (1517d81)
+++ lib/adapter/socket.io.js    2013-08-01 15:38:02 +0900 (445d9aa)
@@ -43,10 +43,17 @@ exports.register = function(application, server, params) {
 
       var event = commandName;
 
-      var callback = null;
+      var requestHandler  = 'onRequest';
+      var responseHandler = 'onResponse';
+
+      if (command.PublishSubscribe.isInstance(commandDefinition))  {
+        event += '.subscribe';
+        requestHandler  = 'onSubscribe';
+        responseHandler = 'onSubscribed';
+      }
+
       var options = {};
-      if (command.RequestResponse.isInstance(commandDefinition)) {
-        callback = function(error, envelope) {
+      var callback = function(error, envelope) {
           if (error) {
             socket.emit('error', error);
             return;
@@ -59,9 +66,9 @@ exports.register = function(application, server, params) {
           if (clientOptions.responseEvent)
             responseEvent = clientOptions.responseEvent;
 
-          if (commandDefinition.onResponse) {
+          if (commandDefinition[responseHandler]) {
             try {
-              commandDefinition.onResponse(responseData, wrappedSocket);
+              commandDefinition[responseHandler](responseData, wrappedSocket);
             } catch(error) {
               wrappedSocket.emit('error', error.message || error);
             }
@@ -70,17 +77,13 @@ exports.register = function(application, server, params) {
             wrappedSocket.destroy();
           }
         };
-        options.timeout = DEFAULT_TIMEOUT;
-      } else if (command.PublishSubscribe.isInstance(commandDefinition)) {
-        event += '.subscribe';
-      }
-
+      options.timeout = DEFAULT_TIMEOUT;
       options.sessionId = socket.id;
 
       var wrappedConection = new wrapper.DroongaProtocolConnectionWrapper(connection, callback, options);
-      if (commandDefinition.onRequest) {
+      if (commandDefinition[requestHandler]) {
         try {
-          commandDefinition.onRequest(data, wrappedConection);
+          commandDefinition[requestHandler](data, wrappedConection);
         } catch(error) {
           wrappedConection.destroy();
           socket.emit('error', error.message || error);
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index