blob: e2cb2d932c8883cd8d0c4a3e1280150a38c6a005 (
plain) (
tree)
|
|
module ActionCable
class RemoteConnection
class InvalidIdentifiersError < StandardError; end
include Connection::Identifier
delegate :redis, to: :server
def initialize(server, ids)
@server = server
set_identifier_instance_vars(ids)
end
def disconnect
message = { type: 'disconnect' }.to_json
redis.publish(internal_redis_channel, message)
end
def identifiers
@server.connection_identifiers
end
def redis
@redis ||= Redis.new(@server.redis_config)
end
private
def set_identifier_instance_vars(ids)
raise InvalidIdentifiersError unless valid_identifiers?(ids)
ids.each { |k,v| instance_variable_set("@#{k}", v) }
end
def valid_identifiers?(ids)
keys = ids.keys
identifiers.all? { |id| keys.include?(id) }
end
end
end
|