class Empp::TcpConnection

Public Class Methods

getConnection(host, port) click to toggle source
# File lib/empp/tcp_connection.rb, line 17
def self.getConnection(host, port)
   return self.new(host, port)
end
new(host, port) click to toggle source
# File lib/empp/tcp_connection.rb, line 8
def initialize(host, port)
  @socket = nil
  @host = host
  @port = port
  @max_to_read = 4096
  @logger = EmppLogger.instance
  @alive = false
end

Public Instance Methods

alive?() click to toggle source
# File lib/empp/tcp_connection.rb, line 21
def alive?
  @alive
end
close() click to toggle source
# File lib/empp/tcp_connection.rb, line 56
def close
  @logger.debug("Enter TcpConnection::close")

  begin
    @alive = false
    if @socket
      @socket.close()
    end
  rescue
    @logger.warn("Unable to close socket.")
  end

  @logger.debug("Leave TcpConnection::close")
end
connect() click to toggle source
# File lib/empp/tcp_connection.rb, line 41
def connect
  @logger.debug("Enter TcpConnection::connect")

  begin
    @socket = TCPSocket.new(@host, @port)
    @alive = true
  rescue
      @alive = false
      @socket = nil
      @logger.fatal("Open socket error for host=#{@host}, port=#{@port}")  
  end    

  @logger.debug("Leave TcpConnection::connect")
end
receive(count = 0) click to toggle source
# File lib/empp/tcp_connection.rb, line 71
def receive(count = 0)
  @logger.debug("Enter TcpConnection::receive")

  count ||= @max_to_read

  if count < 0 || count > @max_to_read
    return
  end

  bytes = nil
  begin

    while !bytes || bytes.length == 0
      if @socket
        bytes =  @socket.recvfrom(count)[0]
      else
        raise
      end
    end

  rescue
    @logger.fatal("TcpConnection::receive: get exception from socket recvFrom")
    @alive = false
    return
  end
  @logger.info("TcpConnectin receive bytes=" + bytes.unpack("H*").to_s )
  @logger.debug("Leave TcpConnection::receive")
  return bytes
end
send(data) click to toggle source
# File lib/empp/tcp_connection.rb, line 25
def send(data)
  @logger.debug("Enter TcpConnection::send")

  @logger.debug("TcpConnection: send bytes:#{data.unpack("H*")}")
  if @socket
    begin
      @socket.write(data)
    rescue
      @logger.fatal("Get exception to write data")
      @alive = false
    end
  end

  @logger.debug("Leave TcpConnection::send")
end