class Aggro::AggregateRef
Public: Reference to an Aggregate
which may be local or remote.
Public Instance Methods
command(command)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 4 def command(command) response = send_command(command) if response.is_a? Message::InvalidTarget create response = send_command(command) end fail 'Could not send command' unless response.is_a? Message::OK self end
create()
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 17 def create response = client.post build_create_message fail 'Could not create aggregate' unless response.is_a? Message::OK self end
query(query)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 25 def query(query) response = send_query(query) if response.is_a? Message::InvalidTarget create response = send_query(query) end handle_query_response response end
Private Instance Methods
build_command_message(command)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 38 def build_command_message(command) Message::Command.new(Aggro.local_node.id, id, command.to_details) end
build_create_message()
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 42 def build_create_message Message::CreateAggregate.new(Aggro.local_node.id, id, type) end
build_query_message(query)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 46 def build_query_message(query) Message::Query.new(Aggro.local_node.id, id, query.to_details) end
client()
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 50 def client locator.primary_node.client end
handle_query_response(message)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 54 def handle_query_response(message) fail 'Could not execute query' unless message.is_a? Message::Result if message.result.is_a? Aggro::QueryError fail message.result.cause else message.result end end
locator()
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 64 def locator @locator ||= Locator.new(id) end
send_command(command)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 68 def send_command(command) client.post build_command_message(command) end
send_query(query)
click to toggle source
# File lib/aggro/aggregate_ref.rb, line 72 def send_query(query) client.post build_query_message(query) end