Class: RfidInterfaceClient

Inherits:
Object
  • Object
show all
Defined in:
lib/inteface_aplication/rfid_interface_client.rb

Overview

La clase RfidInterfaceClient representa una interfaz para un cliente Telnet genérico

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(yml = 'rfid_config.yml') ⇒ RfidInterfaceClient

Crea una nueva interfaz para un cliente Telnet genérico, a partir de los parámetros de configuración obtenidos desde el archivo “rfid_config.yml”



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 20

def initialize(yml='rfid_config.yml')
  parse =     YAML::parse(File.open(yml))
  @config =   parse.transform
  @id_server =  "local_config"
  @servers =  0
  @config.each do |key, value| 
    if key.include?("server")
      @servers = @servers + 1
    end
  end
end

Instance Attribute Details

#configObject (readonly)

Referencia a un hash de parámetros de configuración



10
11
12
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 10

def config
  @config
end

#id_serverObject (readonly)

Representa el identificado del servidor actualmente en uso



14
15
16
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 14

def id_server
  @id_server
end

#serversObject (readonly)

Referencia a cantidad de servidores instanciados



12
13
14
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 12

def servers
  @servers
end

Instance Method Details

#consult(sock, cmd) ⇒ Object

Ejecuta un comando y recibe una o más respuestas, imprimiéndola(s) en el socket



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 35

def consult(sock,cmd)
  begin
    conection = Net::Telnet::new("Host" => @config[@id_server]["ip_address"].to_s,"Timeout" => 5,"Port" => @config[@id_server]["port"])
    sock.print "MESSAGE: Server "+@config[@id_server]["ip_address"].to_s+":"+@config[@id_server]["port"].to_s+"\n"
    conection.cmd("#{cmd.chop}") do |response|
      sock.print response.to_s
      if response.to_s.include?("Stop Verbose")
       conection.puts("exit")
      end
    end
  rescue Exception => e
    sock.print "ERROR: Couldn't establish the conexion!\n"
  end
end

#set_server(sock, id) ⇒ Object

Permite cambiar el servidor al cual seran dirigidos los comandos y consultas



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 69

def set_server(sock, id)
   change = false
   @config.each do |key, value| 
        if value["id_server"].to_s.eql?(id)
         change = true    
         @id_server = key
  sock.print "MESSAGE: Change to Server #{id} Complete!\n"
  break
        end
    end
    if !change
      sock.print "ERROR: No Server Found!\n"
    end
end

#single_consult(sock, cmd) ⇒ Object

Ejecuta un comando y recibe una respuesta, imprimiéndola en el socket



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/inteface_aplication/rfid_interface_client.rb', line 53

def single_consult(sock,cmd)
  begin
    conection = Net::Telnet::new("Host" => @config[@id_server]["ip_address"].to_s,"Timeout" => 5,"Port" => @config[@id_server]["port"])
    sock.print "MESSAGE: Server "+@config[@id_server]["ip_address"].to_s+":"+@config[@id_server]["port"].to_s+"\n"
    conection.puts("#{cmd.chop}") 
    sock.print conection.gets
    #conection.close
  rescue
    sock.print "ERROR: Couldn't establish the conexion!\n"
  end
end