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 | 323 | |
| 324 | 324 | AC_CONFIG_FILES(Makefile) |
| 325 | 325 | AC_CONFIG_FILES(locale/Makefile) |
| 326 | -AC_CONFIG_FILES(sdk/libhllapi.pc) | |
| 326 | +AC_CONFIG_FILES(sdk/hllapi.pc) | |
| 327 | 327 | |
| 328 | 328 | dnl --------------------------------------------------------------------------- |
| 329 | 329 | dnl Output the generated config.status script. | ... | ... |
| ... | ... | @@ -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 | -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 | 88 | |
| 89 | 89 | HLLAPI_API_CALL hllapi_get_state(void) { |
| 90 | 90 | |
| 91 | + debug("",__FUNCTION__); | |
| 92 | + | |
| 91 | 93 | try { |
| 92 | 94 | |
| 93 | 95 | switch(hllapi_get_message_id()) { |
| ... | ... | @@ -144,6 +146,7 @@ |
| 144 | 146 | |
| 145 | 147 | HLLAPI_API_CALL hllapi_disconnect(void) { |
| 146 | 148 | |
| 149 | + trace("%s",__FUNCTION__); | |
| 147 | 150 | try { |
| 148 | 151 | |
| 149 | 152 | getSession().disconnect(); |
| ... | ... | @@ -222,12 +225,7 @@ |
| 222 | 225 | |
| 223 | 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 | 230 | return hllapi_get_state(); |
| 233 | 231 | |
| ... | ... | @@ -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 | 276 | HLLAPI_API_CALL hllapi_cmp_text_at_address(WORD addr, LPSTR text) { |
| 261 | 277 | |
| 262 | 278 | try { | ... | ... |
src/core/controller.cc
| ... | ... | @@ -32,7 +32,6 @@ |
| 32 | 32 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
| 33 | 33 | |
| 34 | 34 | static TN3270::Host * hllapi_host = nullptr; |
| 35 | - static time_t hllapi_timeout = 120; | |
| 36 | 35 | std::string hllapi_lasterror = ""; |
| 37 | 36 | |
| 38 | 37 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| ... | ... | @@ -69,7 +68,7 @@ |
| 69 | 68 | hllapi_host = new TN3270::Host(*id ? id : nullptr, "UTF-8"); |
| 70 | 69 | #endif // _WIN32 |
| 71 | 70 | |
| 72 | - hllapi_host->setTimeout(hllapi_timeout); | |
| 71 | + hllapi_host->setTimeout(120); | |
| 73 | 72 | |
| 74 | 73 | } |
| 75 | 74 | catch(std::exception &e) |
| ... | ... | @@ -78,6 +77,7 @@ |
| 78 | 77 | return HLLAPI_STATUS_SYSTEM_ERROR; |
| 79 | 78 | } |
| 80 | 79 | |
| 80 | + debug("hllapi_host=%p",hllapi_host); | |
| 81 | 81 | return HLLAPI_STATUS_SUCCESS; |
| 82 | 82 | |
| 83 | 83 | } |
| ... | ... | @@ -110,6 +110,7 @@ |
| 110 | 110 | throw runtime_error( _("Not initialized") ); |
| 111 | 111 | } |
| 112 | 112 | |
| 113 | + trace("%s()=%p",__FUNCTION__,hllapi_host); | |
| 113 | 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 | 453 | // UNLOCKDELAY |
| 454 | 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 | 461 | } else { |
| 457 | 462 | |
| 458 | 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 | 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 | 137 | |
| 138 | 138 | #else |
| 139 | 139 | |
| 140 | - #include <cstdint> | |
| 140 | + #include <stdint.h> | |
| 141 | 141 | |
| 142 | 142 | // From wtypesbase.h |
| 143 | 143 | typedef uint8_t BYTE; |
| ... | ... | @@ -324,6 +324,7 @@ |
| 324 | 324 | |
| 325 | 325 | HLLAPI_API_CALL hllapi_wait_for_ready(WORD seconds); |
| 326 | 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 | 328 | HLLAPI_API_CALL hllapi_wait(WORD seconds); |
| 328 | 329 | HLLAPI_API_CALL hllapi_pfkey(WORD key); |
| 329 | 330 | HLLAPI_API_CALL hllapi_pakey(WORD key); |
| ... | ... | @@ -346,6 +347,7 @@ |
| 346 | 347 | HLLAPI_API_CSTR hllapi_get_last_error(); |
| 347 | 348 | |
| 348 | 349 | HLLAPI_API_CALL hllapi_set_unlock_delay(WORD ms); |
| 350 | + HLLAPI_API_CALL hllapi_set_timeout(WORD seconds); | |
| 349 | 351 | |
| 350 | 352 | HLLAPI_API_CALL hllapi_set_cursor_address(WORD pos); |
| 351 | 353 | HLLAPI_API_CALL hllapi_set_cursor_position(WORD row, WORD col); | ... | ... |