Skip to content

Commit 75d198b

Browse files
committed
implemented an example of a first contact behaviour, see DiscoverPeerAndStartEGChat in test/mock folder
1 parent 0986d49 commit 75d198b

11 files changed

+287
-43
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package net.sharksystem.asap.apps;
22

3-
import java.util.List;
3+
import java.util.Set;
44

55
public interface ASAPEnvironmentChangesListener {
66
/**
77
* ASAP peers establish connections on their own and usually if possible. This
88
* message is called if one or more connections could be established or got lost.
99
* @param peerList current list of peer we have a connection to
1010
*/
11-
void onlinePeersChanged(List<CharSequence> peerList);
11+
void onlinePeersChanged(Set<CharSequence> peerList);
1212
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package net.sharksystem.asap.apps;
22

3-
public interface ASAPPeerServices extends
3+
public interface ASAPSimplePeer extends
44
ASAPMessageSender,
55
ASAPEnvironmentChangesListenerManagement,
66
ASAPMessageReceivedListenerManagement
7-
{}
7+
{
8+
CharSequence getPeerName();
9+
}

src/net/sharksystem/asap/apps/mock/ASAPBasicAbstractPeer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import net.sharksystem.asap.apps.ASAPEnvironmentChangesListener;
44
import net.sharksystem.asap.apps.ASAPMessageReceivedListener;
5-
import net.sharksystem.asap.apps.ASAPPeerServices;
5+
import net.sharksystem.asap.apps.ASAPSimplePeer;
66
import net.sharksystem.asap.listenermanager.ASAPEnvironmentChangesListenerManager;
77
import net.sharksystem.asap.listenermanager.ASAPMessageReceivedListenerManager;
88

9-
public abstract class ASAPBasicAbstractPeer implements ASAPPeerServices {
9+
public abstract class ASAPBasicAbstractPeer implements ASAPSimplePeer {
1010
protected final CharSequence peerName;
1111

1212
protected ASAPBasicAbstractPeer(CharSequence peerName) {

src/net/sharksystem/asap/apps/mock/ASAPPeerMock.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import net.sharksystem.asap.ASAPException;
55
import net.sharksystem.asap.ASAPMessages;
66
import net.sharksystem.asap.apps.*;
7-
import net.sharksystem.asap.listenermanager.ASAPEnvironmentChangesListenerManager;
8-
import net.sharksystem.asap.listenermanager.ASAPMessageReceivedListenerManager;
97

108
import java.util.*;
119

@@ -14,7 +12,7 @@
1412
* test your applications logic without any fear of ASAP bugs.
1513
*
1614
*/
17-
public class ASAPPeerMock extends ASAPBasicAbstractPeer implements ASAPPeerServices {
15+
public class ASAPPeerMock extends ASAPBasicAbstractPeer implements ASAPSimplePeer {
1816
public ASAPPeerMock(CharSequence peerName) {
1917
super(peerName);
2018
}
@@ -65,6 +63,7 @@ private void startEncounter(ASAPPeerMock otherPeer, boolean callOtherSide) {
6563

6664
// remember this encounter
6765
this.encounterEra.put(otherPeer.getPeerName(), this.currentEra);
66+
this.environmentChangesListenerManager.notifyListeners(this.encounterEra.keySet());
6867

6968
// simulate message sending
7069
for(int tmpEra = lastMetEra; tmpEra < this.currentEra; tmpEra++) {
@@ -114,7 +113,7 @@ private void notifyMessageReceived() {
114113
this.notifyMessagesReceived(appUriMessages);
115114
}
116115

117-
private CharSequence getPeerName() {
116+
public CharSequence getPeerName() {
118117
return this.peerName;
119118
}
120119

src/net/sharksystem/asap/apps/mock/ASAPSimplePeer.java renamed to src/net/sharksystem/asap/apps/mock/ASAPSimplePeerFS.java

+27-17
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
package net.sharksystem.asap.apps.mock;
22

33
import net.sharksystem.asap.*;
4-
import net.sharksystem.asap.apps.ASAPPeerServices;
4+
import net.sharksystem.asap.apps.ASAPMessageReceivedListener;
5+
import net.sharksystem.asap.apps.ASAPSimplePeer;
6+
import net.sharksystem.asap.listenermanager.ASAPMessageReceivedListenerManager;
57
import net.sharksystem.asap.util.Helper;
68

79
import java.io.File;
810
import java.io.IOException;
911
import java.net.ServerSocket;
1012
import java.net.Socket;
13+
import java.util.Set;
1114

12-
public class ASAPSimplePeer extends ASAPBasicAbstractPeer implements ASAPPeerServices, ASAPChunkReceivedListener {
15+
public class ASAPSimplePeerFS extends ASAPBasicAbstractPeer implements ASAPSimplePeer,
16+
ASAPChunkReceivedListener, ASAPOnlinePeersChangedListener {
1317
private final ASAPPeer peer;
1418
private final String folderName;
1519
private ServerSocket serverSocket = null;
1620
private Socket socket = null;
1721

18-
public ASAPSimplePeer(CharSequence peerName) throws IOException, ASAPException {
22+
public ASAPSimplePeerFS(CharSequence peerName) throws IOException, ASAPException {
1923
super(peerName);
2024
this.folderName = "./peers/" + peerName;
21-
File asapFolder = new File(folderName);
22-
if(!asapFolder.exists()) {
23-
asapFolder.mkdirs();
24-
}
2525
this.peer = ASAPPeerFS.createASAPPeer(peerName, folderName, this);
26+
this.peer.addOnlinePeersChangedListener(this);
2627
}
2728

2829
@Override
@@ -37,21 +38,20 @@ public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] messa
3738
}
3839
}
3940

40-
41-
public void startEncounter(int port, ASAPSimplePeer otherPeer) throws IOException {
41+
public void startEncounter(int port, ASAPSimplePeerFS otherPeer) throws IOException {
4242
this.serverSocket = new ServerSocket(port);
4343

4444
new Thread(new Runnable() {
4545
@Override
4646
public void run() {
4747
try {
48-
ASAPSimplePeer.this.socket = ASAPSimplePeer.this.serverSocket.accept();
48+
ASAPSimplePeerFS.this.socket = ASAPSimplePeerFS.this.serverSocket.accept();
4949
} catch (IOException e) {
50-
ASAPSimplePeer.this.log("fatal while waiting for client to connect: "
50+
ASAPSimplePeerFS.this.log("fatal while waiting for client to connect: "
5151
+ e.getLocalizedMessage());
5252
}
5353

54-
ASAPSimplePeer.this.startSession();
54+
ASAPSimplePeerFS.this.startSession();
5555
}
5656
}).start();
5757

@@ -69,7 +69,7 @@ private void connect(int port) throws IOException {
6969
this.startSession();
7070
}
7171

72-
public void stopEncounter(ASAPSimplePeer otherPeer) throws IOException {
72+
public void stopEncounter(ASAPSimplePeerFS otherPeer) throws IOException {
7373
this.socket.close();
7474
}
7575

@@ -78,16 +78,21 @@ private void startSession() {
7878
@Override
7979
public void run() {
8080
try {
81-
ASAPSimplePeer.this.peer.handleConnection(
82-
ASAPSimplePeer.this.socket.getInputStream(),
83-
ASAPSimplePeer.this.socket.getOutputStream());
81+
ASAPSimplePeerFS.this.peer.handleConnection(
82+
ASAPSimplePeerFS.this.socket.getInputStream(),
83+
ASAPSimplePeerFS.this.socket.getOutputStream());
8484
} catch (IOException | ASAPException e) {
85-
ASAPSimplePeer.this.log("fatal while connecting: " + e.getLocalizedMessage());
85+
ASAPSimplePeerFS.this.log("fatal while connecting: " + e.getLocalizedMessage());
8686
}
8787
}
8888
}).start();
8989
}
9090

91+
@Override
92+
public CharSequence getPeerName() {
93+
return this.peer.getOwner();
94+
}
95+
9196
@Override
9297
public void chunkReceived(String format, String sender, String uri, int era) throws IOException {
9398
StringBuilder sb = new StringBuilder();
@@ -101,4 +106,9 @@ public void chunkReceived(String format, String sender, String uri, int era) thr
101106

102107
this.asapMessageReceivedListenerManager.notifyReceived(format, receivedMessages, true);
103108
}
109+
110+
@Override
111+
public void onlinePeersChanged(ASAPPeer engine) {
112+
this.environmentChangesListenerManager.notifyListeners(engine.getOnlinePeers());
113+
}
104114
}

src/net/sharksystem/asap/listenermanager/ASAPEnvironmentChangesListenerManager.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.sharksystem.asap.apps.ASAPEnvironmentChangesListenerManagement;
55

66
import java.util.List;
7+
import java.util.Set;
78

89
public class ASAPEnvironmentChangesListenerManager
910
extends GenericListenerImplementation<ASAPEnvironmentChangesListener>
@@ -19,9 +20,11 @@ public void removeASAPEnvironmentChangesListener(ASAPEnvironmentChangesListener
1920
this.removeListener(changesListener);
2021
}
2122

22-
public void notifyListeners(List<CharSequence> peerList) {
23+
public void notifyListeners(Set<CharSequence> peerList) {
24+
if(peerList == null || peerList.isEmpty()) return;
25+
if(this.listenerList == null || this.listenerList.isEmpty()) return;
2326
for(ASAPEnvironmentChangesListener listener : this.listenerList) {
24-
listener.onlinePeersChanged(peerList);
27+
if(listener != null) listener.onlinePeersChanged(peerList);
2528
}
2629
}
2730
}

test/net/sharksystem/asap/mock/ASAPMessageReceivedListenerExample.java renamed to test/net/sharksystem/asap/mockAndTemplates/ASAPMessageReceivedListenerExample.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package net.sharksystem.asap.mock;
1+
package net.sharksystem.asap.mockAndTemplates;
22

33
import net.sharksystem.asap.ASAPMessages;
44
import net.sharksystem.asap.apps.ASAPMessageReceivedListener;

test/net/sharksystem/asap/mock/ASAPMockUsage.java renamed to test/net/sharksystem/asap/mockAndTemplates/ASAPMockUsage.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package net.sharksystem.asap.mock;
1+
package net.sharksystem.asap.mockAndTemplates;
22

33
import net.sharksystem.asap.ASAPException;
4-
import net.sharksystem.asap.apps.ASAPPeerServices;
4+
import net.sharksystem.asap.apps.ASAPSimplePeer;
55
import net.sharksystem.asap.apps.mock.ASAPPeerMock;
66
import org.junit.Test;
77

@@ -66,7 +66,7 @@ public void mockUsageExample2() throws IOException, ASAPException, InterruptedEx
6666
ASAPPeerMock alicePeerMock = new ASAPPeerMock(TestUtils.ALICE);
6767

6868
// use this interface - it's important - same interface can be used for real app in java and android
69-
ASAPPeerServices alicePeer = alicePeerMock;
69+
ASAPSimplePeer alicePeer = alicePeerMock;
7070

7171
// setup message received listener - this should be replaced with your code - you implement a listener.
7272
ASAPMessageReceivedListenerExample aliceMessageReceivedListenerExample =
@@ -83,7 +83,7 @@ public void mockUsageExample2() throws IOException, ASAPException, InterruptedEx
8383
ASAPPeerMock bobPeerMock = new ASAPPeerMock(TestUtils.BOB);
8484

8585
// use this interface - it's important - same interface can be used for real app in java and android
86-
ASAPPeerServices bobPeer = bobPeerMock;
86+
ASAPSimplePeer bobPeer = bobPeerMock;
8787

8888
// this should be replaced with your code - you must implement a listener.
8989
ASAPMessageReceivedListenerExample asapMessageReceivedListenerExample =

0 commit comments

Comments
 (0)