Commit 0142ec202886e36ee36c154674510b7aaa89fba1
1 parent
c853e9b4
Exists in
master
and in
5 other branches
Incluindo método para esperar por uma string na API java.
Showing
3 changed files
with
47 additions
and
4 deletions
Show diff stats
src/classlib/session.cc
... | ... | @@ -199,15 +199,22 @@ |
199 | 199 | { |
200 | 200 | time_t end = time(0)+timeout; |
201 | 201 | |
202 | + iterate(false); | |
202 | 203 | while(time(0) < end) |
203 | 204 | { |
204 | - if(!is_connected()) | |
205 | - return ENOTCONN; | |
205 | + trace("Aguardar %d segundos",(int) (end - time(0))); | |
206 | 206 | |
207 | - if(!cmp_text_at(row,col,key)) | |
207 | + int rc = wait_for_ready(end - time(0)); | |
208 | + if(rc) { | |
209 | + return rc; | |
210 | + } | |
211 | + | |
212 | + if(!cmp_text_at(row,col,key)) { | |
208 | 213 | return 0; |
214 | + } | |
215 | + | |
216 | + iterate(true); | |
209 | 217 | |
210 | - iterate(); | |
211 | 218 | } |
212 | 219 | |
213 | 220 | return ETIMEDOUT; | ... | ... |
src/java/getset.cc
... | ... | @@ -118,6 +118,29 @@ JNIEXPORT jint JNICALL Java_pw3270_terminal_cmp_1string_1at(JNIEnv *env, jobject |
118 | 118 | |
119 | 119 | } |
120 | 120 | |
121 | +JNIEXPORT jint JNICALL Java_pw3270_terminal_wait_1for_1string_1at(JNIEnv *env, jobject obj, jint row, jint col, jstring j_str, jint timeout) { | |
122 | + | |
123 | + const char * str = env->GetStringUTFChars(j_str, 0); | |
124 | + jint rc = -1; | |
125 | + | |
126 | + try { | |
127 | + | |
128 | + rc = java::getHandle(env,obj)->wait_for_string_at((int) row, (int) col, str, timeout); | |
129 | + | |
130 | + } catch(std::exception &e) { | |
131 | + | |
132 | + env->ReleaseStringUTFChars( j_str, str); | |
133 | + env->ThrowNew(env->FindClass("java/lang/Exception"), e.what()); | |
134 | + return -1; | |
135 | + | |
136 | + } | |
137 | + | |
138 | + env->ReleaseStringUTFChars( j_str, str); | |
139 | + return rc; | |
140 | + | |
141 | + | |
142 | +} | |
143 | + | |
121 | 144 | JNIEXPORT jint JNICALL Java_pw3270_terminal_input_1string(JNIEnv *env, jobject obj, jstring j_str) { |
122 | 145 | |
123 | 146 | const char * str = env->GetStringUTFChars(j_str, 0); | ... | ... |
src/java/terminal.java
... | ... | @@ -53,6 +53,19 @@ public class terminal |
53 | 53 | public native int wait_for_ready(int seconds); |
54 | 54 | |
55 | 55 | /** |
56 | + * Wait for text at defined position | |
57 | + * | |
58 | + * @param row Row for text to compare. | |
59 | + * @param col Column for text to compare. | |
60 | + * @param text String to compare. | |
61 | + * @param seconds Maximum time (in seconds) to wait for. | |
62 | + * | |
63 | + * @return 0 for success, error code if not. | |
64 | + * | |
65 | + */ | |
66 | + public native int wait_for_string_at(int row, int col, String text, int seconds); | |
67 | + | |
68 | + /** | |
56 | 69 | * Get the current lib3270 version. |
57 | 70 | * |
58 | 71 | * @return String with the current lib3270 version. | ... | ... |