From d7deba33e201306a962c3a7c817da764d288acd3 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 5 Apr 2013 15:29:29 +0000 Subject: [PATCH] Implementando IPC rexx para windows --- src/include/pw3270/ipcpackets.h | 2 ++ src/plugins/hllapi/pluginmain.c | 7 +++++++ src/plugins/rx3270/remote.cc | 19 +++++++++++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/include/pw3270/ipcpackets.h b/src/include/pw3270/ipcpackets.h index d8eb09d..67a4ee2 100644 --- a/src/include/pw3270/ipcpackets.h +++ b/src/include/pw3270/ipcpackets.h @@ -48,6 +48,8 @@ HLLAPI_PACKET_EMULATE_INPUT, HLLAPI_PACKET_ERASE_EOF, HLLAPI_PACKET_PRINT, + HLLAPI_PACKET_GET_CSTATE, + HLLAPI_PACKET_IS_READY, HLLAPI_PACKET_INVALID diff --git a/src/plugins/hllapi/pluginmain.c b/src/plugins/hllapi/pluginmain.c index eb32611..6ce3fdd 100644 --- a/src/plugins/hllapi/pluginmain.c +++ b/src/plugins/hllapi/pluginmain.c @@ -191,6 +191,10 @@ send_result(source,lib3270_in_tn3270e(lib3270_get_default_session_handle())); break; + case HLLAPI_PACKET_IS_READY: + send_result(source,lib3270_is_ready(lib3270_get_default_session_handle())); + break; + case HLLAPI_PACKET_ENTER: send_result(source,lib3270_enter(lib3270_get_default_session_handle())); break; @@ -267,6 +271,9 @@ send_result(source,lib3270_get_cursor_address(lib3270_get_default_session_handle())); break; + case HLLAPI_PACKET_GET_CSTATE: + send_result(source,lib3270_get_connection_state(lib3270_get_default_session_handle())); + break; default: send_result(source, EINVAL); diff --git a/src/plugins/rx3270/remote.cc b/src/plugins/rx3270/remote.cc index b4ba90a..f8a1221 100644 --- a/src/plugins/rx3270/remote.cc +++ b/src/plugins/rx3270/remote.cc @@ -118,7 +118,6 @@ DBusMessage * remote::create_message(const char *method) } #endif // HAVE_DBUS - rx3270 * rx3270::create_remote(const char *name) { return new remote(name); @@ -419,7 +418,11 @@ LIB3270_CSTATE remote::get_cstate(void) if(hPipe != INVALID_HANDLE_VALUE) { - #warning Implementar + static const struct hllapi_packet_query query = { HLLAPI_PACKET_GET_CSTATE }; + struct hllapi_packet_result response; + DWORD cbSize = sizeof(query); + TransactNamedPipe(hPipe,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); + return (LIB3270_CSTATE) response.rc; } return (LIB3270_CSTATE) -1; @@ -541,7 +544,11 @@ bool remote::is_ready(void) if(hPipe != INVALID_HANDLE_VALUE) { - #warning Implementar + static const struct hllapi_packet_query query = { HLLAPI_PACKET_IS_READY }; + struct hllapi_packet_result response; + DWORD cbSize = sizeof(query); + TransactNamedPipe(hPipe,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); + return response.rc != 0; } #elif defined(HAVE_DBUS) @@ -792,7 +799,11 @@ int remote::set_cursor_position(int row, int col) if(hPipe != INVALID_HANDLE_VALUE) { - #warning Implementar + struct hllapi_packet_cursor query = { HLLAPI_PACKET_SET_CURSOR_POSITION, (unsigned short) row, (unsigned short) col }; + struct hllapi_packet_result response; + DWORD cbSize = sizeof(query); + TransactNamedPipe(hPipe,(LPVOID) &query, cbSize, &response, sizeof(response), &cbSize,NULL); + return response.rc != 0; } #elif defined(HAVE_DBUS) -- libgit2 0.21.2