class DCase::Local
Constants
- MAX_PACKET_SIZE
Attributes
crypto[RW]
socket[RW]
Public Class Methods
new(addr, port, crypto, config)
click to toggle source
# File lib/dcase/local.rb, line 9 def initialize(addr, port, crypto, config) @socket = UDPSocket.new @socket.to_io.setsockopt(:SOCKET, :REUSEADDR, 1) @socket.bind(addr, port) @crypto = crypto @config = config async.run end
Public Instance Methods
handle_data(data, port, addr)
click to toggle source
# File lib/dcase/local.rb, line 26 def handle_data(data, port, addr) connector = UDPSocket.new connector.send crypto.encrypt(data), 0, @config.server, @config.port async.request(connector, port, addr) end
request(connector, port, addr)
click to toggle source
# File lib/dcase/local.rb, line 33 def request(connector, port, addr) data, (_, _port, _addr) = connector.recvfrom(16384) @socket.send crypto.decrypt(data), 0, addr, port connector.close unless connector.closed? end
run()
click to toggle source
# File lib/dcase/local.rb, line 19 def run loop do data, (_, port, addr) = @socket.recvfrom(MAX_PACKET_SIZE) handle_data(data, port, addr) end end