Class: AnyCable::BroadcastAdapters::Base
- Inherits:
-
Object
- Object
- AnyCable::BroadcastAdapters::Base
- Defined in:
- lib/anycable/broadcast_adapters/base.rb
Instance Method Summary collapse
- #announce! ⇒ Object
- #batching(enabled = true) ⇒ Object
- #batching? ⇒ Boolean
- #broadcast(stream, payload, options = nil) ⇒ Object
- #broadcast_command(command, **payload) ⇒ Object
- #finish_batching ⇒ Object
- #raw_broadcast(_data) ⇒ Object
- #start_batching ⇒ Object
Instance Method Details
#announce! ⇒ Object
41 42 43 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 41 def announce! logger.info "Broadcasting via #{self.class.name}" end |
#batching(enabled = true) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 10 def batching(enabled = true) self.batching_enabled = enabled yield ensure maybe_flush_batch end |
#batching? ⇒ Boolean
25 26 27 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 25 def batching? Thread.current[:anycable_batching]&.last end |
#broadcast(stream, payload, options = nil) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 29 def broadcast(stream, payload, = nil) if batching? current_batch << {stream: stream, data: payload, meta: }.compact else raw_broadcast({stream: stream, data: payload, meta: }.compact.to_json) end end |
#broadcast_command(command, **payload) ⇒ Object
37 38 39 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 37 def broadcast_command(command, **payload) raw_broadcast({command: command, payload: payload}.to_json) end |
#finish_batching ⇒ Object
21 22 23 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 21 def finish_batching maybe_flush_batch end |
#raw_broadcast(_data) ⇒ Object
6 7 8 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 6 def raw_broadcast(_data) raise NotImplementedError end |
#start_batching ⇒ Object
17 18 19 |
# File 'lib/anycable/broadcast_adapters/base.rb', line 17 def start_batching self.batching_enabled = true end |