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. | ... | ... |