Class: Takagi::Server::UdpWorker

Inherits:
Object
  • Object
show all
Defined in:
lib/takagi/server/udp_worker.rb

Overview

Handles incoming UDP messages on behalf of the master Udp server.

Instance Method Summary collapse

Constructor Details

#initialize(socket:, middleware_stack:, **options) ⇒ UdpWorker

Returns a new instance of UdpWorker.



10
11
12
13
14
15
16
17
18
19
# File 'lib/takagi/server/udp_worker.rb', line 10

def initialize(socket:, middleware_stack:, **options)
  @socket = socket
  @middleware_stack = middleware_stack
  @router = options.fetch(:router, nil)
  @sender = options.fetch(:sender)
  @logger = options.fetch(:logger)
  @port = options.fetch(:port)
  @threads = options.fetch(:threads)
  @dedup_cache = Takagi::Message::DeduplicationCache.new
end

Instance Method Details

#runObject



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/takagi/server/udp_worker.rb', line 21

def run
  @shutdown = false
  trap('TERM') { @shutdown = true }
  trap('INT') { @shutdown = true }

  queue = Queue.new
  Array.new(@threads) { spawn_thread(queue) }

  @logger.debug "[Worker PID: #{Process.pid}] Listening on CoAP://0.0.0.0:#{@port} with #{@threads} threads"
  process_loop(queue)
end