cable_room 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cable_room
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Knapp
@@ -114,11 +114,13 @@ files:
114
114
  - lib/cable_room/railtie.rb
115
115
  - lib/cable_room/room.rb
116
116
  - lib/cable_room/room/base.rb
117
+ - lib/cable_room/room/broadcasting.rb
117
118
  - lib/cable_room/room/callbacks.rb
118
119
  - lib/cable_room/room/channel_adapter.rb
119
120
  - lib/cable_room/room/input_handling.rb
120
121
  - lib/cable_room/room/lifecycle.rb
121
- - lib/cable_room/room/member_management.rb
122
+ - lib/cable_room/room/port_management.rb
123
+ - lib/cable_room/room/port_scoping.rb
122
124
  - lib/cable_room/room/reaping.rb
123
125
  - lib/cable_room/room/threading.rb
124
126
  - lib/cable_room/room/user_management.rb
@@ -1,67 +0,0 @@
1
- module CableRoom
2
- module Room
3
- module MemberManagement
4
- extend ActiveSupport::Concern
5
-
6
- MEMBER_TIMEOUT = 30.seconds
7
-
8
- included do
9
- periodically :check_member_inactivity, every: MEMBER_TIMEOUT
10
- end
11
-
12
- protected
13
-
14
- def on_member_left(mtok); end
15
-
16
- def on_member_joined(mtok); end
17
-
18
- def touch_member_activity(mtok)
19
- member_data(mtok)[:last_seen_at] = Time.now
20
- end
21
-
22
- def member_data(mtok = @current_message_member_token)
23
- @member_data ||= {}
24
- @member_data[mtok] ||= HashWithIndifferentAccess.new
25
- end
26
-
27
- def handle_received_message(message)
28
- mtok = message['mtok']
29
-
30
- previous_mtok = @current_message_member_token
31
- @current_message_member_token = mtok
32
-
33
- case message['type']
34
- when 'member_joined'
35
- mdata = member_data(mtok)
36
- mdata[:last_seen_at] = Time.now
37
- touch_member_activity(mtok)
38
-
39
- mdata.merge! ::ActiveJob::Arguments.deserialize(message['extra'])[0] if message['extra'].present?
40
-
41
- on_member_joined(mtok)
42
- when 'member_left'
43
- on_member_left(mtok)
44
- @member_data.delete(mtok)
45
- when 'member_ping'
46
- touch_member_activity(mtok)
47
- else
48
- super
49
- end
50
- ensure
51
- @current_message_member_token = previous_mtok
52
- end
53
-
54
- def check_member_inactivity
55
- return unless @member_data
56
-
57
- threshold = MEMBER_TIMEOUT.ago
58
- @member_data.each do |mtok, data|
59
- next unless data[:last_seen_at] && data[:last_seen_at] < threshold
60
-
61
- on_member_left(mtok)
62
- @member_data.delete(mtok)
63
- end
64
- end
65
- end
66
- end
67
- end