mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
37 lines
848 B
Ruby
37 lines
848 B
Ruby
# frozen_string_literal: true
|
|
|
|
module ActionCable
|
|
module SubscriptionAdapter
|
|
class Inline < Base # :nodoc:
|
|
def initialize(*)
|
|
super
|
|
@subscriber_map = nil
|
|
end
|
|
|
|
def broadcast(channel, payload)
|
|
subscriber_map.broadcast(channel, payload)
|
|
end
|
|
|
|
def subscribe(channel, callback, success_callback = nil)
|
|
subscriber_map.add_subscriber(channel, callback, success_callback)
|
|
end
|
|
|
|
def unsubscribe(channel, callback)
|
|
subscriber_map.remove_subscriber(channel, callback)
|
|
end
|
|
|
|
def shutdown
|
|
# nothing to do
|
|
end
|
|
|
|
private
|
|
def subscriber_map
|
|
@subscriber_map || @server.mutex.synchronize { @subscriber_map ||= new_subscriber_map }
|
|
end
|
|
|
|
def new_subscriber_map
|
|
SubscriberMap.new
|
|
end
|
|
end
|
|
end
|
|
end
|