Class: Whatsapp::SessionManager
- Inherits:
-
Object
- Object
- Whatsapp::SessionManager
- Defined in:
- lib/whatsapp/session_manager.rb
Overview
Thread-safe registry for managing multiple WhatsApp sessions.
Each session is identified by a unique string name. The manager ensures that only one session exists per name and handles cleanup on removal.
Instance Method Summary collapse
-
#disconnect_all! ⇒ void
Disconnect and remove all sessions.
-
#include?(name) ⇒ Boolean
Check if a session exists.
-
#initialize ⇒ SessionManager
constructor
A new instance of SessionManager.
-
#remove(name) ⇒ Session?
Remove and disconnect a session.
-
#session(name) ⇒ Session
Get or create a session by name.
-
#sessions ⇒ Hash{String => Session}
All active sessions.
-
#size ⇒ Integer
Number of active sessions.
Constructor Details
#initialize ⇒ SessionManager
Returns a new instance of SessionManager.
16 17 18 19 |
# File 'lib/whatsapp/session_manager.rb', line 16 def initialize @sessions = {} @mutex = Mutex.new end |
Instance Method Details
#disconnect_all! ⇒ void
This method returns an undefined value.
Disconnect and remove all sessions.
55 56 57 58 59 60 |
# File 'lib/whatsapp/session_manager.rb', line 55 def disconnect_all! @mutex.synchronize do @sessions.each_value(&:disconnect) @sessions.clear end end |
#include?(name) ⇒ Boolean
Check if a session exists.
73 74 75 |
# File 'lib/whatsapp/session_manager.rb', line 73 def include?(name) @mutex.synchronize { @sessions.key?(name.to_s) } end |
#remove(name) ⇒ Session?
Remove and disconnect a session.
43 44 45 46 47 48 49 50 |
# File 'lib/whatsapp/session_manager.rb', line 43 def remove(name) name = name.to_s @mutex.synchronize do session = @sessions.delete(name) session&.disconnect session end end |
#session(name) ⇒ Session
Get or create a session by name.
25 26 27 28 29 30 |
# File 'lib/whatsapp/session_manager.rb', line 25 def session(name) name = name.to_s @mutex.synchronize do @sessions[name] ||= Session.new(name) end end |
#sessions ⇒ Hash{String => Session}
All active sessions.
35 36 37 |
# File 'lib/whatsapp/session_manager.rb', line 35 def sessions @mutex.synchronize { @sessions.dup } end |
#size ⇒ Integer
Number of active sessions.
65 66 67 |
# File 'lib/whatsapp/session_manager.rb', line 65 def size @mutex.synchronize { @sessions.size } end |