Class: ActionCable::Server::ThreadedExecutor
Do not use. This class is for internal use only.
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | actioncable/lib/action_cable/server/base.rb |
Overview
A wrapper over ConcurrentRuby::ThreadPoolExecutor and Concurrent::TimerTask
Class Method Summary
Instance Method Summary
Constructor Details
.new(max_size: 10, name: "server") ⇒ ThreadedExecutor
# File 'actioncable/lib/action_cable/server/base.rb', line 11
def initialize(max_size: 10, name: "server") @executor = Concurrent::ThreadPoolExecutor.new( name: "ActionCable-#{name}", min_threads: 1, max_threads: max_size, max_queue: 0, ) end
Instance Method Details
#post(task = nil, &block)
[ GitHub ]# File 'actioncable/lib/action_cable/server/base.rb', line 20
def post(task = nil, &block) task ||= block @executor << task end
#shutdown
[ GitHub ]# File 'actioncable/lib/action_cable/server/base.rb', line 29
def shutdown = @executor.shutdown
#timer(interval, &block)
[ GitHub ]# File 'actioncable/lib/action_cable/server/base.rb', line 25
def timer(interval, &block) Concurrent::TimerTask.new(execution_interval: interval, &block).tap(&:execute) end