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

Back to archive index

YUKI Hiroshi yuki****@clear*****
Fri Oct 17 18:33:51 JST 2014


ありがとうございます。
自分もただの複数形以外に何かいい名前はないものかと思っていたところだった 
ので、ご指摘に乗っかってConnectionPoolに名前を変えました!

Kouhei Sutou wrote:
> ConnectionPoolとかどうですかねぇ。
> スレッドプールみたいな感じで。
>
> Connectionsだと単なるConnectionのコレクションなイメージがす
> るんですけど、再接続とかそういうコネクションの管理もすると思
> うので、もう少し賢い感じがする名前がいいなぁと思いました。
>
> In <c61258b601b78f5daa828ce0780ec45cce89c8e9 �� jenkins.clear-code.com>
>    "[Groonga-commit] droonga/express-droonga �� c61258b [master] Add module to support multiple connections" on Fri, 17 Oct 2014 16:34:20 +0900,
>    YUKI Hiroshi <null+groonga �� clear-code.com> wrote:
>
>> 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;
>
> _______________________________________________
> Groonga-commit mailing list
> Groonga-commit �� lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/groonga-commit
>

-- 
結城 洋志 <YUKI Hiroshi>
E-mail: yuki �� clear-code.com

株式会社クリアコード
〒170-0005 東京都豊島区南大塚3-29-9
            中野ビル3階
TEL : 03-5927-9440
FAX : 03-5927-9441
WWW : http://www.clear-code.com/




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