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 194 public void onFinish()
195 195 {
196 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 224  
216 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 229 try
221 230 {
... ... @@ -233,12 +242,11 @@ public abstract class lib3270
233 242 if (msg == null)
234 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 247 postPopup(1, "Desconectado", "Erro de comunicação ao enviar dados", msg);
239 248  
240   - connected = false;
241   -
  249 + net_cleanup();
242 250 }
243 251 return -1;
244 252 }
... ... @@ -312,29 +320,31 @@ public abstract class lib3270
312 320 {
313 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 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 350 Log.v(TAG, "Exiting communication thread");
... ... @@ -541,6 +551,8 @@ public abstract class lib3270
541 551  
542 552 private int net_cleanup()
543 553 {
  554 + connected = false;
  555 +/*
544 556 if(sock != null)
545 557 {
546 558 Thread t = new Thread()
... ... @@ -554,40 +566,26 @@ public abstract class lib3270
554 566 try
555 567 {
556 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 576 try
572 577 {
573 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 586 t.start();
589 587 }
590   -
  588 + */
591 589 return 0;
592 590 }
593 591  
... ...