Commit 9a49cd0dac4815177586fcf2d04cae1f80c94d9c
1 parent
428019a9
Exists in
master
and in
1 other branch
Debuggint IPC calls, small adjustments for performance.
Showing
8 changed files
with
66 additions
and
26 deletions
Show diff stats
configure.ac
| @@ -323,7 +323,7 @@ dnl --------------------------------------------------------------------------- | @@ -323,7 +323,7 @@ dnl --------------------------------------------------------------------------- | ||
| 323 | 323 | ||
| 324 | AC_CONFIG_FILES(Makefile) | 324 | AC_CONFIG_FILES(Makefile) |
| 325 | AC_CONFIG_FILES(locale/Makefile) | 325 | AC_CONFIG_FILES(locale/Makefile) |
| 326 | -AC_CONFIG_FILES(sdk/libhllapi.pc) | 326 | +AC_CONFIG_FILES(sdk/hllapi.pc) |
| 327 | 327 | ||
| 328 | dnl --------------------------------------------------------------------------- | 328 | dnl --------------------------------------------------------------------------- |
| 329 | dnl Output the generated config.status script. | 329 | dnl Output the generated config.status script. |
| @@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
| 1 | +prefix=@prefix@ | ||
| 2 | +exec_prefix=@exec_prefix@ | ||
| 3 | +libdir=@libdir@ | ||
| 4 | +includedir=@includedir@ | ||
| 5 | + | ||
| 6 | +version_major=@PACKAGE_MAJOR_VERSION@ | ||
| 7 | +version_minor=@PACKAGE_MINOR_VERSION@ | ||
| 8 | + | ||
| 9 | +Name: @PACKAGE_NAME@ | ||
| 10 | +Description: @PACKAGE_DESCRIPTION@ | ||
| 11 | +Version: @PACKAGE_VERSION@ | ||
| 12 | +Requires: ipc3270 lib3270 | ||
| 13 | +Libs: -lhllapi | ||
| 14 | +Libs.private: @LIBS@ @INTL_LIBS@ @IPC3270_LIBS@ | ||
| 15 | +Cflags: | ||
| 16 | + |
sdk/libhllapi.pc.in
| @@ -1,16 +0,0 @@ | @@ -1,16 +0,0 @@ | ||
| 1 | -prefix=@prefix@ | ||
| 2 | -exec_prefix=@exec_prefix@ | ||
| 3 | -libdir=@libdir@ | ||
| 4 | -includedir=@includedir@ | ||
| 5 | - | ||
| 6 | -version_major=@PACKAGE_MAJOR_VERSION@ | ||
| 7 | -version_minor=@PACKAGE_MINOR_VERSION@ | ||
| 8 | - | ||
| 9 | -Name: @PACKAGE_NAME@ | ||
| 10 | -Description: @PACKAGE_DESCRIPTION@ | ||
| 11 | -Version: @PACKAGE_VERSION@ | ||
| 12 | -Requires: libipc3270 lib3270 | ||
| 13 | -Libs: -lhllapi | ||
| 14 | -Libs.private: @LIBS@ @INTL_LIBS@ @IPC3270_LIBS@ | ||
| 15 | -Cflags: | ||
| 16 | - |
src/core/calls.cc
| @@ -88,6 +88,8 @@ | @@ -88,6 +88,8 @@ | ||
| 88 | 88 | ||
| 89 | HLLAPI_API_CALL hllapi_get_state(void) { | 89 | HLLAPI_API_CALL hllapi_get_state(void) { |
| 90 | 90 | ||
| 91 | + debug("",__FUNCTION__); | ||
| 92 | + | ||
| 91 | try { | 93 | try { |
| 92 | 94 | ||
| 93 | switch(hllapi_get_message_id()) { | 95 | switch(hllapi_get_message_id()) { |
| @@ -144,6 +146,7 @@ | @@ -144,6 +146,7 @@ | ||
| 144 | 146 | ||
| 145 | HLLAPI_API_CALL hllapi_disconnect(void) { | 147 | HLLAPI_API_CALL hllapi_disconnect(void) { |
| 146 | 148 | ||
| 149 | + trace("%s",__FUNCTION__); | ||
| 147 | try { | 150 | try { |
| 148 | 151 | ||
| 149 | getSession().disconnect(); | 152 | getSession().disconnect(); |
| @@ -222,12 +225,7 @@ | @@ -222,12 +225,7 @@ | ||
| 222 | 225 | ||
| 223 | try { | 226 | try { |
| 224 | 227 | ||
| 225 | - TN3270::Host &host = getSession(); | ||
| 226 | - | ||
| 227 | - if(!host.isConnected()) | ||
| 228 | - return HLLAPI_STATUS_DISCONNECTED; | ||
| 229 | - | ||
| 230 | - host.wait(seconds); | 228 | + getSession().wait(seconds); |
| 231 | 229 | ||
| 232 | return hllapi_get_state(); | 230 | return hllapi_get_state(); |
| 233 | 231 | ||
| @@ -257,6 +255,24 @@ | @@ -257,6 +255,24 @@ | ||
| 257 | 255 | ||
| 258 | } | 256 | } |
| 259 | 257 | ||
| 258 | + HLLAPI_API_CALL hllapi_wait_for_text_at(WORD row, WORD col, LPSTR text) { | ||
| 259 | + | ||
| 260 | + try { | ||
| 261 | + | ||
| 262 | + getSession().wait((unsigned short) row, (unsigned short) col, (const char *) text); | ||
| 263 | + | ||
| 264 | + return HLLAPI_STATUS_SUCCESS; | ||
| 265 | + | ||
| 266 | + } catch(std::exception &e) { | ||
| 267 | + | ||
| 268 | + hllapi_lasterror = e.what(); | ||
| 269 | + | ||
| 270 | + } | ||
| 271 | + | ||
| 272 | + return HLLAPI_STATUS_SYSTEM_ERROR; | ||
| 273 | + | ||
| 274 | + } | ||
| 275 | + | ||
| 260 | HLLAPI_API_CALL hllapi_cmp_text_at_address(WORD addr, LPSTR text) { | 276 | HLLAPI_API_CALL hllapi_cmp_text_at_address(WORD addr, LPSTR text) { |
| 261 | 277 | ||
| 262 | try { | 278 | try { |
src/core/controller.cc
| @@ -32,7 +32,6 @@ | @@ -32,7 +32,6 @@ | ||
| 32 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 32 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
| 33 | 33 | ||
| 34 | static TN3270::Host * hllapi_host = nullptr; | 34 | static TN3270::Host * hllapi_host = nullptr; |
| 35 | - static time_t hllapi_timeout = 120; | ||
| 36 | std::string hllapi_lasterror = ""; | 35 | std::string hllapi_lasterror = ""; |
| 37 | 36 | ||
| 38 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| @@ -69,7 +68,7 @@ | @@ -69,7 +68,7 @@ | ||
| 69 | hllapi_host = new TN3270::Host(*id ? id : nullptr, "UTF-8"); | 68 | hllapi_host = new TN3270::Host(*id ? id : nullptr, "UTF-8"); |
| 70 | #endif // _WIN32 | 69 | #endif // _WIN32 |
| 71 | 70 | ||
| 72 | - hllapi_host->setTimeout(hllapi_timeout); | 71 | + hllapi_host->setTimeout(120); |
| 73 | 72 | ||
| 74 | } | 73 | } |
| 75 | catch(std::exception &e) | 74 | catch(std::exception &e) |
| @@ -78,6 +77,7 @@ | @@ -78,6 +77,7 @@ | ||
| 78 | return HLLAPI_STATUS_SYSTEM_ERROR; | 77 | return HLLAPI_STATUS_SYSTEM_ERROR; |
| 79 | } | 78 | } |
| 80 | 79 | ||
| 80 | + debug("hllapi_host=%p",hllapi_host); | ||
| 81 | return HLLAPI_STATUS_SUCCESS; | 81 | return HLLAPI_STATUS_SUCCESS; |
| 82 | 82 | ||
| 83 | } | 83 | } |
| @@ -110,6 +110,7 @@ | @@ -110,6 +110,7 @@ | ||
| 110 | throw runtime_error( _("Not initialized") ); | 110 | throw runtime_error( _("Not initialized") ); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | + trace("%s()=%p",__FUNCTION__,hllapi_host); | ||
| 113 | return *hllapi_host; | 114 | return *hllapi_host; |
| 114 | 115 | ||
| 115 | } | 116 | } |
src/core/hllapi.cc
| @@ -453,6 +453,11 @@ HLLAPI_API_CALL hllapi_set_session_parameter(LPSTR param, WORD len, WORD value) | @@ -453,6 +453,11 @@ HLLAPI_API_CALL hllapi_set_session_parameter(LPSTR param, WORD len, WORD value) | ||
| 453 | // UNLOCKDELAY | 453 | // UNLOCKDELAY |
| 454 | hllapi_set_unlock_delay(value); | 454 | hllapi_set_unlock_delay(value); |
| 455 | 455 | ||
| 456 | + } else if(!strncasecmp(param,"TIMEOUT",len)) { | ||
| 457 | + | ||
| 458 | + // UNLOCKDELAY | ||
| 459 | + hllapi_set_timeout(value); | ||
| 460 | + | ||
| 456 | } else { | 461 | } else { |
| 457 | 462 | ||
| 458 | return HLLAPI_STATUS_BAD_PARAMETER; | 463 | return HLLAPI_STATUS_BAD_PARAMETER; |
src/core/keyboard.cc
| @@ -103,3 +103,19 @@ static DWORD set(std::function<void(TN3270::Host &)> worker) noexcept { | @@ -103,3 +103,19 @@ static DWORD set(std::function<void(TN3270::Host &)> worker) noexcept { | ||
| 103 | return HLLAPI_STATUS_SYSTEM_ERROR; | 103 | return HLLAPI_STATUS_SYSTEM_ERROR; |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | + HLLAPI_API_CALL hllapi_set_timeout(WORD seconds) { | ||
| 107 | + | ||
| 108 | + try { | ||
| 109 | + | ||
| 110 | + getSession().setTimeout((time_t) seconds); | ||
| 111 | + return HLLAPI_STATUS_SUCCESS; | ||
| 112 | + | ||
| 113 | + } catch(std::exception &e) { | ||
| 114 | + | ||
| 115 | + hllapi_lasterror = e.what(); | ||
| 116 | + | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + return HLLAPI_STATUS_SYSTEM_ERROR; | ||
| 120 | + | ||
| 121 | + } |
src/include/lib3270/hllapi.h
| @@ -137,7 +137,7 @@ | @@ -137,7 +137,7 @@ | ||
| 137 | 137 | ||
| 138 | #else | 138 | #else |
| 139 | 139 | ||
| 140 | - #include <cstdint> | 140 | + #include <stdint.h> |
| 141 | 141 | ||
| 142 | // From wtypesbase.h | 142 | // From wtypesbase.h |
| 143 | typedef uint8_t BYTE; | 143 | typedef uint8_t BYTE; |
| @@ -324,6 +324,7 @@ | @@ -324,6 +324,7 @@ | ||
| 324 | 324 | ||
| 325 | HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); | 325 | HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); |
| 326 | HLLAPI_API_CALL hllapi_wait_for_change(WORD seconds); | 326 | HLLAPI_API_CALL hllapi_wait_for_change(WORD seconds); |
| 327 | + HLLAPI_API_CALL hllapi_wait_for_text_at(WORD row, WORD col, LPSTR text); | ||
| 327 | HLLAPI_API_CALL hllapi_wait(WORD seconds); | 328 | HLLAPI_API_CALL hllapi_wait(WORD seconds); |
| 328 | HLLAPI_API_CALL hllapi_pfkey(WORD key); | 329 | HLLAPI_API_CALL hllapi_pfkey(WORD key); |
| 329 | HLLAPI_API_CALL hllapi_pakey(WORD key); | 330 | HLLAPI_API_CALL hllapi_pakey(WORD key); |
| @@ -346,6 +347,7 @@ | @@ -346,6 +347,7 @@ | ||
| 346 | HLLAPI_API_CSTR hllapi_get_last_error(); | 347 | HLLAPI_API_CSTR hllapi_get_last_error(); |
| 347 | 348 | ||
| 348 | HLLAPI_API_CALL hllapi_set_unlock_delay(WORD ms); | 349 | HLLAPI_API_CALL hllapi_set_unlock_delay(WORD ms); |
| 350 | + HLLAPI_API_CALL hllapi_set_timeout(WORD seconds); | ||
| 349 | 351 | ||
| 350 | HLLAPI_API_CALL hllapi_set_cursor_address(WORD pos); | 352 | HLLAPI_API_CALL hllapi_set_cursor_address(WORD pos); |
| 351 | HLLAPI_API_CALL hllapi_set_cursor_position(WORD row, WORD col); | 353 | HLLAPI_API_CALL hllapi_set_cursor_position(WORD row, WORD col); |