Commit 22842162e8b587ff4f4c1df3a9cb853a4409aea5

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

Fixing performance issues.

src/core/actions.cc
@@ -36,12 +36,7 @@ @@ -36,12 +36,7 @@
36 36
37 try { 37 try {
38 38
39 - TN3270::Host &host = getSession();  
40 -  
41 - if(!host.isConnected())  
42 - return HLLAPI_STATUS_DISCONNECTED;  
43 -  
44 - worker(host); 39 + worker(getSession());
45 40
46 return HLLAPI_STATUS_SUCCESS; 41 return HLLAPI_STATUS_SUCCESS;
47 42
src/core/calls.cc
@@ -37,6 +37,10 @@ @@ -37,6 +37,10 @@
37 37
38 return atoi(getSession().getRevision().c_str()); 38 return atoi(getSession().getRevision().c_str());
39 39
  40 + } catch(const std::system_error &e) {
  41 +
  42 + hllapi_translate_error(e);
  43 +
40 } catch(const std::exception &e) { 44 } catch(const std::exception &e) {
41 45
42 hllapi_lasterror = e.what(); 46 hllapi_lasterror = e.what();
@@ -57,6 +61,10 @@ @@ -57,6 +61,10 @@
57 if(wait) 61 if(wait)
58 host.wait(TN3270::CONNECTED_TN3270E); 62 host.wait(TN3270::CONNECTED_TN3270E);
59 63
  64 + } catch(const std::system_error &e) {
  65 +
  66 + return hllapi_translate_error(e);
  67 +
60 } catch(const std::exception &e) { 68 } catch(const std::exception &e) {
61 69
62 hllapi_lasterror = e.what(); 70 hllapi_lasterror = e.what();
@@ -79,6 +87,10 @@ @@ -79,6 +87,10 @@
79 87
80 return getSession().isConnected(); 88 return getSession().isConnected();
81 89
  90 + } catch(const std::system_error &e) {
  91 +
  92 + return hllapi_translate_error(e);
  93 +
82 } catch(std::exception &e) { 94 } catch(std::exception &e) {
83 95
84 hllapi_lasterror = e.what(); 96 hllapi_lasterror = e.what();
@@ -120,6 +132,10 @@ @@ -120,6 +132,10 @@
120 return HLLAPI_STATUS_WAITING; // time-out while still busy (in XCLOCK or XSYSTEM in X) for the 3270 terminal emulation. 132 return HLLAPI_STATUS_WAITING; // time-out while still busy (in XCLOCK or XSYSTEM in X) for the 3270 terminal emulation.
121 } 133 }
122 134
  135 + } catch(const std::system_error &e) {
  136 +
  137 + return hllapi_translate_error(e);
  138 +
123 } catch(std::exception &e) { 139 } catch(std::exception &e) {
124 140
125 hllapi_lasterror = e.what(); 141 hllapi_lasterror = e.what();
@@ -136,6 +152,10 @@ @@ -136,6 +152,10 @@
136 152
137 return (DWORD) getSession().getProgramMessage(); 153 return (DWORD) getSession().getProgramMessage();
138 154
  155 + } catch(const std::system_error &e) {
  156 +
  157 + hllapi_translate_error(e);
  158 +
139 } catch(std::exception &e) { 159 } catch(std::exception &e) {
140 160
141 hllapi_lasterror = e.what(); 161 hllapi_lasterror = e.what();
@@ -153,6 +173,10 @@ @@ -153,6 +173,10 @@
153 173
154 getSession().disconnect(); 174 getSession().disconnect();
155 175
  176 + } catch(const std::system_error &e) {
  177 +
  178 + return hllapi_translate_error(e);
  179 +
156 } catch(std::exception &e) { 180 } catch(std::exception &e) {
157 181
158 hllapi_lasterror = e.what(); 182 hllapi_lasterror = e.what();
@@ -168,12 +192,12 @@ @@ -168,12 +192,12 @@
168 192
169 try { 193 try {
170 194
171 - TN3270::Host &host = getSession(); 195 + getSession().waitForReady((unsigned int) seconds);
  196 + return HLLAPI_STATUS_SUCCESS;
172 197
173 - if(host.isConnected())  
174 - host.waitForReady((unsigned int) seconds); 198 + } catch(const std::system_error &e) {
175 199
176 - return hllapi_get_state(); 200 + return hllapi_translate_error(e);
177 201
178 } catch(const std::exception &e) { 202 } catch(const std::exception &e) {
179 203
@@ -193,7 +217,11 @@ @@ -193,7 +217,11 @@
193 217
194 host.wait((TN3270::ConnectionState) cstate, (unsigned int) seconds); 218 host.wait((TN3270::ConnectionState) cstate, (unsigned int) seconds);
195 219
196 - return 0; 220 + return HLLAPI_STATUS_SUCCESS;
  221 +
  222 + } catch(const std::system_error &e) {
  223 +
  224 + return hllapi_translate_error(e);
197 225
198 } catch(const std::exception &e) { 226 } catch(const std::exception &e) {
199 227
@@ -209,12 +237,12 @@ @@ -209,12 +237,12 @@
209 237
210 try { 238 try {
211 239
212 - TN3270::Host &host = getSession(); 240 + getSession().waitForChange((unsigned int) seconds);
  241 + return HLLAPI_STATUS_SUCCESS;
213 242
214 - if(host.isConnected())  
215 - host.waitForChange((unsigned int) seconds); 243 + } catch(const std::system_error &e) {
216 244
217 - return hllapi_get_state(); 245 + return hllapi_translate_error(e);
218 246
219 } catch(std::exception &e) { 247 } catch(std::exception &e) {
220 248
@@ -233,6 +261,10 @@ @@ -233,6 +261,10 @@
233 getSession().setCharSet((const char *) charset); 261 getSession().setCharSet((const char *) charset);
234 return HLLAPI_STATUS_SUCCESS; 262 return HLLAPI_STATUS_SUCCESS;
235 263
  264 + } catch(const std::system_error &e) {
  265 +
  266 + return hllapi_translate_error(e);
  267 +
236 } catch(std::exception &e) { 268 } catch(std::exception &e) {
237 269
238 hllapi_lasterror = e.what(); 270 hllapi_lasterror = e.what();
@@ -248,8 +280,11 @@ @@ -248,8 +280,11 @@
248 try { 280 try {
249 281
250 getSession().wait(seconds); 282 getSession().wait(seconds);
  283 + return HLLAPI_STATUS_SUCCESS;
251 284
252 - return hllapi_get_state(); 285 + } catch(const std::system_error &e) {
  286 +
  287 + return hllapi_translate_error(e);
253 288
254 } catch(std::exception &e) { 289 } catch(std::exception &e) {
255 290
@@ -267,6 +302,10 @@ @@ -267,6 +302,10 @@
267 302
268 return getSession().compare((unsigned int) row, (unsigned int) col, text); 303 return getSession().compare((unsigned int) row, (unsigned int) col, text);
269 304
  305 + } catch(const std::system_error &e) {
  306 +
  307 + return hllapi_translate_error(e);
  308 +
270 } catch(std::exception &e) { 309 } catch(std::exception &e) {
271 310
272 hllapi_lasterror = e.what(); 311 hllapi_lasterror = e.what();
@@ -285,6 +324,10 @@ @@ -285,6 +324,10 @@
285 324
286 return HLLAPI_STATUS_SUCCESS; 325 return HLLAPI_STATUS_SUCCESS;
287 326
  327 + } catch(const std::system_error &e) {
  328 +
  329 + return hllapi_translate_error(e);
  330 +
288 } catch(std::exception &e) { 331 } catch(std::exception &e) {
289 332
290 hllapi_lasterror = e.what(); 333 hllapi_lasterror = e.what();
@@ -301,6 +344,10 @@ @@ -301,6 +344,10 @@
301 344
302 return getSession().compare((int) addr, text); 345 return getSession().compare((int) addr, text);
303 346
  347 + } catch(const std::system_error &e) {
  348 +
  349 + return hllapi_translate_error(e);
  350 +
304 } catch(std::exception &e) { 351 } catch(std::exception &e) {
305 352
306 hllapi_lasterror = e.what(); 353 hllapi_lasterror = e.what();
@@ -324,6 +371,10 @@ @@ -324,6 +371,10 @@
324 371
325 } 372 }
326 373
  374 + } catch(const std::system_error &e) {
  375 +
  376 + return hllapi_translate_error(e);
  377 +
327 } catch(std::exception &e) { 378 } catch(std::exception &e) {
328 379
329 hllapi_lasterror = e.what(); 380 hllapi_lasterror = e.what();
src/core/cursor.cc
@@ -35,16 +35,13 @@ @@ -35,16 +35,13 @@
35 35
36 try { 36 try {
37 37
38 - TN3270::Host &host = getSession(); 38 + worker(getSession());
39 39
40 - if(!host.isConnected()) {  
41 - hllapi_lasterror = _( "Disconnected from host" );  
42 - return HLLAPI_STATUS_DISCONNECTED;  
43 - } 40 + return HLLAPI_STATUS_SUCCESS;
44 41
45 - worker(host); 42 + } catch(const std::system_error &e) {
46 43
47 - return HLLAPI_STATUS_SUCCESS; 44 + return hllapi_translate_error(e);
48 45
49 } catch(const std::exception &e) { 46 } catch(const std::exception &e) {
50 47
src/core/set.cc
@@ -38,74 +38,9 @@ @@ -38,74 +38,9 @@
38 38
39 static DWORD set(std::function<void(TN3270::Host &)> worker) noexcept { 39 static DWORD set(std::function<void(TN3270::Host &)> worker) noexcept {
40 40
41 - LIB3270_KEYBOARD_LOCK_STATE kLock = LIB3270_KL_UNLOCKED;  
42 -  
43 try { 41 try {
44 42
45 - TN3270::Host &host = getSession();  
46 -  
47 - switch(host.waitForKeyboardUnlock()) {  
48 - case LIB3270_KL_UNLOCKED:  
49 - worker(host);  
50 - break;  
51 -  
52 - case LIB3270_KL_NOT_CONNECTED:  
53 - hllapi_lasterror = _("Not connected to host");  
54 - return HLLAPI_STATUS_DISCONNECTED;  
55 -  
56 - case LIB3270_KL_OERR_MASK:  
57 - hllapi_lasterror = _("LIB3270_KL_OERR_MASK");  
58 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
59 -  
60 - case LIB3270_KL_OERR_PROTECTED:  
61 - hllapi_lasterror = _("LIB3270_KL_OERR_PROTECTED");  
62 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
63 -  
64 - case LIB3270_KL_OERR_NUMERIC:  
65 - hllapi_lasterror = _("LIB3270_KL_OERR_NUMERIC");  
66 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
67 -  
68 - case LIB3270_KL_OERR_OVERFLOW:  
69 - hllapi_lasterror = _("LIB3270_KL_OERR_OVERFLOW");  
70 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
71 -  
72 - case LIB3270_KL_OERR_DBCS:  
73 - hllapi_lasterror = _("LIB3270_KL_OERR_DBCS");  
74 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
75 -  
76 - case LIB3270_KL_AWAITING_FIRST:  
77 - hllapi_lasterror = _("LIB3270_KL_AWAITING_FIRST");  
78 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
79 -  
80 - case LIB3270_KL_OIA_TWAIT:  
81 - hllapi_lasterror = _("LIB3270_KL_OIA_TWAIT");  
82 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
83 -  
84 - case LIB3270_KL_OIA_LOCKED:  
85 - hllapi_lasterror = _("LIB3270_KL_OIA_LOCKED");  
86 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
87 -  
88 - case LIB3270_KL_DEFERRED_UNLOCK:  
89 - hllapi_lasterror = _("LIB3270_KL_DEFERRED_UNLOCK");  
90 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
91 -  
92 - case LIB3270_KL_ENTER_INHIBIT:  
93 - hllapi_lasterror = _("LIB3270_KL_ENTER_INHIBIT");  
94 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
95 -  
96 - case LIB3270_KL_SCROLLED:  
97 - hllapi_lasterror = _("LIB3270_KL_SCROLLED");  
98 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
99 -  
100 - case LIB3270_KL_OIA_MINUS:  
101 - hllapi_lasterror = _("LIB3270_KL_OIA_MINUS");  
102 - return HLLAPI_STATUS_KEYBOARD_LOCKED;  
103 -  
104 - default:  
105 - hllapi_lasterror = _("Unexpected error waiting for keyboard unlock");  
106 - return HLLAPI_STATUS_SYSTEM_ERROR;  
107 - }  
108 - 43 + worker(getSession());
109 return HLLAPI_STATUS_SUCCESS; 44 return HLLAPI_STATUS_SUCCESS;
110 45
111 } catch(const std::system_error &e) { 46 } catch(const std::system_error &e) {
@@ -122,11 +57,10 @@ @@ -122,11 +57,10 @@
122 57
123 // Unexpected error getting session or lock state 58 // Unexpected error getting session or lock state
124 hllapi_lasterror = _( "Unexpected error" ); 59 hllapi_lasterror = _( "Unexpected error" );
125 - return HLLAPI_STATUS_SYSTEM_ERROR;  
126 60
127 } 61 }
128 62
129 - return hllapi_translate_error(kLock); 63 + return HLLAPI_STATUS_SYSTEM_ERROR;
130 64
131 } 65 }
132 66