Class: Loco::WsConnectedResourcesManager

Inherits:
Object
  • Object
show all
Defined in:
lib/loco/ws_connected_resources_manager.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resources) ⇒ WsConnectedResourcesManager

Returns a new instance of WsConnectedResourcesManager.



5
6
7
8
# File 'lib/loco/ws_connected_resources_manager.rb', line 5

def initialize resources
  @resources = resources
  @connected_resources = nil
end

Class Method Details

.add(identifier) ⇒ Object



17
18
19
20
21
22
# File 'lib/loco/ws_connected_resources_manager.rb', line 17

def add identifier
  ids = identifiers
  return if ids.include? identifier
  ids << identifier
  WsConnectionStorage.current.set key, ids.to_json
end

.del(identifier) ⇒ Object



24
25
26
27
28
29
# File 'lib/loco/ws_connected_resources_manager.rb', line 24

def del identifier
  ids = identifiers
  return unless ids.include? identifier
  ids.delete identifier
  WsConnectionStorage.current.set key, ids.to_json
end

.identifiersObject



11
12
13
14
15
# File 'lib/loco/ws_connected_resources_manager.rb', line 11

def identifiers
  val = WsConnectionStorage.current.get key
  return [] if val.blank?
  JSON.parse val
end

.keyObject



31
32
33
# File 'lib/loco/ws_connected_resources_manager.rb', line 31

def key
  'loco:conn_ids'
end

Instance Method Details

#connected?(resource) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# File 'lib/loco/ws_connected_resources_manager.rb', line 45

def connected? resource
  connected_resources.map do |res|
    WsConnectionManager.new(res).identifier
  end.include? WsConnectionManager.new(resource).identifier
end

#connected_resourcesObject



36
37
38
39
40
41
42
43
# File 'lib/loco/ws_connected_resources_manager.rb', line 36

def connected_resources
  return @connected_resources if @connected_resources
  @resources.each do |resource|
    next if WsConnectionManager.new(resource).connected_uuids.empty?
    add resource
  end
  @connected_resources || []
end