solid_cable 3.0.11 → 3.0.12

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fccedecff40c474f2882095d7d8dd3f79ed000fe852ec83a227a0c4ae53f8130
4
- data.tar.gz: de880460edfb1524f09c8425079a2256ea3d420c5b5cdf9cf6f820cb3c012933
3
+ metadata.gz: 2bb120f549ab39af171e93f67350d0ca6b44d2d43e42e23d538c74f894a8e4d4
4
+ data.tar.gz: 13404708ae736ed703e80623b0b8496bbaca984cee263a97818951abb94fe35c
5
5
  SHA512:
6
- metadata.gz: c35d6b76724809ce6b93bb206d95743409484f9726a9697ae5406521c4952d590661352c3f2292d2945dc0b7953e1a3ab1dd251517550e6b51089c7059fc144d
7
- data.tar.gz: 32efff41d4eee4d79f34e20fe89475ea8131f2ceaf7da8da92e071eb00ebb0c7ae5388e73357112948ae6771ffede8cd7678a3fe1aca8250570e193d1213cf63
6
+ metadata.gz: 5fc3825837aa2ee2ff4e805e40a45a2c19471576f91d0f9a0603fdb679542e2a473dd2797cd2a0bf795785ea65d713b01c2c3d0f2ef3bdcdba100608a3cf6115
7
+ data.tar.gz: 1b9474761a35f8aa38063128b6c4fb3a9c30ae94b995e80d1f17eb590cf47ff84f684f557328448d8cc4aa2a26ba509b9b6c32f7ad179d140f9cc23cccca94e9
@@ -52,6 +52,9 @@ module ActionCable
52
52
  @critical = Concurrent::Semaphore.new(0)
53
53
 
54
54
  @thread = Thread.new do
55
+ Thread.current.name = "solid_cable_listener"
56
+ Thread.current.report_on_exception = true
57
+
55
58
  listen
56
59
  end
57
60
  end
@@ -103,6 +106,11 @@ module ActionCable
103
106
 
104
107
  private
105
108
  attr_reader :event_loop, :thread
109
+ attr_writer :last_id
110
+
111
+ def last_id
112
+ @last_id ||= last_message_id
113
+ end
106
114
 
107
115
  def last_message_id
108
116
  ::SolidCable::Message.maximum(:id) || 0
@@ -116,14 +124,18 @@ module ActionCable
116
124
  current_channels = channels.dup
117
125
 
118
126
  ::SolidCable::Message.
119
- broadcastable(current_channels.keys, current_channels.values.min).
127
+ broadcastable(current_channels.keys, last_id).
120
128
  each do |message|
121
- channels.compute_if_present(message.channel) do |last_id|
122
- break if last_id >= message.id
129
+ should_broadcast_message = false
130
+ channels.compute_if_present(message.channel) do |channel_last_id|
131
+ break if channel_last_id >= message.id
123
132
 
124
- broadcast(message.channel, message.payload)
133
+ should_broadcast_message = true
125
134
  message.id
126
135
  end
136
+
137
+ broadcast(message.channel, message.payload) if should_broadcast_message
138
+ self.last_id = message.id
127
139
  end
128
140
  end
129
141
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidCable
4
- VERSION = "3.0.11"
4
+ VERSION = "3.0.12"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_cable
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.11
4
+ version: 3.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Pezza