123456789_123456789_123456789_123456789_123456789_

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

[ GitHub ]

  
# 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