Commit 22842162e8b587ff4f4c1df3a9cb853a4409aea5
1 parent
765391db
Exists in
master
and in
1 other branch
Fixing performance issues.
Showing
4 changed files
with
68 additions
and
91 deletions
Show diff stats
src/core/actions.cc
src/core/calls.cc
... | ... | @@ -37,6 +37,10 @@ |
37 | 37 | |
38 | 38 | return atoi(getSession().getRevision().c_str()); |
39 | 39 | |
40 | + } catch(const std::system_error &e) { | |
41 | + | |
42 | + hllapi_translate_error(e); | |
43 | + | |
40 | 44 | } catch(const std::exception &e) { |
41 | 45 | |
42 | 46 | hllapi_lasterror = e.what(); |
... | ... | @@ -57,6 +61,10 @@ |
57 | 61 | if(wait) |
58 | 62 | host.wait(TN3270::CONNECTED_TN3270E); |
59 | 63 | |
64 | + } catch(const std::system_error &e) { | |
65 | + | |
66 | + return hllapi_translate_error(e); | |
67 | + | |
60 | 68 | } catch(const std::exception &e) { |
61 | 69 | |
62 | 70 | hllapi_lasterror = e.what(); |
... | ... | @@ -79,6 +87,10 @@ |
79 | 87 | |
80 | 88 | return getSession().isConnected(); |
81 | 89 | |
90 | + } catch(const std::system_error &e) { | |
91 | + | |
92 | + return hllapi_translate_error(e); | |
93 | + | |
82 | 94 | } catch(std::exception &e) { |
83 | 95 | |
84 | 96 | hllapi_lasterror = e.what(); |
... | ... | @@ -120,6 +132,10 @@ |
120 | 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 | 139 | } catch(std::exception &e) { |
124 | 140 | |
125 | 141 | hllapi_lasterror = e.what(); |
... | ... | @@ -136,6 +152,10 @@ |
136 | 152 | |
137 | 153 | return (DWORD) getSession().getProgramMessage(); |
138 | 154 | |
155 | + } catch(const std::system_error &e) { | |
156 | + | |
157 | + hllapi_translate_error(e); | |
158 | + | |
139 | 159 | } catch(std::exception &e) { |
140 | 160 | |
141 | 161 | hllapi_lasterror = e.what(); |
... | ... | @@ -153,6 +173,10 @@ |
153 | 173 | |
154 | 174 | getSession().disconnect(); |
155 | 175 | |
176 | + } catch(const std::system_error &e) { | |
177 | + | |
178 | + return hllapi_translate_error(e); | |
179 | + | |
156 | 180 | } catch(std::exception &e) { |
157 | 181 | |
158 | 182 | hllapi_lasterror = e.what(); |
... | ... | @@ -168,12 +192,12 @@ |
168 | 192 | |
169 | 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 | 202 | } catch(const std::exception &e) { |
179 | 203 | |
... | ... | @@ -193,7 +217,11 @@ |
193 | 217 | |
194 | 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 | 226 | } catch(const std::exception &e) { |
199 | 227 | |
... | ... | @@ -209,12 +237,12 @@ |
209 | 237 | |
210 | 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 | 247 | } catch(std::exception &e) { |
220 | 248 | |
... | ... | @@ -233,6 +261,10 @@ |
233 | 261 | getSession().setCharSet((const char *) charset); |
234 | 262 | return HLLAPI_STATUS_SUCCESS; |
235 | 263 | |
264 | + } catch(const std::system_error &e) { | |
265 | + | |
266 | + return hllapi_translate_error(e); | |
267 | + | |
236 | 268 | } catch(std::exception &e) { |
237 | 269 | |
238 | 270 | hllapi_lasterror = e.what(); |
... | ... | @@ -248,8 +280,11 @@ |
248 | 280 | try { |
249 | 281 | |
250 | 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 | 289 | } catch(std::exception &e) { |
255 | 290 | |
... | ... | @@ -267,6 +302,10 @@ |
267 | 302 | |
268 | 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 | 309 | } catch(std::exception &e) { |
271 | 310 | |
272 | 311 | hllapi_lasterror = e.what(); |
... | ... | @@ -285,6 +324,10 @@ |
285 | 324 | |
286 | 325 | return HLLAPI_STATUS_SUCCESS; |
287 | 326 | |
327 | + } catch(const std::system_error &e) { | |
328 | + | |
329 | + return hllapi_translate_error(e); | |
330 | + | |
288 | 331 | } catch(std::exception &e) { |
289 | 332 | |
290 | 333 | hllapi_lasterror = e.what(); |
... | ... | @@ -301,6 +344,10 @@ |
301 | 344 | |
302 | 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 | 351 | } catch(std::exception &e) { |
305 | 352 | |
306 | 353 | hllapi_lasterror = e.what(); |
... | ... | @@ -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 | 378 | } catch(std::exception &e) { |
328 | 379 | |
329 | 380 | hllapi_lasterror = e.what(); | ... | ... |
src/core/cursor.cc
... | ... | @@ -35,16 +35,13 @@ |
35 | 35 | |
36 | 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 | 46 | } catch(const std::exception &e) { |
50 | 47 | ... | ... |
src/core/set.cc
... | ... | @@ -38,74 +38,9 @@ |
38 | 38 | |
39 | 39 | static DWORD set(std::function<void(TN3270::Host &)> worker) noexcept { |
40 | 40 | |
41 | - LIB3270_KEYBOARD_LOCK_STATE kLock = LIB3270_KL_UNLOCKED; | |
42 | - | |
43 | 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 | 44 | return HLLAPI_STATUS_SUCCESS; |
110 | 45 | |
111 | 46 | } catch(const std::system_error &e) { |
... | ... | @@ -122,11 +57,10 @@ |
122 | 57 | |
123 | 58 | // Unexpected error getting session or lock state |
124 | 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 | ... | ... |