Class: Takagi::Observer::Sender
- Inherits:
-
Object
- Object
- Takagi::Observer::Sender
- Defined in:
- lib/takagi/observer/sender.rb
Overview
Dispatches outbound notifications to subscribed observers. Supports multiple transports (UDP, TCP, etc.) via transport registry.
Instance Method Summary collapse
-
#initialize(transport: :udp) ⇒ Sender
constructor
A new instance of Sender.
- #send_packet(subscriber, value) ⇒ Object
Constructor Details
#initialize(transport: :udp) ⇒ Sender
Returns a new instance of Sender.
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/takagi/observer/sender.rb', line 8 def initialize(transport: :udp) @transport = transport # NEW: Use transport registry to get appropriate sender transport_class = Takagi::Network::Registry.get(@transport) transport_impl = transport_class.new @sender = transport_impl.create_sender rescue Takagi::Network::Registry::TransportNotFoundError # Fallback to UDP if transport not found Takagi.logger.warn "Transport #{@transport} not found, using UDP" @sender = Takagi::Network::UdpSender.instance end |
Instance Method Details
#send_packet(subscriber, value) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/takagi/observer/sender.rb', line 20 def send_packet(subscriber, value) # Get transport from subscriber metadata, or use instance default transport = subscriber[:transport] || @transport = Takagi::Message::Outbound.new( code: '2.05', payload: value.to_s, token: subscriber[:token], message_id: rand(0..0xFFFF), type: 1, # NON transport: transport ) @sender.transmit(, subscriber[:address], subscriber[:port]) rescue StandardError => e Takagi.logger.error "Observer Notify Error: #{e.}" end |