source: tol/tolsh/tolsh.vfs/lib/tolcomm/rmtps_client.tol @ 6d7779d

1941-docker-image-to-testdevel
Last change on this file since 6d7779d was 6d7779d, checked in by Jorge Pérez <josp.jorge@…>, 18 years ago

initial import

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@1 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 4.8 KB
Line 
1/* -*- mode: c++ -*- */
2/**
3 * rmtps_client.tol --
4 *
5 */
6
7/**
8 *  RemotePing -- Verifica si un servidor RMTPS esta escuchando
9 *
10 *  Argumentos:
11 *
12 *    Host:
13 *    Port:
14 *
15 *  Resultado:
16 * 
17 */
18Real RemotePing(Text Host, Real Port)
19{
20
21  Set result = Tcl_Eval("::rmtps_client::server_ping "+Host+" "+
22                        FormatReal(Port, "%.0lf"));
23  Real If(result["status"], Eval(result["result"]),{
24      WriteLn("RemotePing: "+result["result"],"E");
25      Real 0
26    })
27};
28PutDescription("Verifica si un servidor RMTPS_SERVER esta ejecutandose en un "
29               "ordenador remoto y esta escuchando peticiones."
30               "Retorna 1 si el servidor esta ejecutandose o 0 en caso "
31               "contrario",
32               RemotePing);
33
34/**
35 *  RemoteExec -- Ejecuta un comando en remoto
36 *
37 *  Argumentos:
38 *
39 *    Host:
40 *    Port:
41 *    CmdLine:
42 *
43 *  Resultado:
44 * 
45 */
46Real RemoteExec(Text Host, Real Port, Text CmdLine)
47{
48
49  Set result = Tcl_Eval("::rmtps_client::ps_run "+Host+" "+
50                        FormatReal(Port, "%.0lf")+
51                        " {"+CmdLine+"}");
52  Real If(result["status"], Eval(result["result"]),{
53      WriteLn("RemoteExec: "+result["result"],"E");
54      Real 0
55    })
56};
57PutDescription("Ejecuta en un ordenador remoto un comando dado en CmdLine. "
58               "CmdLine tambien contiene los argumentos separados por "
59               "espacios. "
60               "Retorna el PID del proceso ejecutado o 0 si algun error "
61               "ocurrio durante el intento de ejecucion del comando. "
62               "Necesita que un servidor RmtPS_Server este escuchando en el "
63               "puerto Port del ordenador Host",
64               RemoteExec);
65
66/**
67 *  RemoteAlive -- Verifica, en remoto, si un proceso continua vivo
68 *
69 *  Argumentos:
70 *
71 *    Host:
72 *    Port:
73 *    PID:
74 *
75 *  Resultado:
76 * 
77 */
78Real RemoteAlive(Text Host, Real Port, Real PID)
79{
80  Set result = Tcl_Eval("::rmtps_client::ps_is_active "+Host+" "+
81                        FormatReal(Port, "%.0lf")+
82                        " " + FormatReal(PID, "%.0lf"));
83  Real If(result["status"], {
84      Real alive = Eval(result["result"]);
85      If(Eq(alive,-1), {
86          WriteLn("hubo un error en ::rmtps_server::on_ps_alive, "
87                  "rmtps_client no lo esta reportando por ahora. "
88                  "Mientras tanto puede chequear el log del servidor", "W");
89          Real 0
90        }, alive)
91    }, {
92      WriteLn("RemoteAlive: "+result["result"],"E");
93      Real 0
94    })
95};
96PutDescription("Verifica si un proceso dado por su PID continua vivo en un "
97               "ordenador remoto. "
98               "Retorna 1 si el proceso esta en la lista de procesos activos, "
99               "0 si el proceso no esta activo o -1 si hubo un error durante "
100               "la operacion remota, por ejemplo: PID invalido. "
101               "Necesita que un servidor RmtPS_Server este escuchando en el "
102               "puerto Port del ordenador Host",
103               RemoteAlive);
104
105/**
106 *  RemoteKill -- Termina la ejecucion de un proceso activo
107 *
108 *  Argumentos:
109 *
110 *    Host:
111 *    Port:
112 *    PID:
113 *
114 *  Resultado:
115 * 
116 */
117Real RemoteKill(Text Host, Real Port, Real PID)
118{
119  Set result = Tcl_Eval("::rmtps_client::ps_kill "+Host+" "+
120                        FormatReal(Port, "%.0lf")+
121                         " " + FormatReal(PID, "%.0lf"));
122  Real If(result["status"], {
123      Real killed = Eval(result["result"]);
124      If(Eq(killed,-1), {
125          WriteLn("hubo un error en ::rmtps_server::on_ps_kill, "
126                  "rmtps_client no lo esta reportando por ahora. "
127                  "Mientras tanto puede chequear el log del servidor","W");
128          Real 0
129        }, killed)
130    }, {
131      WriteLn("RemoteKill: "+result["result"],"E");
132      Real 0
133    })
134};
135PutDescription("Termina la ejecucion de un proceso, dado por su PID, en un "
136               "ordenador remoto. "
137               "Retorna 1 si el proceso se pudo finalizar o 0 si ocurrio un "
138               "error, por ejemplo: PID invalido, o no hay permisos "
139               "suficientes. "
140               "Necesita que un servidor RmtPS_Server este escuchando en el "
141               "puerto Port del ordenador Host",
142               RemoteKill);
143
144/**
145 *  RemoteProcessInitTcl -- Carga el codigo tcl del cliente de RmtPS_Client
146 *
147 *  Carga rmtps_client.tcl. Si durante la carga retorna con error se
148 *  retorna 0 y un mensaje de error se muestra en la salida
149 *  estandar. Si la carga fue satisfactoria se retorna 1.
150 * 
151 *  Argumentos:
152 *
153 *    path - camino del archivo rmtps_client.tcl
154 *
155 *  Resultado:
156 *
157 *   
158 */
159Real RemoteProcessInitTcl(Text path)
160{
161  Set result = Tcl_Eval("source {"+path+"}");
162  //Set View(result, "Std");
163  Real If(result["status"], 1, {
164      WriteLn("RemoteProcessInit: "+result["result"],"E");
165      Real 0
166    })
167};
168
169/*Real RemoteProcessInitTcl(GetAbsolutePath("rmtps_client.tcl"));*/
Note: See TracBrowser for help on using the repository browser.