Commit b0f14ba36b8b224dd849c33836e4a9f8f0bafd6b
1 parent
3337cc2a
Exists in
master
and in
5 other branches
Reimplementando modulo hllapi
Showing
4 changed files
with
62 additions
and
23 deletions
Show diff stats
src/plugins/remotectl/calls.c
| ... | ... | @@ -72,14 +72,14 @@ |
| 72 | 72 | { (void **) &host_disconnect, (void *) hllapi_pipe_disconnect, "lib3270_disconnect" }, |
| 73 | 73 | { (void **) &wait_for_ready, (void *) NULL, "lib3270_wait_for_ready" }, |
| 74 | 74 | { (void **) &script_sleep, (void *) NULL, "lib3270_wait" }, |
| 75 | - { (void **) &get_message, (void *) NULL, "lib3270_get_program_message" }, | |
| 76 | - { (void **) &get_text, (void *) NULL, "lib3270_get_text_at" }, | |
| 75 | + { (void **) &get_message, (void *) hllapi_pipe_get_message, "lib3270_get_program_message" }, | |
| 76 | + { (void **) &get_text, (void *) hllapi_pipe_get_text_at, "lib3270_get_text_at" }, | |
| 77 | 77 | { (void **) &release_memory, (void *) hllapi_pipe_release_memory, "lib3270_free" }, |
| 78 | - { (void **) &action_enter, (void *) NULL, "lib3270_enter" }, | |
| 79 | - { (void **) &set_text_at, (void *) NULL, "lib3270_set_string_at" }, | |
| 80 | - { (void **) &cmp_text_at, (void *) NULL, "lib3270_cmp_text_at" }, | |
| 81 | - { (void **) &pfkey, (void *) NULL, "lib3270_pfkey" }, | |
| 82 | - { (void **) &pakey, (void *) NULL, "lib3270_pakey" }, | |
| 78 | + { (void **) &action_enter, (void *) hllapi_pipe_enter, "lib3270_enter" }, | |
| 79 | + { (void **) &set_text_at, (void *) hllapi_pipe_set_text_at, "lib3270_set_string_at" }, | |
| 80 | + { (void **) &cmp_text_at, (void *) hllapi_pipe_cmp_text_at, "lib3270_cmp_text_at" }, | |
| 81 | + { (void **) &pfkey, (void *) hllapi_pipe_pfkey, "lib3270_pfkey" }, | |
| 82 | + { (void **) &pakey, (void *) hllapi_pipe_pakey, "lib3270_pakey" }, | |
| 83 | 83 | |
| 84 | 84 | { NULL, NULL } |
| 85 | 85 | }; | ... | ... |
src/plugins/remotectl/client.h
| ... | ... | @@ -44,15 +44,15 @@ |
| 44 | 44 | void hllapi_pipe_release_memory(void *p); |
| 45 | 45 | int hllapi_pipe_connect(void *h, const char *n, int wait); |
| 46 | 46 | void hllapi_pipe_disconnect(void *h); |
| 47 | - | |
| 48 | -/* | |
| 49 | - int hllapi_pipe_wait_for_ready(void *h, int seconds); | |
| 50 | - int hllapi_pipe_sleep(void *h, int seconds); | |
| 51 | 47 | LIB3270_MESSAGE hllapi_pipe_get_message(void *h); |
| 52 | - char * hllapi_pipe_get_text(void *h, int row, int col, int len); | |
| 48 | + char * hllapi_pipe_get_text_at(void *h, int row, int col, int len); | |
| 53 | 49 | int hllapi_pipe_enter(void *h); |
| 54 | 50 | int hllapi_pipe_set_text_at(void *h, int row, int col, const unsigned char *str); |
| 55 | 51 | int hllapi_pipe_cmp_text_at(void *h, int row, int col, const char *text); |
| 56 | 52 | int hllapi_pipe_pfkey(void *h, int key); |
| 57 | 53 | int hllapi_pipe_pakey(void *h, int key); |
| 54 | + | |
| 55 | +/* | |
| 56 | + int hllapi_pipe_wait_for_ready(void *h, int seconds); | |
| 57 | + int hllapi_pipe_sleep(void *h, int seconds); | |
| 58 | 58 | */ | ... | ... |
src/plugins/remotectl/packets.h
| ... | ... | @@ -31,48 +31,65 @@ |
| 31 | 31 | |
| 32 | 32 | struct hllapi_packet_result |
| 33 | 33 | { |
| 34 | - int rc; | |
| 34 | + int rc; | |
| 35 | 35 | }; |
| 36 | 36 | |
| 37 | 37 | struct hllapi_packet_query |
| 38 | 38 | { |
| 39 | - unsigned char packet_id; | |
| 39 | + int packet_id; | |
| 40 | 40 | }; |
| 41 | 41 | |
| 42 | 42 | struct hllapi_packet_connect |
| 43 | 43 | { |
| 44 | - unsigned char packet_id; | |
| 44 | + int packet_id; | |
| 45 | 45 | unsigned char wait; |
| 46 | 46 | char hostname[1]; |
| 47 | 47 | }; |
| 48 | 48 | |
| 49 | 49 | struct hllapi_packet_keycode |
| 50 | 50 | { |
| 51 | - unsigned char packet_id; | |
| 51 | + int packet_id; | |
| 52 | 52 | unsigned short keycode; |
| 53 | 53 | }; |
| 54 | 54 | |
| 55 | 55 | struct hllapi_packet_cursor |
| 56 | 56 | { |
| 57 | - unsigned char packet_id; | |
| 57 | + int packet_id; | |
| 58 | 58 | unsigned short row; |
| 59 | 59 | unsigned short col; |
| 60 | 60 | }; |
| 61 | 61 | |
| 62 | 62 | struct hllapi_packet_text |
| 63 | 63 | { |
| 64 | - unsigned char packet_id; | |
| 64 | + int packet_id; | |
| 65 | 65 | char text[1]; |
| 66 | 66 | }; |
| 67 | 67 | |
| 68 | +struct hllapi_packet_at | |
| 69 | +{ | |
| 70 | + int packet_id; | |
| 71 | + unsigned short row; | |
| 72 | + unsigned short col; | |
| 73 | + unsigned short len; | |
| 74 | +}; | |
| 68 | 75 | |
| 69 | 76 | struct hllapi_packet_text_at |
| 70 | 77 | { |
| 71 | - unsigned char packet_id; | |
| 78 | + int packet_id; | |
| 72 | 79 | unsigned short row; |
| 73 | 80 | unsigned short col; |
| 74 | 81 | char text[1]; |
| 75 | 82 | }; |
| 76 | 83 | |
| 84 | +struct hllapi_packet_query_at | |
| 85 | +{ | |
| 86 | + int packet_id; | |
| 87 | + unsigned short row; | |
| 88 | + unsigned short col; | |
| 89 | + unsigned short len; | |
| 90 | +}; | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 77 | 94 | #pragma pack() |
| 78 | 95 | ... | ... |
src/plugins/remotectl/pluginmain.c
| ... | ... | @@ -134,13 +134,28 @@ |
| 134 | 134 | return FALSE; |
| 135 | 135 | } |
| 136 | 136 | |
| 137 | -/* | |
| 138 | - static void send_message(pipe_source *source, const void *pkt, int sz) | |
| 137 | + static void send_text(pipe_source *source, char *text) | |
| 139 | 138 | { |
| 140 | - WriteFile(qry->hPipe,&data,wrote,&wrote,NULL); | |
| 139 | + struct hllapi_packet_text *pkt; | |
| 140 | + DWORD szBlock; | |
| 141 | 141 | |
| 142 | + if(text) | |
| 143 | + { | |
| 144 | + szBlock = sizeof(struct hllapi_packet_text)+strlen(text); | |
| 145 | + pkt = g_malloc0(szBlock); | |
| 146 | + pkt->packet_id = 0; | |
| 147 | + strcpy(pkt->text,text); | |
| 148 | + lib3270_free(text); | |
| 149 | + } | |
| 150 | + else | |
| 151 | + { | |
| 152 | + szBlock = sizeof(struct hllapi_packet_text); | |
| 153 | + pkt = g_malloc0(szBlock); | |
| 154 | + pkt->packet_id = errno ? errno : -1; | |
| 155 | + } | |
| 156 | + | |
| 157 | + WriteFile(source->hPipe,&pkt,szBlock,&szBlock,NULL); | |
| 142 | 158 | } |
| 143 | -*/ | |
| 144 | 159 | |
| 145 | 160 | static void send_result(pipe_source *source, int rc) |
| 146 | 161 | { |
| ... | ... | @@ -197,6 +212,13 @@ |
| 197 | 212 | (unsigned char *) ((struct hllapi_packet_text_at *) source->buffer)->text)); |
| 198 | 213 | break; |
| 199 | 214 | |
| 215 | + case HLLAPI_PACKET_GET_TEXT_AT: | |
| 216 | + send_text(source,lib3270_get_text_at( lib3270_get_default_session_handle(), | |
| 217 | + ((struct hllapi_packet_at *) source->buffer)->row, | |
| 218 | + ((struct hllapi_packet_at *) source->buffer)->col, | |
| 219 | + ((struct hllapi_packet_at *) source->buffer)->len)); | |
| 220 | + break; | |
| 221 | + | |
| 200 | 222 | case HLLAPI_PACKET_CMP_TEXT_AT: |
| 201 | 223 | send_result(source,lib3270_cmp_text_at( lib3270_get_default_session_handle(), |
| 202 | 224 | ((struct hllapi_packet_text_at *) source->buffer)->row, | ... | ... |