Sha256: f01a7d6f2561870f7b1fe82300e31447ac905d98a22ce5a88af0d2c6678738ff

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

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

  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

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

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

    @audiences[aud_to_str(aud)] = aud

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

  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: _metadata)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
streamdal-0.0.1 lib/audiences.rb