class JanusGateway::Resource::Plugin

Attributes

name[R]

@return [String]

session[R]

@return [JanusGateway::Resource::Session]

Public Class Methods

new(client, session, plugin_name) click to toggle source

@param [JanusGateway::Client] client @param [JanusGateway::Resource::Session] session @param [String] plugin_name

Calls superclass method JanusGateway::Resource::new
# File lib/janus_gateway/resource/plugin.rb, line 12
def initialize(client, session, plugin_name)
  @session = session
  @name = plugin_name

  super(client)
end

Public Instance Methods

create() click to toggle source

@return [Concurrent::Promise]

# File lib/janus_gateway/resource/plugin.rb, line 20
def create
  promise = Concurrent::Promise.new

  client.send_transaction(
    janus: 'attach',
    plugin: name,
    session_id: @session.id
  ).then do |*args|
    _on_created(*args)

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

  promise
end
destroy() click to toggle source
# File lib/janus_gateway/resource/plugin.rb, line 38
def destroy
  promise = Concurrent::Promise.new

  _on_destroyed
  promise.set(self).execute

  promise
end

Private Instance Methods

_on_created(data) click to toggle source
# File lib/janus_gateway/resource/plugin.rb, line 49
def _on_created(data)
  @id = data['data']['id']

  session.on :destroy do |_data|
    destroy
  end

  emit :create
end
_on_destroyed() click to toggle source
# File lib/janus_gateway/resource/plugin.rb, line 59
def _on_destroyed
  emit :destroy
end