class UV::DatagramConnection

Public Class Methods

new(server = nil, port = nil) click to toggle source
Calls superclass method UV::Connection::new
# File lib/uv-rays/connection.rb, line 162
def initialize(server = nil, port = nil)
    super()

    @reactor = reactor
    @transport = @reactor.udp
    @transport.progress { |*args| on_read(*args) }

    if not server.nil?
        server = '127.0.0.1' if server == 'localhost'
        raise ArgumentError, "Invalid server address #{server}" unless IPAddress.valid?(server)
        @transport.bind(server, port)
    end

    @transport.start_read
end

Public Instance Methods

send_datagram(data, recipient_address, recipient_port) click to toggle source
# File lib/uv-rays/connection.rb, line 178
def send_datagram(data, recipient_address, recipient_port)
    if IPAddress.valid? recipient_address
        @transport.send recipient_address, recipient_port, data
    else
        # Async DNS resolution
        # Note:: send here will chain the promise
        @reactor.lookup(recipient_address).then do |result|
            @transport.send result[0][0], recipient_port, data
        end
    end
end