class Swiftcore::Analogger::ClientProtocol

Constants

Cauthentication
Ci

Attributes

connected[RW]
host[RW]
key[RW]
msg_queue[RW]
port[RW]
sender[RW]

Public Class Methods

connect(service = 'default', host = '127.0.0.1', port = 6766, key = nil) click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 20
def self.connect(service = 'default', host = '127.0.0.1', port = 6766, key = nil)
  connection = ::EventMachine.connect(host, port.to_i, self) do |conn|
    conn.connected = false
    conn.msg_queue ||= ''
    conn.service = service
    conn.host = host
    conn.port = port
    conn.key = key
  end
end

Public Instance Methods

close() click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 56
def close
  close_connection_after_writing
end
closed?() click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 60
def closed?
  @connected
end
connection_completed() click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 31
      def connection_completed
        @connected = true
        pos = 0
        log(Cauthentication,"#{@key}",true)
        send_data @msg_queue
#       @sender = EM::Timer.new(1) {send_data @msg_queue if @connected; @msg_queue = ''}
#       while @msg_queue.length > pos
#       msg = @msg_queue[pos]
#       pos += 1
#       break unless log(*msg)
#     end
#     if pos > 0
#       @msg_queue.slice!(0..(pos - 1))
#     end
      end
log(severity,msg,immediate=false) click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 70
def log(severity,msg,immediate=false)
  len = [@service_length + severity.length + msg.length + 3].pack(Ci)
  fullmsg = "#{len}#{len}:#{@service}:#{severity}:#{msg}"
  if immediate
    send_data fullmsg
  elsif @connected
    send_data fullmsg
  else
    @msg_queue << fullmsg
  end
  #if @connected
    #send_data "#{len}#{len}:#{@service}:#{severity}:#{msg}"
  #else
  # @msg_queue << fullmsg
  # false
  #end
rescue Exception => e
  puts e
  @msg_queue << fullmsg if msg and severity
  false
end
service() click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 47
def service
  @service
end
service=(val) click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 51
def service=(val)
  @service = val
  @service_length = val.length
end
unbind() click to toggle source
# File lib/swiftcore/Analogger/EMClient.rb, line 64
def unbind
  @connected = false
  #@sender.cancel
  ::EventMachine.add_timer(rand(2)) {self.class.connect(@service, @host, @port, @key)}
end