Commit 765391db278bcbc9f785b492f545cc30efe2e207

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

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 44  
45 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 111 } catch(const std::system_error &e) {
69 112  
70 113 return hllapi_translate_error(e);
... ...