Class: PatronusFati::DataModels::Connection

Inherits:
Object
  • Object
show all
Includes:
CommonState
Defined in:
lib/patronus_fati/data_models/connection.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CommonState

#data_dirty?, #diagnostic_data, #dirty?, included, #mark_synced, #new?, #set_sync_flag, #status_dirty?, #sync_flag?

Constructor Details

#initialize(bssid, mac) ⇒ Connection

Returns a new instance of Connection.



39
40
41
42
43
44
# File 'lib/patronus_fati/data_models/connection.rb', line 39

def initialize(bssid, mac)
  super
  self.bssid = bssid
  self.link_lost = false
  self.mac = mac
end

Instance Attribute Details

#bssidvoid

Returns the value of attribute bssid.



6
7
8
# File 'lib/patronus_fati/data_models/connection.rb', line 6

def bssid
  @bssid
end

Returns the value of attribute link_lost.



6
7
8
# File 'lib/patronus_fati/data_models/connection.rb', line 6

def link_lost
  @link_lost
end

#macvoid

Returns the value of attribute mac.



6
7
8
# File 'lib/patronus_fati/data_models/connection.rb', line 6

def mac
  @mac
end

Class Method Details

.[](key) ⇒ void



8
9
10
11
# File 'lib/patronus_fati/data_models/connection.rb', line 8

def self.[](key)
  bssid, mac = key.split('^')
  instances[key] ||= new(bssid, mac)
end

.current_expiration_thresholdvoid



13
14
15
# File 'lib/patronus_fati/data_models/connection.rb', line 13

def self.current_expiration_threshold
  Time.now.to_i - CONNECTION_EXPIRATION
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/patronus_fati/data_models/connection.rb', line 35

def active?
  super && !link_lost
end

#announce_changesvoid



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/patronus_fati/data_models/connection.rb', line 17

def announce_changes
  return unless dirty? && DataModels::AccessPoint[bssid].valid? &&
    DataModels::Client[mac].valid?

  state = active? ? :connect : :disconnect
  PatronusFati.event_handler.event(:connection, state, full_state, diagnostic_data)

  # We need to reset the first seen so we get fresh duration information
  presence.first_seen = nil

  unless active?
    DataModels::AccessPoint[bssid].remove_client(mac)
    DataModels::Client[mac].remove_access_point(bssid)
  end

  mark_synced
end

#full_statevoid



46
47
48
49
50
# File 'lib/patronus_fati/data_models/connection.rb', line 46

def full_state
  data = { 'access_point' => bssid, 'client' => mac, 'connected' => active?}
  data['duration'] = presence.visible_time if !active? && presence.visible_time
  data
end