class JanusGateway::Plugin::Rtpbroadcast::Mountpoint

Attributes

data[R]

@return [Hash, NilClass]

plugin[R]

@return [JanusGateway::Resource::Plugin]

Public Class Methods

new(client, plugin, id, streams = nil, channel_data = nil) click to toggle source

@param [JanusGateway::Client] client @param [JanusGateway::Plugin::Rtpbroadcast] plugin @param [String] id @param [Array] streams @param [String] channel_data

Calls superclass method JanusGateway::Resource::new
# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 14
def initialize(client, plugin, id, streams = nil, channel_data = nil)
  @plugin = plugin
  @data = nil
  @channel_data = channel_data

  @streams = streams || [
    {
      audio: 'yes',
      video: 'yes',
      audiopt: 111,
      audiortpmap: 'opus/48000/2',
      videopt: 100,
      videortpmap: 'VP8/90000'
    }
  ]

  super(client, id)
end

Public Instance Methods

create() click to toggle source

@return [Concurrent::Promise]

# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 34
def create
  promise = Concurrent::Promise.new

  client.send_transaction(
    janus: 'message',
    session_id: plugin.session.id,
    handle_id: plugin.id,
    body: {
      request: 'create',
      id: id,
      name: id,
      description: id,
      recorded: true,
      streams: @streams,
      channel_data: @channel_data
    }
  ).then do |data|
    plugindata = data['plugindata']['data']
    if plugindata['error_code'].nil?
      _on_created(data)

      promise.set(self).execute
    else
      error = JanusGateway::Error.new(plugindata['error_code'], plugindata['error'])

      _on_error(error)

      promise.fail(error).execute
    end
  end.rescue do |error|
    promise.fail(error).execute
  end

  promise
end
destroy() click to toggle source

@return [Concurrent::Promise]

# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 76
def destroy
  promise = Concurrent::Promise.new

  _on_destroyed
  promise.set(self).execute

  promise
end
session() click to toggle source

@return [JanusGateway::Resource::Session]

# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 86
def session
  plugin.session
end
streams() click to toggle source

@return [Array<Hash>]

# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 71
def streams
  !data.nil? ? data['data']['stream']['streams'] : []
end

Private Instance Methods

_on_created(data) click to toggle source
# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 96
def _on_created(data)
  @data = data['plugindata']

  plugin.on :destroy do
    destroy
  end

  emit :create
end
_on_destroyed() click to toggle source
# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 106
def _on_destroyed
  emit :destroy
end
_on_error(error) click to toggle source
# File lib/janus_gateway/plugin/rtpbroadcast/mountpoint.rb, line 92
def _on_error(error)
  emit :error, error
end