class Aggro::Subscriber
Public: Subscribes to topics at a given endpoint.
Constants
- RAW_HANDLER
Public Class Methods
new(endpoint, callable = nil, &block)
click to toggle source
# File lib/aggro/subscriber.rb, line 6 def initialize(endpoint, callable = nil, &block) if callable @callback = callable elsif block_given? @callback = block else fail ArgumentError end @transport_sub = Aggro.transport.subscriber endpoint, method(RAW_HANDLER) @subscribed_topics = Set.new end
Public Instance Methods
bind()
click to toggle source
# File lib/aggro/subscriber.rb, line 19 def bind @transport_sub.start end
handle_message(message)
click to toggle source
# File lib/aggro/subscriber.rb, line 23 def handle_message(message) @callback.call message.id, message.events if message.is_a? Message::Events end
stop()
click to toggle source
# File lib/aggro/subscriber.rb, line 27 def stop @transport_sub.stop end
subscribe_to_topic(topic)
click to toggle source
# File lib/aggro/subscriber.rb, line 31 def subscribe_to_topic(topic) return if @subscribed_topics.include? topic @subscribed_topics << topic @transport_sub.add_subscription message_prefix_for_topic(topic) end
Private Instance Methods
handle_raw(raw)
click to toggle source
# File lib/aggro/subscriber.rb, line 40 def handle_raw(raw) handle_message MessageParser.parse raw end
message_prefix_for_topic(topic)
click to toggle source
# File lib/aggro/subscriber.rb, line 44 def message_prefix_for_topic(topic) Message::Events::TYPE_CODE + topic end