lib/aggro/handler/query.rb in aggro-0.0.3 vs lib/aggro/handler/query.rb in aggro-0.0.4

- old
+ new

@@ -35,26 +35,38 @@ def handle_foreign comandee_locator.primary_node.client.post message end def handle_known - if channel.handles_query?(query) - result = channel.run_query(query) - - Message::Result.new result.value(5) + if channel + if channel.handles_query?(query) + handle_supported + else + Message::UnhandledOperation.new + end else - Message::UnhandledOperation.new + Message::InvalidTarget.new end - rescue NoMethodError - Message::InvalidTarget.new end def handle_local query_known? ? handle_known : handle_unknown end def handle_unknown Message::UnknownOperation.new + end + + def handle_supported + result = channel.run_query(query) + + result.wait(5) + + if result.fulfilled? + Message::Result.new result.value + else + Message::Result.new Aggro::QueryError.new('Query timed out') + end end end end end