Class: UV::DatagramConnection
- Inherits:
-
Connection
- Object
- Connection
- UV::DatagramConnection
- Defined in:
- lib/uv-rays/connection.rb
Instance Attribute Summary
Attributes inherited from Connection
Instance Method Summary collapse
-
#initialize(server = nil, port = nil) ⇒ DatagramConnection
constructor
A new instance of DatagramConnection.
- #send_datagram(data, recipient_address, recipient_port) ⇒ Object
Methods inherited from Connection
#close_connection, #on_read, #pause, #paused?, #post_init, #resume
Constructor Details
#initialize(server = nil, port = nil) ⇒ DatagramConnection
Returns a new instance of DatagramConnection.
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# 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 |
Instance Method Details
#send_datagram(data, recipient_address, recipient_port) ⇒ Object
178 179 180 181 182 183 184 185 186 187 188 |
# 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 |