class Gossiperl::Client::OverlayWorker
Public Class Methods
new(supervisor, options, block)
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 14 def initialize supervisor, options, block raise ArgumentError.new('Supervisor must be of type Supervisor.') unless supervisor.is_a?(::Gossiperl::Client::Supervisor) raise ArgumentError.new('Callback must be a Proc / block.') unless block.nil? or block.is_a?(Proc) ::Gossiperl::Client::Util::Validation.validate_connect( options ) self.supervisor = supervisor self.options = options self.working = true @callback_block = block if options.has_key?(:logger) self.logger - options[:logger] else self.logger = Logger.new(STDOUT) self.logger.level = Logger::DEBUG end end
Public Instance Methods
current_state()
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 45 def current_state return :connected if self.state.connected return :disconnected end
process_event(event)
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 50 def process_event event unless @callback_block.nil? self.instance_exec event.merge( { :options => self.options } ), &@callback_block else self.logger.info("[#{self.options[:client_name]}] Processing event: #{event}.") end end
send(digest_type, digest_data)
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 66 def send digest_type, digest_data begin serialized = self.messaging.transport.serializer.serialize_arbitrary( digest_type, digest_data ) self.messaging.send serialized rescue ArgumentError => e process_event( { :event => :failed, :error => { :serialize_arbitrary => e } } ) rescue StandardError => e2 process_event( { :event => :failed, :error => { :serialize_arbitrary => e2 } } ) end end
start()
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 30 def start self.messaging = Gossiperl::Client::Messaging.new(self) self.state = Gossiperl::Client::State.new(self) [self.messaging.start, self.state.start].each {|worker| worker.join } end
stop()
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 38 def stop self.messaging.digest_exit while self.state.connected sleep 0.1 end end
subscribe(event_types)
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 58 def subscribe event_types self.state.subscribe event_types end
unsubscribe(event_types)
click to toggle source
# File lib/gossiperl_client/overlay_worker.rb, line 62 def unsubscribe event_types self.state.unsubscribe event_types end