Commit b0e8702af8a8dc6fe2dbd863d458fd80c0cf05bb

Authored by perry.werneck@gmail.com
1 parent 9ed6bd9a

Android - Melhorando processo de desconexão/conexão

Showing 1 changed file with 39 additions and 41 deletions   Show diff stats
android/src/br/com/bb/pw3270/lib3270.java
@@ -194,7 +194,16 @@ public abstract class lib3270 @@ -194,7 +194,16 @@ public abstract class lib3270
194 public void onFinish() 194 public void onFinish()
195 { 195 {
196 Log.d(TAG, "Timer " + id + " finished"); 196 Log.d(TAG, "Timer " + id + " finished");
197 - terminal.timerFinish(id); 197 +
  198 + Thread t = new Thread()
  199 + {
  200 + public void run()
  201 + {
  202 + terminal.timerFinish(id);
  203 + }
  204 + };
  205 +
  206 + t.start();
198 } 207 }
199 208
200 } 209 }
@@ -215,7 +224,7 @@ public abstract class lib3270 @@ -215,7 +224,7 @@ public abstract class lib3270
215 224
216 protected int send_data(byte[] data, int len) 225 protected int send_data(byte[] data, int len)
217 { 226 {
218 - Log.i(TAG, "Bytes a enviar: " + len); 227 + Log.d(TAG, "Bytes a enviar: " + len);
219 228
220 try 229 try
221 { 230 {
@@ -233,12 +242,11 @@ public abstract class lib3270 @@ -233,12 +242,11 @@ public abstract class lib3270
233 if (msg == null) 242 if (msg == null)
234 msg = ""; 243 msg = "";
235 244
236 - Log.i(TAG, "Erro ao enviar dados: " + msg); 245 + Log.d(TAG, "Erro ao enviar dados: " + msg);
237 246
238 postPopup(1, "Desconectado", "Erro de comunicação ao enviar dados", msg); 247 postPopup(1, "Desconectado", "Erro de comunicação ao enviar dados", msg);
239 248
240 - connected = false;  
241 - 249 + net_cleanup();
242 } 250 }
243 return -1; 251 return -1;
244 } 252 }
@@ -312,29 +320,31 @@ public abstract class lib3270 @@ -312,29 +320,31 @@ public abstract class lib3270
312 { 320 {
313 set_connection_status(true); 321 set_connection_status(true);
314 322
315 - while (connected) 323 + try
  324 + {
  325 + sock.setSoTimeout(100);
  326 + } catch (Exception e) { connected = false; }
  327 +
  328 + while (connected && sock.isConnected() )
316 { 329 {
317 - byte[] in = new byte[16384];  
318 - int sz = -1;  
319 -  
320 try 330 try
321 { 331 {
322 - sz = inData.read(in, 0, 16384); 332 + byte[] in = new byte[16384];
323 333
324 - } catch (Exception e)  
325 - {  
326 - String msg = e.getLocalizedMessage();  
327 - Log.i(TAG, "Erro ao receber dados do host: " + msg);  
328 - postPopup(1, "Desconectado", "Erro de comunicação ao receber dados", msg);  
329 - connected = false;  
330 - sz = -1;  
331 - } 334 + int sz = inData.read(in, 0, 16384);
332 335
333 - if (sz > 0)  
334 - procRecvdata(in,sz); 336 + if (sz > 0)
  337 + procRecvdata(in,sz);
335 338
336 - } 339 + } catch (Exception e) { }
337 340
  341 + }
  342 +
  343 + if(connected)
  344 + {
  345 + postPopup(1, "Desconectado", "Erro de comunicação ao receber dados", "");
  346 + connected = false;
  347 + }
338 } 348 }
339 349
340 Log.v(TAG, "Exiting communication thread"); 350 Log.v(TAG, "Exiting communication thread");
@@ -541,6 +551,8 @@ public abstract class lib3270 @@ -541,6 +551,8 @@ public abstract class lib3270
541 551
542 private int net_cleanup() 552 private int net_cleanup()
543 { 553 {
  554 + connected = false;
  555 +/*
544 if(sock != null) 556 if(sock != null)
545 { 557 {
546 Thread t = new Thread() 558 Thread t = new Thread()
@@ -554,40 +566,26 @@ public abstract class lib3270 @@ -554,40 +566,26 @@ public abstract class lib3270
554 try 566 try
555 { 567 {
556 sock.shutdownInput(); 568 sock.shutdownInput();
  569 + return;
557 } 570 }
558 - catch(Exception e)  
559 - {  
560 - String msg = e.getLocalizedMessage();  
561 - if(msg == null)  
562 - msg = e.getMessage();  
563 -  
564 - Log.v(TAG,": shutdownInput error" + (msg != null ? msg : e.toString()));  
565 - } 571 + catch(Exception e) { }
566 } 572 }
567 573
568 - /*  
569 - if!(sock == null && sock.isClosed())) 574 + if(!(sock == null && sock.isClosed()))
570 { 575 {
571 try 576 try
572 { 577 {
573 sock.close(); 578 sock.close();
  579 + return;
574 } 580 }
575 - catch(Exception e)  
576 - {  
577 - String msg = e.getLocalizedMessage();  
578 - if(msg == null)  
579 - msg = e.getMessage();  
580 -  
581 - Log.v(TAG,"sockclose error: " + (msg != null ? msg : e.toString()));  
582 - } 581 + catch(Exception e) { }
583 } 582 }
584 - */  
585 } 583 }
586 }; 584 };
587 585
588 t.start(); 586 t.start();
589 } 587 }
590 - 588 + */
591 return 0; 589 return 0;
592 } 590 }
593 591