Kouhei Sutou
kou****@clear*****
Fri Jan 16 09:58:44 JST 2015
> Reuse the instance of NodeMetadata globally 任意(引数で渡されてもいいし、渡されなくてもいい)なのか 必須(必ず引数で渡されること)なのか明確にしませんか? 必須だけどもしかしたら誰かが渡し忘れるかもしれない、というの で > + @sender_node_metadata ||= NodeMetadata.new みたいなコードを入れているなら呼び出す側を修正する方がよいと 思います。そっちの方がいろんな場所に↑みたいな「もしものとき」 のためのコードが入り込まなくて全体としてスッキリすると思いま す。 あと、必須なら > + def initialize(loop, options={}) ... > + @node_metadata = options[:metadata] みたいに「options」という名前で受け取るのではなく、 initialize(loop, metadata)みたいに受け取るようにしたほうが意 図が明確になります。 個人的にはプロセス全体で「Reuse」したいなら必須にした方がよ いと思います。 In <16702db325bfed21ef5cfd206abfe7f834ece203 �� jenkins.clear-code.com> "[Groonga-commit] droonga/droonga-engine �� 16702db [master] Reuse the instance of NodeMetadata globally" on Thu, 15 Jan 2015 16:23:31 +0900, YUKI Hiroshi <null+groonga �� clear-code.com> wrote: > YUKI Hiroshi 2015-01-15 16:23:31 +0900 (Thu, 15 Jan 2015) > > New Revision: 16702db325bfed21ef5cfd206abfe7f834ece203 > https://github.com/droonga/droonga-engine/commit/16702db325bfed21ef5cfd206abfe7f834ece203 > > Message: > Reuse the instance of NodeMetadata globally > > Modified files: > lib/droonga/cluster.rb > lib/droonga/engine.rb > lib/droonga/engine_node.rb > lib/droonga/engine_state.rb > > Modified: lib/droonga/cluster.rb (+6 -2) > =================================================================== > --- lib/droonga/cluster.rb 2015-01-15 16:06:55 +0900 (c3b2a40) > +++ lib/droonga/cluster.rb 2015-01-15 16:23:31 +0900 (80490b9) > @@ -26,12 +26,13 @@ module Droonga > attr_accessor :catalog > attr_writer :on_change > > - def initialize(loop) > + def initialize(loop, options={}) > @loop = loop > > @catalog = nil > @state = nil > @on_change = nil > + @node_metadata = options[:metadata] > > reload > end > @@ -157,7 +158,10 @@ module Droonga > def create_engine_nodes > all_node_names.collect do |name| > node_state = @state[name] || {} > - EngineNode.new(name, node_state, node_metadata.role, @loop) > + EngineNode.new(name, > + node_state, > + @loop, > + :metadata => node_metadata) > end > end > > > Modified: lib/droonga/engine.rb (+5 -2) > =================================================================== > --- lib/droonga/engine.rb 2015-01-15 16:06:55 +0900 (67a838f) > +++ lib/droonga/engine.rb 2015-01-15 16:23:31 +0900 (1d5298e) > @@ -32,8 +32,11 @@ module Droonga > > attr_writer :on_ready > def initialize(loop, name, internal_name) > - @state = EngineState.new(loop, name, internal_name) > - @cluster = Cluster.new(loop) > + @state = EngineState.new(loop, name, > + internal_name, > + :metadata => node_metadata) > + @cluster = Cluster.new(loop, > + :metadata => node_metadata) > @catalog = load_catalog > @state.catalog =****@clust***** = @catalog > @dispatcher = create_dispatcher > > Modified: lib/droonga/engine_node.rb (+12 -4) > =================================================================== > --- lib/droonga/engine_node.rb 2015-01-15 16:06:55 +0900 (ac2194f) > +++ lib/droonga/engine_node.rb 2015-01-15 16:23:31 +0900 (9157b28) > @@ -23,10 +23,10 @@ module Droonga > > attr_reader :name > > - def initialize(name, state, sender_role, loop) > + def initialize(name, state, loop, options={}) > @name = name > @state = state > - @sender_role = sender_role > + @sender_node_metadata ||= options[:metadata] > > parsed_name = parse_node_name(@name) > @sender = FluentMessageSender.new(loop, > @@ -54,11 +54,11 @@ module Droonga > > def forwardable? > return false unless live? > - role == @sender_role > + role == sender_role > end > > def writable? > - case @sender_role > + case sender_role > when NodeMetadata::Role::SERVICE_PROVIDER > true > when NodeMetadata::Role::ABSORB_SOURCE > @@ -133,6 +133,14 @@ module Droonga > role == NodeMetadata::Role::ABSORB_DESTINATION > end > > + def sender_role > + sender_node_metadata.role > + end > + > + def sender_node_metadata > + @sender_node_metadata ||= NodeMetadata.new > + end > + > def output(message, destination) > command = destination["type"] > receiver = destination["to"] > > Modified: lib/droonga/engine_state.rb (+2 -1) > =================================================================== > --- lib/droonga/engine_state.rb 2015-01-15 16:06:55 +0900 (bb21f23) > +++ lib/droonga/engine_state.rb 2015-01-15 16:23:31 +0900 (bf0eb31) > @@ -36,7 +36,7 @@ module Droonga > attr_accessor :catalog > attr_accessor :on_finish > > - def initialize(loop, name, internal_name) > + def initialize(loop, name, internal_name, options={}) > @loop = loop > @name = name > @internal_name = internal_name > @@ -47,6 +47,7 @@ module Droonga > @on_ready = nil > @on_finish = nil > @catalog = nil > + @node_metadata = options[:metadata] > end > > def start