Skip to content

Commit 6680eb9

Browse files
committed
transient message exchange works
1 parent 3e0e0a0 commit 6680eb9

21 files changed

+404
-177
lines changed

src/main/java/net/sharksystem/asap/ASAPChunk.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package net.sharksystem.asap;
22

3+
import com.sun.xml.internal.ws.wsdl.writer.document.Message;
4+
import net.sharksystem.asap.engine.MessagesContainer;
5+
36
import java.io.IOException;
47
import java.util.Iterator;
58
import java.util.List;
@@ -12,7 +15,7 @@
1215
*
1316
* @author thsc
1417
*/
15-
public interface ASAPChunk {
18+
public interface ASAPChunk extends MessagesContainer {
1619
/**
1720
*
1821
* @return number of message in that chunk
@@ -87,5 +90,4 @@ public interface ASAPChunk {
8790

8891
List<ASAPHop> getASAPHopList();
8992

90-
void setASAPHopList(List<ASAPHop> asapHopList) throws IOException;
9193
}

src/main/java/net/sharksystem/asap/ASAPMessages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.io.IOException;
77
import java.util.Iterator;
8+
import java.util.List;
89

910
/**
1011
* Chunks are identified by an URI and ordered by era numbers.

src/main/java/net/sharksystem/asap/ASAPPeerFS.java

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,29 @@
88
import java.util.Collection;
99
import java.util.List;
1010

11-
public class ASAPPeerFS extends ASAPInternalPeerWrapper implements ASAPPeerService, ASAPChunkReceivedListener {
11+
public class ASAPPeerFS extends ASAPInternalPeerWrapper implements ASAPPeerService, ASAPChunkAssimilatedListener {
1212
public static final CharSequence DEFAULT_ROOT_FOLDER_NAME = ASAPEngineFS.DEFAULT_ROOT_FOLDER_NAME;
1313

1414
private final String rootFolder;
15-
private ASAPChunkReceivedListener chunkReceivedListener;
15+
private ASAPChunkAssimilatedListener chunkReceivedListener;
1616

1717
public ASAPPeerFS(CharSequence owner, CharSequence rootFolder,
1818
Collection<CharSequence> supportFormats) throws IOException, ASAPException {
1919
super.setInternalPeer(ASAPInternalPeerFS.createASAPPeer(owner, rootFolder, supportFormats, this));
2020
this.rootFolder = rootFolder.toString();
2121
}
2222

23-
public void overwriteChuckReceivedListener(ASAPChunkReceivedListener listener) {
23+
public void overwriteChuckReceivedListener(ASAPChunkAssimilatedListener listener) {
24+
Log.writeLogErr(this, "do not use chunk received listener - message received listener is better");
2425
this.chunkReceivedListener = listener;
2526
}
2627

2728
private ASAPEncounterManager ASAPEncounterManager = null;
2829

29-
@Override
30-
public void chunkReceived(String format, String senderE2E, String uri, int era,
31-
List<ASAPHop> asapHopList) throws IOException {
3230

31+
private void chunkAssimilated(ASAPMessages receivedMessages, CharSequence format,
32+
CharSequence senderE2E, CharSequence uri, int era,
33+
List<ASAPHop> asapHopList, boolean callListener) {
3334
StringBuilder sb = new StringBuilder();
3435
String hopListString = "hoplist == null";
3536
if(asapHopList != null) {
@@ -45,7 +46,7 @@ public void chunkReceived(String format, String senderE2E, String uri, int era,
4546
}
4647

4748
sb = new StringBuilder();
48-
sb.append("\n++++++++++++++++++++++++++++++++++++++++++ chunkReceived +++++++++++++++++++++++++++++++++++++++++++\n");
49+
sb.append("\n+++++++++++++++++++++++++++++++++++++++ chunkAssimilated +++++++++++++++++++++++++++++++++++++++++\n");
4950
sb.append("E2E|P2P: " + senderE2E + " | " + asapHopList.get(asapHopList.size()-1).sender() + " | uri: " + uri);
5051
sb.append(" | era: ");
5152
if(era == ASAP.TRANSIENT_ERA) sb.append("transient");
@@ -56,28 +57,45 @@ public void chunkReceived(String format, String senderE2E, String uri, int era,
5657
sb.append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
5758
this.log(sb.toString());
5859

59-
if(this.chunkReceivedListener != null) {
60-
this.log("chunk received listener set - call this one");
61-
this.chunkReceivedListener.chunkReceived(format, senderE2E, uri, era, asapHopList);
62-
} else {
60+
if(callListener) {
61+
// call listener
6362
this.log("notify listener");
64-
if(this.asapMessageReceivedListenerManager.getNumberListener() > 0) {
65-
this.log("extract messages from chunk and notify listener");
66-
ASAPMessages receivedMessages =
67-
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolder, era);
68-
63+
if (this.asapMessageReceivedListenerManager.getNumberListener() > 0) {
6964
this.asapMessageReceivedListenerManager.notifyReceived(
7065
format, receivedMessages, true,
71-
senderE2E, asapHopList);
66+
senderE2E.toString(), asapHopList);
7267
}
7368

74-
if(this.asapChannelContentChangedListenerManager.getNumberListener() > 0) {
69+
if (this.asapChannelContentChangedListenerManager.getNumberListener() > 0) {
7570
this.log("notify channel content changed listener");
7671
this.asapChannelContentChangedListenerManager.notifyChanged(format, uri, era, true);
7772
}
7873
}
7974
}
8075

76+
@Override
77+
public void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException {
78+
this.chunkAssimilated(transientMessages,
79+
transientMessages.getFormat(), sender, transientMessages.getURI(),
80+
ASAP.TRANSIENT_ERA, asapHop, true);
81+
}
82+
83+
@Override
84+
public void chunkStored(String format, String senderE2E, String uri, int era,
85+
List<ASAPHop> asapHopList) throws IOException {
86+
if(this.chunkReceivedListener != null) {
87+
this.log("chunk received listener set - call this one");
88+
this.chunkReceivedListener.chunkStored(format, senderE2E, uri, era, asapHopList);
89+
this.chunkAssimilated(null, format, senderE2E, uri, era, asapHopList, false);
90+
} else {
91+
this.log("extract messages from chunk and notify listener");
92+
ASAPMessages receivedMessages =
93+
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolder, era);
94+
95+
this.chunkAssimilated(receivedMessages, format, senderE2E, uri, era, asapHopList, true);
96+
}
97+
}
98+
8199
/// TODO this method makes absolutely no sense in that class.
82100
@Override
83101
public int getNumberListener() {

src/main/java/net/sharksystem/asap/ASAPPeerService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.sharksystem.asap;
22

3-
import net.sharksystem.asap.engine.ASAPChunkReceivedListener;
3+
import net.sharksystem.asap.engine.ASAPChunkAssimilatedListener;
44

55
public interface ASAPPeerService extends ASAPPeer, ASAPConnectionHandler {
66
// long DEFAULT_MAX_PROCESSING_TIME = 30000; // 30 seconds
@@ -12,5 +12,5 @@ public interface ASAPPeerService extends ASAPPeer, ASAPConnectionHandler {
1212
*
1313
* @param listener this listener is called instead - no further chunk processing is made by this object.
1414
*/
15-
void overwriteChuckReceivedListener(ASAPChunkReceivedListener listener);
15+
void overwriteChuckReceivedListener(ASAPChunkAssimilatedListener listener);
1616
}

src/main/java/net/sharksystem/asap/apps/gossip/GossipUI.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import java.util.List;
1717

1818
// java -cp ASAP_Engine_x.y.z.jar net.sharksystem.asap.apps.gossip.GossipUI Alice 7070 7071
19-
public class GossipUI implements ASAPChunkReceivedListener {
19+
public class GossipUI implements ASAPChunkAssimilatedListener {
2020
private List<Integer> remotePortNumber;
2121
private String peerName;
2222
private int portnumber;
@@ -97,13 +97,13 @@ private void go() {
9797
}
9898

9999
@Override
100-
public void chunkReceived(String format, String senderE2E, String uri, int era,
101-
List<ASAPHop> asapHop) throws IOException {
100+
public void chunkStored(String format, String senderE2E, String uri, int era,
101+
List<ASAPHop> asapHop) throws IOException {
102102

103103
ASAPMessages receivedMessages =
104104
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolderName, era);
105105

106-
this.println("chunk received: " + format + " | " + senderE2E + " | " + uri);
106+
this.println("messages received: " + format + " | " + senderE2E + " | " + uri);
107107

108108
Iterator<byte[]> messages = receivedMessages.getMessages();
109109
while(messages.hasNext()) {
@@ -113,6 +113,21 @@ public void chunkReceived(String format, String senderE2E, String uri, int era,
113113
};
114114
}
115115

116+
private void printReceivedMessages(ASAPMessages asapMessages, List<ASAPHop> asapHop) throws IOException {
117+
this.println("messages received: " + asapMessages.getFormat() + " | " + asapMessages.getURI());
118+
119+
Iterator<byte[]> messages = asapMessages.getMessages();
120+
while(messages.hasNext()) {
121+
byte[] msgBytes = messages.next();
122+
String receivedMessage = Helper.bytes2str(msgBytes);
123+
this.println("message received: " + receivedMessage);
124+
};
125+
}
126+
127+
public void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException {
128+
this.printReceivedMessages(transientMessages, asapHop);
129+
}
130+
116131
private class ASAPConnectionCreator extends Thread implements TCPStreamCreatedListener {
117132
private TCPStream tcpStream;
118133

src/main/java/net/sharksystem/asap/cmdline/ExampleASAPChunkReceivedListener.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package net.sharksystem.asap.cmdline;
22

33
import net.sharksystem.asap.ASAPHop;
4-
import net.sharksystem.asap.engine.ASAPChunkReceivedListener;
4+
import net.sharksystem.asap.ASAPMessages;
5+
import net.sharksystem.asap.engine.ASAPChunkAssimilatedListener;
56

67
import java.io.IOException;
78
import java.util.ArrayList;
@@ -10,7 +11,7 @@
1011
////////////////////////////////////////////////////////////////////////////////////////////////////////////
1112
// ASAP API: callbacks ASAPChunkReceived //
1213
////////////////////////////////////////////////////////////////////////////////////////////////////////////
13-
public class ExampleASAPChunkReceivedListener implements ASAPChunkReceivedListener {
14+
public class ExampleASAPChunkReceivedListener implements ASAPChunkAssimilatedListener {
1415
private final String rootFolder;
1516
private List<ASAPChunkReceivedParameters> receivedList = new ArrayList<>();
1617

@@ -19,12 +20,17 @@ public ExampleASAPChunkReceivedListener(String rootFolder) {
1920
}
2021

2122
@Override
22-
public void chunkReceived(String format, String senderE2E, String uri, int era,
23-
List<ASAPHop> asapHop) throws IOException {
23+
public void chunkStored(String format, String senderE2E, String uri, int era,
24+
List<ASAPHop> asapHop) throws IOException {
2425

2526
this.receivedList.add(new ASAPChunkReceivedParameters(format, senderE2E, uri, era));
2627
}
2728

29+
@Override
30+
public void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException {
31+
System.out.println("transient message received - TODO?");
32+
}
33+
2834
public List<ASAPChunkReceivedParameters> getReceivedList() { return this.receivedList; }
2935

3036
public class ASAPChunkReceivedParameters {

src/main/java/net/sharksystem/asap/engine/ASAPChunkReceivedListener.java renamed to src/main/java/net/sharksystem/asap/engine/ASAPChunkAssimilatedListener.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.sharksystem.asap.engine;
22

33
import net.sharksystem.asap.ASAPHop;
4+
import net.sharksystem.asap.ASAPMessages;
45

56
import java.io.IOException;
67
import java.util.List;
@@ -9,7 +10,7 @@
910
*
1011
* @author thsc
1112
*/
12-
public interface ASAPChunkReceivedListener {
13+
public interface ASAPChunkAssimilatedListener {
1314
/**
1415
* Announce incoming ASAP messages. Note the important difference of both senders. ASAP is a routing protocol.
1516
* An ASAP message has got an original sender (the end-to-end (E2E) sender). Other peers can route this message.
@@ -27,6 +28,8 @@ public interface ASAPChunkReceivedListener {
2728
* @see ASAPHop
2829
*
2930
*/
30-
void chunkReceived(String format, String senderE2E, String uri, int era, // E2E part
31-
List<ASAPHop> asapHop) throws IOException;
31+
void chunkStored(String format, String senderE2E, String uri, int era, // E2E part
32+
List<ASAPHop> asapHop) throws IOException;
33+
34+
void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException;
3235
}

0 commit comments

Comments
 (0)