Class: WhereIsWaldo::Adapters::BaseAdapter

Inherits:
Object
  • Object
show all
Defined in:
app/services/where_is_waldo/adapters/base_adapter.rb

Direct Known Subclasses

DatabaseAdapter, RedisAdapter

Instance Method Summary collapse

Instance Method Details

#cleanup(timeout: nil) ⇒ Integer

Remove stale records

Parameters:

  • timeout (Integer) (defaults to: nil)

    Seconds threshold

Returns:

  • (Integer)

    Number removed

Raises:

  • (NotImplementedError)


57
58
59
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 57

def cleanup(timeout: nil)
  raise NotImplementedError
end

#connect(session_id:, subject_id:, metadata: {}) ⇒ Boolean

Register a presence

Parameters:

  • session_id (String)

    Unique session identifier

  • subject_id (Integer/String)

    Subject identifier (user, member, etc.)

  • metadata (Hash) (defaults to: {})

    Additional data

Returns:

  • (Boolean)

    success

Raises:

  • (NotImplementedError)


11
12
13
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 11

def connect(session_id:, subject_id:, metadata: {})
  raise NotImplementedError
end

#disconnect(session_id: nil, subject_id: nil) ⇒ Boolean

Remove a presence

Parameters:

  • session_id (String) (defaults to: nil)

    Session identifier (optional if subject_id provided)

  • subject_id (Integer/String) (defaults to: nil)

    Subject identifier (optional)

Returns:

  • (Boolean)

    success

Raises:

  • (NotImplementedError)


19
20
21
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 19

def disconnect(session_id: nil, subject_id: nil)
  raise NotImplementedError
end

#heartbeat(session_id:, tab_visible: true, subject_active: true, metadata: {}) ⇒ Boolean

Update heartbeat

Parameters:

  • session_id (String)

    Session identifier

  • tab_visible (Boolean) (defaults to: true)

    Is tab in foreground

  • subject_active (Boolean) (defaults to: true)

    Recent activity

  • metadata (Hash) (defaults to: {})

    Additional data

Returns:

  • (Boolean)

    success

Raises:

  • (NotImplementedError)


29
30
31
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 29

def heartbeat(session_id:, tab_visible: true, subject_active: true, metadata: {})
  raise NotImplementedError
end

#online_subject_ids(timeout: nil) ⇒ Array<Integer>

Get all online subject IDs

Parameters:

  • timeout (Integer) (defaults to: nil)

    Seconds threshold

Returns:

  • (Array<Integer>)

    Subject IDs

Raises:

  • (NotImplementedError)


36
37
38
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 36

def online_subject_ids(timeout: nil)
  raise NotImplementedError
end

#session_status(session_id) ⇒ Hash?

Get session status

Parameters:

  • session_id (String)

    Session identifier

Returns:

  • (Hash, nil)

    Presence record or nil

Raises:

  • (NotImplementedError)


50
51
52
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 50

def session_status(session_id)
  raise NotImplementedError
end

#sessions_for_subject(subject_id) ⇒ Array<Hash>

Get all sessions for a subject

Parameters:

  • subject_id (Integer/String)

    Subject identifier

Returns:

  • (Array<Hash>)

    Presence records

Raises:

  • (NotImplementedError)


43
44
45
# File 'app/services/where_is_waldo/adapters/base_adapter.rb', line 43

def sessions_for_subject(subject_id)
  raise NotImplementedError
end