Method: ConcurrentWorker::ConcurrentProcess#set_rcv_thread

Defined in:
lib/concurrent_worker.rb

#set_rcv_threadObject



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# File 'lib/concurrent_worker.rb', line 302

def set_rcv_thread
  Thread.new do
    Thread.handle_interrupt(Object => :never) do
      begin
        Thread.handle_interrupt(Object => :immediate) do
          loop do
            result = @ipc_channel.recv
            break if result == :worker_loop_finished
            raise result if result.kind_of?(Exception)

            call_result_callbacks(result)
          end
        end
      rescue
        Thread.pass
        raise $!
      ensure
        @req_counter.close
        @ipc_channel.close
        call_retired_callbacks
      end
    end
  end
end