Module: Audiences

Included in:
Streamdal::Client, Streamdal::TestObj
Defined in:
lib/audiences.rb

Instance Method Summary collapse

Instance Method Details

#_add_audience(aud) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/audiences.rb', line 23

def _add_audience(aud)
  # Add an audience to the local cache map and send to server
  return if _seen_audience(aud)

  @audiences[aud_to_str(aud)] = aud

  req = Streamdal::Protos::NewAudienceRequest.new
  req.session_id = @session_id
  req.audience = aud
  @stub.new_audience(req, metadata: )
end

#_add_audiencesObject



35
36
37
38
39
40
41
42
43
44
# File 'lib/audiences.rb', line 35

def _add_audiences
  # This method is used to re-announce audiences after a disconnect

  @audiences.each do |aud|
    req = Streamdal::Protos::NewAudienceRequest.new
    req.session_id = @session_id
    req.audience = aud
    @stub.new_audience(req, metadata: )
  end
end

#_seen_audience(aud) ⇒ Object



19
20
21
# File 'lib/audiences.rb', line 19

def _seen_audience(aud)
  @audiences.key?(aud_to_str(aud))
end

#aud_to_str(aud) ⇒ Object



4
5
6
# File 'lib/audiences.rb', line 4

def aud_to_str(aud)
  "#{aud.service_name}.#{aud.component_name}.#{aud.operation_type}.#{aud.operation_name}"
end

#str_to_aud(str) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/audiences.rb', line 8

def str_to_aud(str)
  # TODO: move to common package
  parts = str.split('.')
  aud = Streamdal::Protos::Audience.new
  aud.service_name = parts[0]
  aud.component_name = parts[1]
  aud.operation_type = parts[2]
  aud.operation_name = parts[3]
  aud
end