blob: da87d87e838aeb8a30e0ede117d185e21963c74b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# frozen_string_literal: true
module Awareness
extend ActiveSupport::Concern
KEY_NAMESPACE = "gitlab:awareness"
private_constant :KEY_NAMESPACE
def join(session)
session.join(self)
nil
end
def leave(session)
session.leave(self)
nil
end
def session_ids
with_redis do |redis|
redis
.smembers(user_sessions_key)
# converts session ids from (internal) integer to hex presentation
.map { |key| key.to_i.to_s(16) }
end
end
private
def user_sessions_key
"#{KEY_NAMESPACE}:user:#{id}:sessions"
end
def with_redis
Gitlab::Redis::SharedState.with do |redis|
yield redis if block_given?
end
end
end
|