Commit 62ed4ef47e17366a751263500ea6d3855f859c7e

Authored by Perry Werneck
1 parent 1b8493c9
Exists in master and in 1 other branch develop

Implementing hllapi_set_session_property(const LPSTR property, const

LPSTR value) method.
src/core/controller.cc
... ... @@ -70,6 +70,11 @@
70 70  
71 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 78 hllapi_host->setTimeout(120);
74 79  
75 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 470  
471 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 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 330 HLLAPI_API_CALL hllapi_pakey(WORD key);
331 331  
332 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 335 HLLAPI_API_CALL hllapi_enter(void);
335 336 HLLAPI_API_CALL hllapi_erase(void);
... ...
src/testprogram/testprogram.cc
... ... @@ -89,6 +89,9 @@
89 89  
90 90 #endif // ! defined(_MSC_VER)
91 91  
  92 + cout << "Host: \"" << host << "\"" << endl
  93 + << "Session: \"" << session << "\"" << endl;
  94 +
92 95 try {
93 96  
94 97 rc = hllapi_init((char *) session);
... ... @@ -101,6 +104,9 @@
101 104  
102 105 hllapi_set_timeout(10);
103 106  
  107 + // Hack to speed up connection.
  108 + hllapi_set_session_property("crl_download","0");
  109 +
104 110 } catch(const std::exception &e) {
105 111  
106 112 cerr << e.what() << endl;
... ...