Commit 765391db278bcbc9f785b492f545cc30efe2e207
1 parent
6b8da11d
Exists in
master
and in
1 other branch
Fixing performance issues.
Showing
1 changed file
with
62 additions
and
19 deletions
Show diff stats
src/core/set.cc
@@ -44,27 +44,70 @@ | @@ -44,27 +44,70 @@ | ||
44 | 44 | ||
45 | TN3270::Host &host = getSession(); | 45 | TN3270::Host &host = getSession(); |
46 | 46 | ||
47 | - kLock = host.waitForKeyboardUnlock(); | ||
48 | - | ||
49 | - if(kLock == LIB3270_KL_UNLOCKED) { | ||
50 | - | ||
51 | - try { | ||
52 | - | ||
53 | - worker(host); | ||
54 | - return HLLAPI_STATUS_SUCCESS; | ||
55 | - | ||
56 | - } catch(const std::exception &e) { | ||
57 | - | ||
58 | - // Worker has failed! | ||
59 | - | ||
60 | - hllapi_lasterror = e.what(); | ||
61 | - } | ||
62 | - | ||
63 | - // Failed! Get lock state. | ||
64 | - kLock = host.getKeyboardLockState(); | ||
65 | - | 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; | ||
66 | } | 107 | } |
67 | 108 | ||
109 | + return HLLAPI_STATUS_SUCCESS; | ||
110 | + | ||
68 | } catch(const std::system_error &e) { | 111 | } catch(const std::system_error &e) { |
69 | 112 | ||
70 | return hllapi_translate_error(e); | 113 | return hllapi_translate_error(e); |