class GLO::LOG::Conn
Public Class Methods
new( target, app )
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 4 def initialize ( target, app ) if target =~ /(.+)\:(\d+)$/i @host = $~[1] @port = $~[2] else @host = target @port = nil end @app = app @max_tries = 6 @socket = nil end
Public Instance Methods
close()
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 45 def close @socket.nil? ? nil : @socket.close rescue nil end
close_possibly_dead_conn( tries = 0)
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 93 def close_possibly_dead_conn( tries = 0) close unless @socket.nil? || closed? @socket = nil select(nil,nil,nil, tries * 0.2) if tries > 0 @socket end
closed?()
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 49 def closed? @socket.nil? ? true : @socket.closed? end
conn_timeout( &block )
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 100 def conn_timeout( &block ) ::Timeout::timeout( 6, GLO::LOG::Timeout, &block ) end
connect(host, port)
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 60 def connect(host, port) if @socket.nil? || @socket.closed? real_connect(host, port) else @socket end end
flush()
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 41 def flush @socket.flush unless @socket.nil end
log( log_level ='debug' , msg = '' , tag = {})
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 19 def log ( log_level ='debug' , msg = '' , tag = {}) tries = 0 connect( @host, @port ) data = {'app' => @app, 'log_level' => log_level,'message'=>msg,'tag'=>tag}.to_json data_size = data.size.to_s begin write "*2\r\n$3\r\nLOG\r\n$"+data_size+"\r\n"+data+"\r\n" rescue Exception => e $stderr.puts "Failed to write to server! Retrying... ( #{tries} )" if @max_tries == -1 || tries < @max_tries tries += 1 close_possibly_dead_conn(tries) reconnect retry else raise e end end end
real_connect(host, port)
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 68 def real_connect(host, port) tries = 0 begin @socket = TCPSocket.new( host, port) raise "Unable to create socket!" if @socket.nil? rescue Exception => e $stderr.puts "Fauled to establish connection with server! Retrying..( #{tries} )" unless @max_tries == -1 if @max_tries == -1 || tries < @max_tries tries += 1 close_possibly_dead_conn(tries) retry else raise e end end end
reconnect!()
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 53 def reconnect! close unless closed? connect( @host, @port ) end
Also aliased as: reconnect
write( msg, flush = false )
click to toggle source
# File lib/glo-logging-server-client/conn.rb, line 85 def write ( msg, flush = false ) conn_timeout do wrtlen = @socket.write(msg) end self.flush if flush @socket end