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); | ... | ... |