class TeamSpeak3::VirtualServer

Attributes

autostart[R]
clients_online[R]
id[R]
name[R]
port[R]
query_clients_online[R]
server[R]
slots[R]
status[R]
uid[R]
uptime[R]

Public Class Methods

new(server, params) click to toggle source
# File lib/virtual_server.rb, line 16
def initialize(server, params)
  @server = server

  @id = params[:virtualserver_id].to_i
  @name = params[:virtualserver_name]
  @port = params[:virtualserver_port].to_i
  @status = params[:virtualserver_status].to_sym
  @clients_online = params[:virtualserver_clientsonline].to_i
  @query_clients_online = params[:virtualserver_queryclientsonline].to_i
  @slots = params[:virtualserver_maxclients].to_i
  @uptime = Time.now - params[:virtualserver_uptime].to_i
  @autostart = params[:virtualserver_uptime].to_i == 1
  @uid = params[:virtualserver_unique_identifier]
end

Public Instance Methods

==(target) click to toggle source
# File lib/virtual_server.rb, line 93
def ==(target)
  @id == target
end
channels() click to toggle source
# File lib/virtual_server.rb, line 60
def channels
  channels_list = ChannelCollection.new(self)
  channels = execute :channellist, options: [:topic, :flags, :voice, :limits, :icon]

  channels[:data].each do |channel|
    channels_list << Channel.new(self, channel)
  end

  channels_list
end
clients() click to toggle source
# File lib/virtual_server.rb, line 71
def clients
  clients_list = []
  clients = execute :clientlist, options: [:uid, :away, :voice, :times, :groups, :info, :icon, :country]

  clients[:data].each do |client|
    clients_list << TeamSpeak3::Client.new(self, client)
  end

  clients_list
end
destroy!() click to toggle source
# File lib/virtual_server.rb, line 31
def destroy!
  execute :serverstop, sid: @id, allow_to_fail: true, ignore_active_server: true
  execute :serverdelete, sid: @id, ignore_active_server: true

  true
end
execute(command, params = {}) click to toggle source
# File lib/virtual_server.rb, line 86
def execute(command, params = {})
  check_active_server unless params[:ignore_active_server]
  params.delete(:ignore_active_server)

  @server.execute(command, params)
end
send_message(message) click to toggle source
# File lib/virtual_server.rb, line 82
def send_message(message)
  server.send_message_to(self, message)
end
start() click to toggle source
# File lib/virtual_server.rb, line 38
def start
  begin
    execute :serverstart, sid: @id, ignore_active_server: true
  rescue Exceptions::CommandExecutionFailed => err
    raise Exceptions::VirtualServerAlreadyRunning.new(@id) if err.message =~ /server got an invalid status/ && status == :online
    raise
  end

  true
end
stop() click to toggle source
# File lib/virtual_server.rb, line 49
def stop
  begin
    execute :serverstop, sid: @id, ignore_active_server: true
  rescue Exceptions::CommandExecutionFailed => err
    raise Exceptions::VirtualServerNotRunning.new(@id) if err.message =~ /server is not running/
    raise
  end

  true
end

Private Instance Methods

check_active_server() click to toggle source
# File lib/virtual_server.rb, line 99
def check_active_server
  if @server.active_server != @id
    @server.select_server(@id)
  end
end