Class: AnyCable::BroadcastAdapters::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/anycable/broadcast_adapters/base.rb

Direct Known Subclasses

Http, Nats, Redis

Instance Method Summary collapse

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

Returns:

  • (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, options = nil)
  if batching?
    current_batch << {stream: stream, data: payload, meta: options}.compact
  else
    raw_broadcast({stream: stream, data: payload, meta: options}.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_batchingObject



21
22
23
# File 'lib/anycable/broadcast_adapters/base.rb', line 21

def finish_batching
  maybe_flush_batch
end

#raw_broadcast(_data) ⇒ Object

Raises:

  • (NotImplementedError)


6
7
8
# File 'lib/anycable/broadcast_adapters/base.rb', line 6

def raw_broadcast(_data)
  raise NotImplementedError
end

#start_batchingObject



17
18
19
# File 'lib/anycable/broadcast_adapters/base.rb', line 17

def start_batching
  self.batching_enabled = true
end