Class: Presence::Tracker
- Inherits:
-
Object
- Object
- Presence::Tracker
- Defined in:
- lib/presence/listeners/tracker.rb
Overview
Scanner listener that tracks all MACs found by the scanner. This listener is intended to be used when scanning in a loop. The tracker will maintain a list of MAC addresses on the network and detect when a new client connects or when a connected client disconnects.
Instance Method Summary collapse
-
#initialize ⇒ Tracker
constructor
A new instance of Tracker.
- #listener_registered(l, scanner) ⇒ Object
- #mac_changed(mac, old_ip, new_ip) ⇒ Object
- #mac_connected(mac, ip) ⇒ Object
- #mac_disconnected(mac, old_ip) ⇒ Object
- #mac_found(ip, mac) ⇒ Object
- #scan_finished(ip_prefix, range) ⇒ Object
Constructor Details
Instance Method Details
#listener_registered(l, scanner) ⇒ Object
15 16 17 |
# File 'lib/presence/listeners/tracker.rb', line 15 def listener_registered(l, scanner) scanner.register_listener(@current_list) if l == self end |
#mac_changed(mac, old_ip, new_ip) ⇒ Object
43 44 45 46 |
# File 'lib/presence/listeners/tracker.rb', line 43 def mac_changed(mac, old_ip, new_ip) puts " ** #{mac} changed ip from: #{old_ip} to #{new_ip}" # Do something interesting. end |
#mac_connected(mac, ip) ⇒ Object
38 39 40 41 |
# File 'lib/presence/listeners/tracker.rb', line 38 def mac_connected(mac, ip) puts " ** #{mac} connected as #{ip}" # Do something interesting. end |
#mac_disconnected(mac, old_ip) ⇒ Object
48 49 50 51 |
# File 'lib/presence/listeners/tracker.rb', line 48 def mac_disconnected(mac, old_ip) puts " ** #{mac} disconnected from #{old_ip}" # Do something interesting. end |
#mac_found(ip, mac) ⇒ Object
19 20 21 22 23 24 25 26 |
# File 'lib/presence/listeners/tracker.rb', line 19 def mac_found(ip, mac) if @mac_history[mac].nil? mac_connected(mac, ip) elsif @mac_history[mac] != ip mac_changed(mac, @mac_history[mac], ip) end @mac_history[mac] = ip end |
#scan_finished(ip_prefix, range) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/presence/listeners/tracker.rb', line 28 def scan_finished(ip_prefix, range) macs_left = @mac_history.keys - @current_list.macs_found.keys macs_left.each do |mac| old_ip = @mac_history[mac] mac_disconnected(mac, old_ip) @mac_history.delete(mac) end @current_list.macs_found.clear end |