Class: XwotDiscovery::XwotService::ServiceProtocolListener

Inherits:
BaseListener show all
Defined in:
lib/xwot_discovery/service.rb

Instance Method Summary collapse

Methods inherited from BaseListener

#bye, #update

Methods inherited from ServiceListener

#bye, #update

Constructor Details

#initialize(service, resources) ⇒ ServiceProtocolListener

Returns a new instance of ServiceProtocolListener.



9
10
11
12
# File 'lib/xwot_discovery/service.rb', line 9

def initialize(service, resources)
  @service = service
  @resources = resources
end

Instance Method Details

#alive(message) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/xwot_discovery/service.rb', line 14

def alive(message)
  remove = []
  @service.find_callbacks.each do |tuple|
    urn, callback = tuple
    if urn == message.urn
      callback.call(message)
      remove << tuple
    end
  end
  @service.find_callbacks = @service.find_callbacks - remove
end

#find(message, service) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/xwot_discovery/service.rb', line 26

def find(message, service)
  if message.urn == '*'
    @resources.each { |resource| @service.send_alive(resource) }
  else
    filtered = @resources.select { |resource| resource.urn == message.urn }
    filtered.each { |resource| @service.send_alive(resource) }
  end
end