[Groonga-commit] droonga/express-droonga at c61258b [master] Add module to support multiple connections

Back to archive index

YUKI Hiroshi null+****@clear*****
Fri Oct 17 16:34:20 JST 2014


YUKI Hiroshi	2014-10-17 16:34:20 +0900 (Fri, 17 Oct 2014)

  New Revision: c61258b601b78f5daa828ce0780ec45cce89c8e9
  https://github.com/droonga/express-droonga/commit/c61258b601b78f5daa828ce0780ec45cce89c8e9

  Message:
    Add module to support multiple connections

  Added files:
    lib/droonga-protocol/connections.js

  Added: lib/droonga-protocol/connections.js (+62 -0) 100755
===================================================================
--- /dev/null
+++ lib/droonga-protocol/connections.js    2014-10-17 16:34:20 +0900 (11badd4)
@@ -0,0 +1,62 @@
+/**
+ * var connections = new Connections({ tag:             'droonga',
+ *                                     defaultDataset:  'example',
+ *                                     hostNames:       ['127.0.0.1', ...],
+ *                                     port:            24224,
+ *                                     receiveHostName: '127.0.0.1',
+ *                                     receivePort:     10030 });
+ */
+
+var Connection = require('./connection').Connection;
+var ConsoleLogger = require('../console-logger').ConsoleLogger;
+
+function Connections(params) {
+  this._params = params || {};
+
+  if (!this._params.logger)
+    this._params.logger = new ConsoleLogger();
+
+  var hostNames = this._params.hostNames ||
+                    this._params.hostName ||
+                    Connection.DEFAULT_FLUENT_HOST_NAME;
+  if (!Array.isArray(hostNames))
+    this._params.hostNames = [hostNames];
+
+  if (this._params.hostNames.length == 0)
+    throw new Error('Connections: you must give one or more host name(s)!');
+
+  this._connections = {};
+  this._instantiate();
+}
+
+Connections.prototype = {
+  _instantiate: function() {
+    this._params.hostNames.forEach(function(hostName) {
+      if (this._connections[hostName])
+        return;
+
+      this._connections[hostName] = new Connection({
+        tag:             this._params.tag
+        defaultDataset:  this._params.defaultDataset
+        hostName:        hostName
+        port:            this._params.port
+        receiveHostName: this._params.receiveHostName
+        receivePort:     this._params.receivePort
+      });
+    }, this);
+
+    this._nextIndex = 0;
+  },
+
+  get: function() {
+    var hostName = this._params.hostNames[this._nextIndex];
+
+    this._nextIndex++;
+    if (this._nextIndex == this._params.hostNames.length)
+      this._nextIndex = 0;
+
+    return this._connections[hostName];
+  }
+};
+
+exports.Connections = Connections;
-------------- next part --------------
HTML����������������������������...
Download 



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