Navigation Menu

Skip to content

Commit

Permalink
Reuse the instance of NodeMetadata globally
Browse files Browse the repository at this point in the history
Conflicts:
	lib/droonga/engine_node.rb
  • Loading branch information
piroor committed Jan 15, 2015
1 parent 424d379 commit 81565da
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
8 changes: 6 additions & 2 deletions lib/droonga/cluster.rb
Expand Up @@ -26,12 +26,13 @@ class Cluster
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
Expand Down Expand Up @@ -157,7 +158,10 @@ def all_node_names
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

Expand Down
7 changes: 5 additions & 2 deletions lib/droonga/engine.rb
Expand Up @@ -32,8 +32,11 @@ class Engine

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 = @cluster.catalog = @catalog
@dispatcher = create_dispatcher
Expand Down
16 changes: 12 additions & 4 deletions lib/droonga/engine_node.rb
Expand Up @@ -24,10 +24,10 @@ class EngineNode

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]

@buffer = ForwardBuffer.new(name)

Expand Down Expand Up @@ -65,11 +65,11 @@ def forward(message, destination)

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
Expand Down Expand Up @@ -156,6 +156,14 @@ def really_writable?
end
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"]
Expand Down
3 changes: 2 additions & 1 deletion lib/droonga/engine_state.rb
Expand Up @@ -36,7 +36,7 @@ class EngineState
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
Expand All @@ -47,6 +47,7 @@ def initialize(loop, name, internal_name)
@on_ready = nil
@on_finish = nil
@catalog = nil
@node_metadata = options[:metadata]
end

def start
Expand Down

0 comments on commit 81565da

Please sign in to comment.