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