Commit 62ed4ef47e17366a751263500ea6d3855f859c7e
1 parent
1b8493c9
Exists in
master
and in
1 other branch
Implementing hllapi_set_session_property(const LPSTR property, const
LPSTR value) method.
Showing
5 changed files
with
61 additions
and
1 deletions
Show diff stats
src/core/controller.cc
| @@ -70,6 +70,11 @@ | @@ -70,6 +70,11 @@ | ||
| 70 | 70 | ||
| 71 | debug("Will set timeout to %d",120); | 71 | debug("Will set timeout to %d",120); |
| 72 | 72 | ||
| 73 | +#ifdef DEBUG | ||
| 74 | + // Hack to speed up the tests. | ||
| 75 | + hllapi_host->setProperty("crl_download",false); | ||
| 76 | +#endif // DEBUG | ||
| 77 | + | ||
| 73 | hllapi_host->setTimeout(120); | 78 | hllapi_host->setTimeout(120); |
| 74 | 79 | ||
| 75 | } catch(const std::exception &e) { | 80 | } catch(const std::exception &e) { |
src/core/hllapi.cc
| @@ -470,7 +470,38 @@ HLLAPI_API_CALL hllapi_set_session_parameter(LPSTR param, WORD len, WORD value) | @@ -470,7 +470,38 @@ HLLAPI_API_CALL hllapi_set_session_parameter(LPSTR param, WORD len, WORD value) | ||
| 470 | 470 | ||
| 471 | } else { | 471 | } else { |
| 472 | 472 | ||
| 473 | - return HLLAPI_STATUS_BAD_PARAMETER; | 473 | + int rc = HLLAPI_STATUS_BAD_PARAMETER; |
| 474 | + | ||
| 475 | + char * buffer = NULL; | ||
| 476 | + asprintf(&buffer,"%u",(unsigned int) value); | ||
| 477 | + | ||
| 478 | + if(!buffer) | ||
| 479 | + return HLLAPI_STATUS_SYSTEM_ERROR; | ||
| 480 | + | ||
| 481 | + try { | ||
| 482 | + | ||
| 483 | + getSession().setProperty(param,buffer); | ||
| 484 | + | ||
| 485 | + } catch(const std::system_error &e) { | ||
| 486 | + | ||
| 487 | + rc = hllapi_translate_error(e); | ||
| 488 | + | ||
| 489 | + } catch(const std::exception &e) { | ||
| 490 | + | ||
| 491 | + // Error getting session or lock state | ||
| 492 | + hllapi_lasterror = e.what(); | ||
| 493 | + rc = HLLAPI_STATUS_SYSTEM_ERROR; | ||
| 494 | + | ||
| 495 | + } catch(...) { | ||
| 496 | + | ||
| 497 | + // Unexpected error getting session or lock state | ||
| 498 | + hllapi_lasterror = _( "Unexpected error" ); | ||
| 499 | + rc = HLLAPI_STATUS_SYSTEM_ERROR; | ||
| 500 | + | ||
| 501 | + } | ||
| 502 | + | ||
| 503 | + free(buffer); | ||
| 504 | + return rc; | ||
| 474 | 505 | ||
| 475 | } | 506 | } |
| 476 | 507 |
src/core/set.cc
| @@ -117,3 +117,20 @@ | @@ -117,3 +117,20 @@ | ||
| 117 | }); | 117 | }); |
| 118 | 118 | ||
| 119 | } | 119 | } |
| 120 | + | ||
| 121 | + HLLAPI_API_CALL hllapi_set_session_property(const LPSTR property, const LPSTR value) { | ||
| 122 | + | ||
| 123 | + if(!(property && *property)) { | ||
| 124 | + hllapi_lasterror = _( "Invalid property name" ); | ||
| 125 | + return HLLAPI_STATUS_BAD_PARAMETER; | ||
| 126 | + | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + return set([property,value](TN3270::Host &host) { | ||
| 130 | + | ||
| 131 | + host.setProperty(property,value); | ||
| 132 | + | ||
| 133 | + }); | ||
| 134 | + | ||
| 135 | + } | ||
| 136 | + |
src/include/lib3270/hllapi.h
| @@ -330,6 +330,7 @@ | @@ -330,6 +330,7 @@ | ||
| 330 | HLLAPI_API_CALL hllapi_pakey(WORD key); | 330 | HLLAPI_API_CALL hllapi_pakey(WORD key); |
| 331 | 331 | ||
| 332 | HLLAPI_API_CALL hllapi_set_session_parameter(LPSTR param, WORD len, WORD value); | 332 | HLLAPI_API_CALL hllapi_set_session_parameter(LPSTR param, WORD len, WORD value); |
| 333 | + HLLAPI_API_CALL hllapi_set_session_property(const LPSTR property, const LPSTR value); | ||
| 333 | 334 | ||
| 334 | HLLAPI_API_CALL hllapi_enter(void); | 335 | HLLAPI_API_CALL hllapi_enter(void); |
| 335 | HLLAPI_API_CALL hllapi_erase(void); | 336 | HLLAPI_API_CALL hllapi_erase(void); |
src/testprogram/testprogram.cc
| @@ -89,6 +89,9 @@ | @@ -89,6 +89,9 @@ | ||
| 89 | 89 | ||
| 90 | #endif // ! defined(_MSC_VER) | 90 | #endif // ! defined(_MSC_VER) |
| 91 | 91 | ||
| 92 | + cout << "Host: \"" << host << "\"" << endl | ||
| 93 | + << "Session: \"" << session << "\"" << endl; | ||
| 94 | + | ||
| 92 | try { | 95 | try { |
| 93 | 96 | ||
| 94 | rc = hllapi_init((char *) session); | 97 | rc = hllapi_init((char *) session); |
| @@ -101,6 +104,9 @@ | @@ -101,6 +104,9 @@ | ||
| 101 | 104 | ||
| 102 | hllapi_set_timeout(10); | 105 | hllapi_set_timeout(10); |
| 103 | 106 | ||
| 107 | + // Hack to speed up connection. | ||
| 108 | + hllapi_set_session_property("crl_download","0"); | ||
| 109 | + | ||
| 104 | } catch(const std::exception &e) { | 110 | } catch(const std::exception &e) { |
| 105 | 111 | ||
| 106 | cerr << e.what() << endl; | 112 | cerr << e.what() << endl; |