class Orchestrator::UdpService
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/orchestrator/datagram_server.rb, line 4 def initialize(*args) super(*args) @callbacks = { # ip => port => callback } end
Public Instance Methods
attach(ip, port, callback)
click to toggle source
# File lib/orchestrator/datagram_server.rb, line 12 def attach(ip, port, callback) @loop.schedule do ports = @callbacks[ip.to_sym] ||= {} ports[port.to_i] = callback end end
detach(ip_raw, port)
click to toggle source
# File lib/orchestrator/datagram_server.rb, line 19 def detach(ip_raw, port) @loop.schedule do ip = ip_raw.to_sym ip_ports = @callbacks[ip] if ip_ports ip_ports.delete(port.to_i) @callbacks.delete(ip) if ip_ports.empty? end end end
on_read(data, ip, port, transport)
click to toggle source
# File lib/orchestrator/datagram_server.rb, line 30 def on_read(data, ip, port, transport) ip_ports = @callbacks[ip.to_sym] if ip_ports callback = ip_ports[port.to_i] if callback callback.call(data) end end end
send(ip, port, data)
click to toggle source
# File lib/orchestrator/datagram_server.rb, line 40 def send(ip, port, data) @loop.schedule do send_datagram(data, ip, port) end end