Class: Lanet::Sender
- Inherits:
-
Object
- Object
- Lanet::Sender
- Defined in:
- lib/lanet/sender.rb
Overview
Sender class for UDP message transmission
Defined Under Namespace
Classes: SendError
Instance Method Summary collapse
- #broadcast(message) ⇒ Object
- #close ⇒ Object
- #closed? ⇒ Boolean
-
#initialize(port) ⇒ Sender
constructor
A new instance of Sender.
- #send_to(target_ip, message) ⇒ Object
Constructor Details
#initialize(port) ⇒ Sender
Returns a new instance of Sender.
10 11 12 13 14 15 |
# File 'lib/lanet/sender.rb', line 10 def initialize(port) @port = port @socket = nil @closed = false initialize_socket end |
Instance Method Details
#broadcast(message) ⇒ Object
29 30 31 |
# File 'lib/lanet/sender.rb', line 29 def broadcast() send_to("255.255.255.255", ) end |
#close ⇒ Object
33 34 35 36 37 38 |
# File 'lib/lanet/sender.rb', line 33 def close return if @closed @socket&.close @closed = true end |
#closed? ⇒ Boolean
40 41 42 |
# File 'lib/lanet/sender.rb', line 40 def closed? @closed end |
#send_to(target_ip, message) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/lanet/sender.rb', line 17 def send_to(target_ip, ) raise SendError, "Sender is closed" if @closed raise ArgumentError, "Invalid IP address" if target_ip.nil? || target_ip.empty? raise ArgumentError, "Message cannot be nil" if .nil? @socket.send(, 0, target_ip, @port) rescue Errno::ENETUNREACH, Errno::EHOSTUNREACH => e raise SendError, "Network unreachable: #{e.}" rescue StandardError => e raise SendError, "Failed to send message: #{e.}" end |