class Opensips::MI::Transport::Datagram

Constants

RECVMAXLEN
TIMEOUT

Public Class Methods

init(params) click to toggle source
# File lib/opensips/mi/transport/datagram.rb, line 9
def init(params)
  Datagram.new params
end
new(params) click to toggle source
# File lib/opensips/mi/transport/datagram.rb, line 14
def initialize(params)
  host_valid? params
  @sock = Socketry::UDP::Socket.connect(params[:host], params[:port])
  @timeout = params[:timeout].to_i
end

Public Instance Methods

command(cmd, params = []) click to toggle source
# File lib/opensips/mi/transport/datagram.rb, line 20
def command(cmd, params = [])
  request = ":#{cmd}:\n"
  params.each do |c|
    request << "#{c}\n"
  end
  response = send(request)
  Opensips::MI::Response.new response.split(?\n)
end
tout() click to toggle source
# File lib/opensips/mi/transport/datagram.rb, line 29
def tout
  @timeout > 0 ? @timeout : TIMEOUT
end

Private Instance Methods

send(request) click to toggle source
# File lib/opensips/mi/transport/datagram.rb, line 34
def send(request)
  @sock.send request
  response = @sock.recvfrom RECVMAXLEN, timeout: tout
  response.message
rescue => e
  "500 #{e}"
end