Commit cdbaf14bb3e1e7e9c3eaedec2e535a5b2010a0e1

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

Updating unlock api.

client/src/core/session.cc
... ... @@ -71,16 +71,19 @@
71 71 pakey( ((unsigned short) key) + 1);
72 72 }
73 73  
74   - void Session::input(const char *text, const char control_char) {
  74 + LIB3270_KEYBOARD_LOCK_STATE Session::input(const char *text, const char control_char) {
75 75  
76 76 size_t sz;
  77 + LIB3270_KEYBOARD_LOCK_STATE rc = (LIB3270_KEYBOARD_LOCK_STATE) 0;
77 78  
78 79 for(const char * ptr = strchr(text,control_char); ptr; ptr = strchr(text,control_char)) {
79 80  
80 81 // Wait for unlock, ignore errors.
81 82 sz = (size_t) (ptr-text);
82 83 if(sz) {
83   - waitForUnlock();
  84 + if( (rc = waitForUnlock()) != 0) {
  85 + return rc;
  86 + }
84 87 push(text,sz);
85 88 }
86 89  
... ... @@ -91,7 +94,7 @@
91 94  
92 95 case 'E': // Enter
93 96 push(ENTER);
94   - waitForUnlock();
  97 + rc = waitForUnlock();
95 98 break;
96 99  
97 100 case 'F': // Erase EOF
... ... @@ -100,98 +103,122 @@
100 103  
101 104 case '1': // PF1
102 105 push(PF_1);
  106 + rc = waitForUnlock();
103 107 break;
104 108  
105 109 case '2': // PF2
106 110 push(PF_2);
  111 + rc = waitForUnlock();
107 112 break;
108 113  
109 114 case '3': // PF3
110 115 push(PF_3);
  116 + rc = waitForUnlock();
111 117 break;
112 118  
113 119 case '4': // PF4
114 120 push(PF_4);
  121 + rc = waitForUnlock();
115 122 break;
116 123  
117 124 case '5': // PF5
118 125 push(PF_5);
  126 + rc = waitForUnlock();
119 127 break;
120 128  
121 129 case '6': // PF6
122 130 push(PF_6);
  131 + rc = waitForUnlock();
123 132 break;
124 133  
125 134 case '7': // PF7
126 135 push(PF_7);
  136 + rc = waitForUnlock();
127 137 break;
128 138  
129 139 case '8': // PF8
130 140 push(PF_8);
  141 + rc = waitForUnlock();
131 142 break;
132 143  
133 144 case '9': // PF9
134 145 push(PF_9);
  146 + rc = waitForUnlock();
135 147 break;
136 148  
137 149 case 'a': // PF10
138 150 push(PF_10);
  151 + rc = waitForUnlock();
139 152 break;
140 153  
141 154 case 'b': // PF11
142 155 push(PF_11);
  156 + rc = waitForUnlock();
143 157 break;
144 158  
145 159 case 'c': // PF12
146 160 push(PF_12);
  161 + rc = waitForUnlock();
147 162 break;
148 163  
149 164 case 'd': // PF13
150 165 push(PF_13);
  166 + rc = waitForUnlock();
151 167 break;
152 168  
153 169 case 'e': // PF14
154 170 push(PF_14);
  171 + rc = waitForUnlock();
155 172 break;
156 173  
157 174 case 'f': // PF15
158 175 push(PF_15);
  176 + rc = waitForUnlock();
159 177 break;
160 178  
161 179 case 'g': // PF16
162 180 push(PF_16);
  181 + rc = waitForUnlock();
163 182 break;
164 183  
165 184 case 'h': // PF17
166 185 push(PF_17);
  186 + rc = waitForUnlock();
167 187 break;
168 188  
169 189 case 'i': // PF18
170 190 push(PF_18);
  191 + rc = waitForUnlock();
171 192 break;
172 193  
173 194 case 'j': // PF19
174 195 push(PF_19);
  196 + rc = waitForUnlock();
175 197 break;
176 198  
177 199 case 'k': // PF20
178 200 push(PF_20);
  201 + rc = waitForUnlock();
179 202 break;
180 203  
181 204 case 'l': // PF21
182 205 push(PF_21);
  206 + rc = waitForUnlock();
183 207 break;
184 208  
185 209 case 'm': // PF22
186 210 push(PF_22);
  211 + rc = waitForUnlock();
187 212 break;
188 213  
189 214 case 'n': // PF23
190 215 push(PF_23);
  216 + rc = waitForUnlock();
191 217 break;
192 218  
193 219 case 'o': // PF24
194 220 push(PF_24);
  221 + rc = waitForUnlock();
195 222 break;
196 223  
197 224 case '@': // Send '@' character
... ... @@ -200,14 +227,17 @@
200 227  
201 228 case 'x': // PA1
202 229 push(PA_1);
  230 + rc = waitForUnlock();
203 231 break;
204 232  
205 233 case 'y': // PA2
206 234 push(PA_2);
  235 + rc = waitForUnlock();
207 236 break;
208 237  
209 238 case 'z': // PA3
210 239 push(PA_3);
  240 + rc = waitForUnlock();
211 241 break;
212 242  
213 243 case 'B': // PC_LEFTTAB = "@B"
... ... @@ -318,6 +348,9 @@
318 348 // Global Const PC_FIELDPLUS = "@A@+"
319 349 }
320 350  
  351 + if(rc)
  352 + return rc;
  353 +
321 354 text = (ptr+1);
322 355 }
323 356  
... ... @@ -327,6 +360,7 @@
327 360 push(text,sz);
328 361 }
329 362  
  363 + return rc;
330 364 }
331 365  
332 366 /// @brief Search
... ...
client/src/session/remote/actions.cc
... ... @@ -215,6 +215,7 @@
215 215 }
216 216  
217 217 void IPC::Session::print(LIB3270_CONTENT_OPTION option) {
  218 + throw std::system_error(ENOTSUP, std::system_category());
218 219 }
219 220  
220 221 }
... ...
client/src/testprogram/testprogram.cc
... ... @@ -99,6 +99,7 @@
99 99 host.connect(nullptr);
100 100  
101 101 cout
  102 + << "Wait for unlock returns " << host.waitForUnlock() << std::endl
102 103 << "Connection state is " << toCharString(host.getConnectionState()) << std::endl
103 104 << "Program message is " << toCharString(host.getProgramMessage()) << std::endl
104 105 << "Luname is " << host.getLUName() << std::endl
... ...
common/src/include/lib3270/ipc.h
... ... @@ -284,7 +284,7 @@
284 284 /**
285 285 * @brief Input string parsing control char.
286 286 */
287   - void input(const char *text, const char control_char);
  287 + LIB3270_KEYBOARD_LOCK_STATE input(const char *text, const char control_char);
288 288  
289 289 // Properties.
290 290 virtual void getProperty(const char *name, int &value) const = 0;
... ...