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,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);