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.



3
4
5
6
# File 'lib/loco/ws_connected_resources_manager.rb', line 3

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

Class Method Details

.add(identifier) ⇒ Object



15
16
17
18
19
20
# File 'lib/loco/ws_connected_resources_manager.rb', line 15

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

.del(identifier) ⇒ Object



22
23
24
25
26
27
# File 'lib/loco/ws_connected_resources_manager.rb', line 22

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

.identifiersObject



9
10
11
12
13
# File 'lib/loco/ws_connected_resources_manager.rb', line 9

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

.keyObject



29
# File 'lib/loco/ws_connected_resources_manager.rb', line 29

def key; "loco:conn_ids" end

Instance Method Details

#connected?(resource) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
45
# File 'lib/loco/ws_connected_resources_manager.rb', line 41

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

#connected_resourcesObject



32
33
34
35
36
37
38
39
# File 'lib/loco/ws_connected_resources_manager.rb', line 32

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