Commit 801af2ab7f48ee4796812f7141b4860f29166eae
1 parent
0e3d730a
Exists in
master
and in
5 other branches
Implementando mais metodos nas biblioteca hllapi
Showing
7 changed files
with
63 additions
and
8 deletions
Show diff stats
src/include/pw3270/hllapi.h
src/plugins/remotectl/calls.c
... | ... | @@ -74,9 +74,9 @@ |
74 | 74 | { (void **) &get_revision, (void *) hllapi_pipe_get_revision, "lib3270_get_revision" }, |
75 | 75 | { (void **) &host_connect, (void *) hllapi_pipe_connect, "lib3270_connect" }, |
76 | 76 | { (void **) &host_disconnect, (void *) hllapi_pipe_disconnect, "lib3270_disconnect" }, |
77 | - { (void **) &host_is_connected, (void *) NULL, "lib3270_in_tn3270e" }, | |
78 | - { (void **) &wait_for_ready, (void *) NULL, "lib3270_wait_for_ready" }, | |
79 | - { (void **) &script_sleep, (void *) NULL, "lib3270_wait" }, | |
77 | + { (void **) &host_is_connected, (void *) hllapi_pipe_is_connected, "lib3270_in_tn3270e" }, | |
78 | + { (void **) &wait_for_ready, (void *) hllapi_pipe_wait_for_ready, "lib3270_wait_for_ready" }, | |
79 | + { (void **) &script_sleep, (void *) hllapi_pipe_sleep, "lib3270_wait" }, | |
80 | 80 | { (void **) &get_message, (void *) hllapi_pipe_get_message, "lib3270_get_program_message" }, |
81 | 81 | { (void **) &get_text, (void *) hllapi_pipe_get_text_at, "lib3270_get_text_at" }, |
82 | 82 | { (void **) &release_memory, (void *) hllapi_pipe_release_memory, "lib3270_free" }, | ... | ... |
src/plugins/remotectl/client.h
... | ... | @@ -51,8 +51,7 @@ |
51 | 51 | int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text); |
52 | 52 | int hllapi_pipe_pfkey(void *h, int key); |
53 | 53 | int hllapi_pipe_pakey(void *h, int key); |
54 | - | |
55 | -/* | |
56 | 54 | int hllapi_pipe_wait_for_ready(void *h, int seconds); |
57 | 55 | int hllapi_pipe_sleep(void *h, int seconds); |
58 | -*/ | |
56 | + int hllapi_pipe_is_connected(void *h); | |
57 | + | ... | ... |
src/plugins/remotectl/packets.h
src/plugins/remotectl/pluginmain.c
... | ... | @@ -185,6 +185,10 @@ |
185 | 185 | send_result(source,lib3270_get_program_message(lib3270_get_default_session_handle())); |
186 | 186 | break; |
187 | 187 | |
188 | + case HLLAPI_PACKET_IS_CONNECTED: | |
189 | + send_result(source,lib3270_in_tn3270e(lib3270_get_default_session_handle())); | |
190 | + break; | |
191 | + | |
188 | 192 | case HLLAPI_PACKET_ENTER: |
189 | 193 | send_result(source,lib3270_enter(lib3270_get_default_session_handle())); |
190 | 194 | break; | ... | ... |
src/plugins/remotectl/remote.c
... | ... | @@ -31,7 +31,8 @@ |
31 | 31 | #include <malloc.h> |
32 | 32 | #include <string.h> |
33 | 33 | #include <errno.h> |
34 | - #include <stdio.h> | |
34 | + #include <stdio.h> | |
35 | + #include <time.h> | |
35 | 36 | #include <lib3270/log.h> |
36 | 37 | |
37 | 38 | #include "client.h" |
... | ... | @@ -240,3 +241,43 @@ |
240 | 241 | { |
241 | 242 | free(p); |
242 | 243 | } |
244 | + | |
245 | + int hllapi_pipe_wait_for_ready(void *h, int seconds) | |
246 | + { | |
247 | + time_t end = time(0)+seconds; | |
248 | + | |
249 | + while(time(0) < end) | |
250 | + { | |
251 | + if(!hllapi_pipe_is_connected(h)) | |
252 | + return ENOTCONN; | |
253 | + | |
254 | + if(hllapi_pipe_get_message(h) == 0) | |
255 | + return 0; | |
256 | + Sleep(250); | |
257 | + } | |
258 | + | |
259 | + return ETIMEDOUT; | |
260 | + } | |
261 | + | |
262 | + int hllapi_pipe_is_connected(void *h) | |
263 | + { | |
264 | + static const struct hllapi_packet_query query = { HLLAPI_PACKET_IS_CONNECTED }; | |
265 | + struct hllapi_packet_result response; | |
266 | + DWORD cbSize = sizeof(query); | |
267 | + TransactNamedPipe((HANDLE) h,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); | |
268 | + return (LIB3270_MESSAGE) response.rc; | |
269 | + } | |
270 | + | |
271 | + int hllapi_pipe_sleep(void *h, int seconds) | |
272 | + { | |
273 | + time_t end = time(0)+seconds; | |
274 | + | |
275 | + while(time(0) < end) | |
276 | + { | |
277 | + if(!hllapi_pipe_is_connected(h)) | |
278 | + return ENOTCONN; | |
279 | + Sleep(500); | |
280 | + } | |
281 | + | |
282 | + return 0; | |
283 | + } | ... | ... |
src/plugins/remotectl/testprogram.c
... | ... | @@ -42,7 +42,12 @@ |
42 | 42 | |
43 | 43 | printf("init(%s)=%d\n",session,(int) hllapi_init((LPSTR) session)); |
44 | 44 | printf("revision=%d\n",(int) hllapi_get_revision()); |
45 | - printf("connect=%d\n",(int) hllapi_connect("fandezhi.efglobe.com:23")); | |
45 | + printf("connect=%d\n",(int) hllapi_connect("fandezhi.efglobe.com:23",0)); | |
46 | + printf("wait=%d\n",(int) hllapi_wait(3)); | |
47 | + printf("connected=%s\n",(int) hllapi_is_connected() ? "Yes" : "No"); | |
48 | + | |
49 | +// printf("disconnect=%d\n",(int) hllapi_disconnect("fandezhi.efglobe.com:23",1)); | |
50 | + | |
46 | 51 | |
47 | 52 | printf("deinit=%d\n",(int) hllapi_deinit()); |
48 | 53 | ... | ... |