Skip to content

Commit 6142a22

Browse files
committed
Cleaned up networking code and made it more robust
1 parent 783a16a commit 6142a22

File tree

2 files changed

+21
-25
lines changed

2 files changed

+21
-25
lines changed

CodenameOne/src/com/codename1/io/NetworkManager.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -430,31 +430,38 @@ public void actionPerformed(NetworkEvent e) {
430430
public void addToQueueAndWait(final ConnectionRequest request) {
431431
class WaitingClass implements Runnable, ActionListener<NetworkEvent> {
432432
private final boolean edt = CN.isEdt();
433-
private boolean finishedWaiting;
433+
434+
private boolean isInQueueOrProcessing() {
435+
synchronized (LOCK) {
436+
if(pending == null || networkThreads == null) {
437+
return false;
438+
}
439+
if(pending.contains(request)) {
440+
return true;
441+
}
442+
for(NetworkThread t : networkThreads) {
443+
if(t.currentRequest == request) {
444+
return true;
445+
}
446+
}
447+
}
448+
return false;
449+
}
434450

435451
public void run() {
436452
if (edt) {
437-
while (!finishedWaiting) {
438-
try {
439-
Thread.sleep(30);
440-
} catch (InterruptedException ex) {
441-
ex.printStackTrace();
442-
}
453+
while (isInQueueOrProcessing()) {
454+
Util.sleep(30);
443455
}
444456
} else {
445-
while (!request.complete) {
446-
try {
447-
Thread.sleep(30);
448-
} catch (InterruptedException ex) {
449-
ex.printStackTrace();
450-
}
457+
while (isInQueueOrProcessing()) {
458+
Util.sleep(30);
451459
}
452460
}
453461
}
454462

455463
public void actionPerformed(NetworkEvent e) {
456464
if (e.getError() != null) {
457-
finishedWaiting = true;
458465
removeProgressListener(this);
459466
removeErrorListener(this);
460467
return;
@@ -465,7 +472,6 @@ public void actionPerformed(NetworkEvent e) {
465472
request.retrying = false;
466473
return;
467474
}
468-
finishedWaiting = true;
469475
removeProgressListener(this);
470476
removeErrorListener(this);
471477
}

maven/core-unittests/src/test/java/com/codename1/io/services/AdditionalServicesCoverageTest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,22 @@
11
package com.codename1.io.services;
22

3-
import com.codename1.io.FileSystemStorage;
4-
import com.codename1.io.NetworkEvent;
5-
import com.codename1.io.NetworkManager;
63
import com.codename1.io.Storage;
74
import com.codename1.io.ConnectionRequest;
85
import com.codename1.junit.FormTest;
96
import com.codename1.junit.UITestBase;
107
import com.codename1.testing.TestCodenameOneImplementation;
11-
import com.codename1.ui.Component;
12-
import com.codename1.ui.Display;
138
import com.codename1.ui.DisplayTest;
14-
import com.codename1.ui.EncodedImage;
159
import com.codename1.ui.Form;
1610
import com.codename1.ui.Image;
1711
import com.codename1.ui.Label;
18-
import com.codename1.ui.geom.Dimension;
19-
import com.codename1.ui.layouts.BorderLayout;
2012
import com.codename1.ui.list.DefaultListModel;
2113
import com.codename1.ui.util.ImageIO;
2214

2315
import java.io.ByteArrayInputStream;
24-
import java.io.ByteArrayOutputStream;
2516
import java.io.IOException;
2617
import java.io.InputStream;
2718
import java.io.OutputStream;
2819
import java.util.HashMap;
29-
import java.util.Hashtable;
3020
import java.util.Vector;
3121
import java.util.Map;
3222
import com.codename1.ui.List;

0 commit comments

Comments
 (0)