Skip to content

Commit 0d69691

Browse files
committed
still transient and online message exchange is not yet stable with Android
1 parent b2eb3dc commit 0d69691

21 files changed

+445
-123
lines changed

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.sharksystem.utils.Log;
66

77
import java.io.IOException;
8+
import java.util.ArrayList;
89
import java.util.Collection;
910
import java.util.List;
1011

@@ -54,7 +55,7 @@ private void chunkAssimilated(ASAPMessages receivedMessages, CharSequence format
5455
sb.append(" | appFormat: " + format);
5556
sb.append("\n");
5657
sb.append(hopListString);
57-
sb.append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
58+
sb.append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
5859
this.log(sb.toString());
5960

6061
if(callListener) {
@@ -74,10 +75,14 @@ private void chunkAssimilated(ASAPMessages receivedMessages, CharSequence format
7475
}
7576

7677
@Override
77-
public void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException {
78+
public void transientMessagesReceived(ASAPMessages transientMessages, ASAPHop asapHop) throws IOException {
79+
// produce hop list object
80+
81+
List<ASAPHop> asapHopList = new ArrayList<>();
82+
asapHopList.add(asapHop);
7883
this.chunkAssimilated(transientMessages,
79-
transientMessages.getFormat(), sender, transientMessages.getURI(),
80-
ASAP.TRANSIENT_ERA, asapHop, true);
84+
transientMessages.getFormat(), asapHop.sender(), transientMessages.getURI(),
85+
ASAP.TRANSIENT_ERA, asapHopList, true);
8186
}
8287

8388
@Override
@@ -110,14 +115,16 @@ public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] messa
110115
ASAPEngine engine = this.getInternalPeer().createEngineByFormat(appName);
111116
engine.activateOnlineMessages(this.getInternalPeer());
112117
engine.add(uri, message);
113-
// send online
118+
// send online (already done by activating online messages and adding message with engine
119+
/*
114120
try {
115-
this.sendTransientASAPMessage(appName, uri, message);
121+
this.getInternalPeer().sendOnlineASAPAssimilateMessage(appName, uri, engine.getEra(), message);
116122
}
117123
catch(ASAPException e) {
118124
// no online peers - that's ok
119125
Log.writeLog(this, this.toString(), "could not send message online - that's ok.");
120126
}
127+
*/
121128
} catch (IOException e) {
122129
this.log(e.getLocalizedMessage());
123130
throw new ASAPException("problems getting asap engine", e);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ private void printReceivedMessages(ASAPMessages asapMessages, List<ASAPHop> asap
124124
};
125125
}
126126

127-
public void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException {
128-
this.printReceivedMessages(transientMessages, asapHop);
127+
public void transientMessagesReceived(ASAPMessages transientMessages, ASAPHop asapHop) throws IOException {
128+
this.printReceivedMessages(transientMessages, null);
129129
}
130130

131131
private class ASAPConnectionCreator extends Thread implements TCPStreamCreatedListener {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void chunkStored(String format, String senderE2E, String uri, int era,
2727
}
2828

2929
@Override
30-
public void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException {
30+
public void transientMessagesReceived(ASAPMessages transientMessages, ASAPHop asapHop) throws IOException {
3131
System.out.println("transient message received - TODO?");
3232
}
3333

src/main/java/net/sharksystem/asap/engine/ASAPChunkAssimilatedListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ public interface ASAPChunkAssimilatedListener {
3131
void chunkStored(String format, String senderE2E, String uri, int era, // E2E part
3232
List<ASAPHop> asapHop) throws IOException;
3333

34-
void transientChunkReceived(ASAPMessages transientMessages, CharSequence sender, List<ASAPHop> asapHop) throws IOException;
34+
void transientMessagesReceived(ASAPMessages transientMessages, ASAPHop asapHop) throws IOException;
3535
}

src/main/java/net/sharksystem/asap/engine/ASAPChunkStorageFS.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,16 @@ public ASAPMessages getASAPMessages(String uri) throws ASAPException, IOExceptio
163163
}
164164
return this.getASAPMessages(uri, this.era);
165165
}
166+
167+
public String toString() {
168+
StringBuilder sb = new StringBuilder();
169+
sb.append(this.getClass().getSimpleName());
170+
sb.append(": ");
171+
sb.append(this.rootDirectory);
172+
sb.append(" | ");
173+
sb.append(this.format);
174+
sb.append(" | ");
175+
sb.append(this.era);
176+
return sb.toString();
177+
}
166178
}

src/main/java/net/sharksystem/asap/engine/ASAPEngine.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -412,12 +412,17 @@ public void handleASAPAssimilate(ASAP_AssimilationPDU_1_0 asapAssimilationPDU, A
412412
MessagesContainer messagesContainer = null;
413413
ASAPInMemoTransientMessages transientMessages = null;
414414

415+
ASAPHop lastHop = new ASAPHopImpl(encounteredPeer, asapAssimilationPDU.verified(),
416+
asapAssimilationPDU.encrypted(), connectionType);
417+
415418
try {
416419
if(eraSender != ASAP.TRANSIENT_ERA) {
417420
incomingChunk = this.getIncomingChunk(encounteredPeer, asapAssimilationPDU);
418421
messagesContainer = incomingChunk;
419422
} else {
420-
transientMessages = new ASAPInMemoTransientMessages(asapAssimilationPDU);
423+
transientMessages =
424+
new ASAPInMemoTransientMessages(asapAssimilationPDU, lastHop);
425+
421426
messagesContainer = transientMessages;
422427
}
423428
}
@@ -439,8 +444,6 @@ public void handleASAPAssimilate(ASAP_AssimilationPDU_1_0 asapAssimilationPDU, A
439444
Log.writeLog(this, this.toString(), "got hop list: " + asapHopList);
440445

441446
// add this new hop
442-
ASAPHop lastHop = new ASAPHopImpl(encounteredPeer, asapAssimilationPDU.verified(),
443-
asapAssimilationPDU.encrypted(), connectionType);
444447
asapHopList.add(lastHop);
445448

446449
// add hop list to newly create message container
@@ -451,16 +454,17 @@ public void handleASAPAssimilate(ASAP_AssimilationPDU_1_0 asapAssimilationPDU, A
451454
// read all messages
452455
//<<<<<<<<<<<<<<<<<<debug
453456
b = new StringBuilder();
454-
b.append("call ");
455-
b.append(listener.getClass().getSimpleName());
456-
b.append(".chunkAssimilated(senderE2E: ");
457+
b.append("assimilated: senderE2E: ");
457458
b.append(senderE2E);
458459
b.append(", uri: ");
459460
b.append(uri);
460461
b.append(", eraSender: ");
461462
if(eraSender != ASAP.TRANSIENT_ERA) b.append(eraSender);
462463
else b.append("transient");
463-
b.append(")");
464+
if(listener != null) {
465+
b.append(" | listener: ");
466+
b.append(listener.getClass().getSimpleName());
467+
}
464468
Log.writeLog(this, this.toString(), b.toString());
465469
//>>>>>>>>>>>>>>>>>>>debug
466470

@@ -474,11 +478,11 @@ public void handleASAPAssimilate(ASAP_AssimilationPDU_1_0 asapAssimilationPDU, A
474478
asapHopList
475479
);
476480
} else {
477-
listener.transientChunkReceived(transientMessages, encounteredPeer, asapHopList);
481+
listener.transientMessagesReceived(transientMessages, lastHop);
478482
}
479483

480484
} else {
481-
Log.writeLog(this, this.toString(), "no chunk received listener found");
485+
Log.writeLog(this, this.toString(), "no chunk assimilated listener found");
482486
}
483487
}
484488

@@ -490,7 +494,8 @@ private ASAPInternalChunk getIncomingChunk(String encounteredPeer, ASAP_Assimila
490494
String senderE2E = asapAssimilationPDU.getSender();
491495
ASAPInternalStorage incomingStorage = (ASAPInternalStorage) this.getIncomingStorage(senderE2E, true);
492496
ASAPChunkStorage incomingChunkStorage = incomingStorage.getChunkStorage();
493-
Log.writeLog(this, this.toString(), "got incoming chunk storage for senderE2E: " + senderE2E);
497+
Log.writeLog(this, this.toString(), "got incoming chunk storage "
498+
+ incomingChunkStorage);
494499

495500
// get local target for data to come
496501
if (!incomingChunkStorage.existsChunk(uri, eraSender)) {
@@ -525,7 +530,7 @@ private ASAPInternalChunk getIncomingChunk(String encounteredPeer, ASAP_Assimila
525530
&& PeerIDHelper.sameID(encounteredPeer, senderE2E) // E2E sender == P2P sender
526531
) {
527532
Log.writeLog(this, this.toString(),
528-
"received chunk exists but sender is originator and current era: "
533+
"received chunk exists but sender is originator and current era - message will be added: "
529534
+ senderE2E + " | " + eraSender + " | " + uri);
530535

531536
// finish routing...
@@ -556,6 +561,7 @@ private void streamReceivedMessages2Container(MessagesContainer messagesContaine
556561
b.append(")");
557562
Log.writeLog(this, this.toString(), b.toString());
558563
//>>>>>>>>>>>>>>>>>>>debug
564+
559565
messagesContainer.addMessage(is, nextOffset - offset);
560566
//if(!changed) { changed = true; this.contentChanged();}
561567
offset = nextOffset;
@@ -576,7 +582,7 @@ private void streamReceivedMessages2Container(MessagesContainer messagesContaine
576582

577583
private boolean hasSufficientCrypto(ASAP_PDU_1_0 pdu) {
578584
if(this.getCryptoControl() == null) {
579-
Log.writeLog(this, this.toString(), "crypto control set allow anything");
585+
Log.writeLog(this, this.toString(), "crypto control set to allow anything");
580586
return true;
581587
}
582588

src/main/java/net/sharksystem/asap/engine/ASAPInMemoMessages.java

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

3+
import net.sharksystem.asap.ASAPHop;
34
import net.sharksystem.utils.Utils;
45
import net.sharksystem.asap.ASAPException;
56
import net.sharksystem.asap.ASAPMessages;

src/main/java/net/sharksystem/asap/engine/ASAPInMemoTransientMessages.java

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

3-
import net.sharksystem.asap.ASAPChunk;
4-
import net.sharksystem.asap.ASAPException;
5-
import net.sharksystem.asap.ASAPHop;
6-
import net.sharksystem.asap.ASAPMessages;
3+
import net.sharksystem.asap.*;
74
import net.sharksystem.asap.protocol.ASAP_AssimilationPDU_1_0;
85

96
import java.io.IOException;
@@ -12,26 +9,35 @@
129
import java.util.Iterator;
1310
import java.util.List;
1411

15-
class ASAPInMemoTransientMessages implements ASAPMessages, MessagesContainer {
12+
public class ASAPInMemoTransientMessages implements ASAPMessages, MessagesContainer {
1613
private final CharSequence format;
1714
private final CharSequence uri;
1815
private final CharSequence sender;
16+
private ASAPHop asapHop;
1917
private int size = -1;
20-
private List<ASAPHop> asapHopList;
2118
private List<byte[]> messageList = new ArrayList<>();
2219

23-
ASAPInMemoTransientMessages(ASAP_AssimilationPDU_1_0 pdu) {
20+
ASAPInMemoTransientMessages(ASAP_AssimilationPDU_1_0 pdu, ASAPHop asapHop) {
2421
this.format = pdu.getFormat();
2522
this.uri = pdu.getChannelUri();
2623
this.sender = pdu.getSender();
24+
this.asapHop = asapHop;
2725
}
2826

29-
private void checkStatus() throws ASAPException {
30-
if(this.size < 0) throw new ASAPException("transient message container not yet filled");
27+
public ASAPInMemoTransientMessages(CharSequence format, CharSequence uri, CharSequence sender, ASAPHop asapHop) {
28+
this.format = format;
29+
this.uri = uri;
30+
this.sender = sender;
31+
this.asapHop = asapHop;
32+
}
33+
34+
private void checkStatus() throws IOException {
35+
if(this.size < 0) throw new IOException("transient message container not yet filled");
3136
}
3237

3338
@Override
3439
public int size() throws IOException {
40+
this.checkStatus();
3541
return this.size;
3642
}
3743

@@ -47,10 +53,11 @@ public CharSequence getFormat() {
4753

4854
public CharSequence getSender() { return this.sender; }
4955

50-
5156
@Override
5257
public void setASAPHopList(List<ASAPHop> asapHopList) throws IOException {
53-
this.asapHopList = asapHopList;
58+
if(this.asapHop == null) {
59+
this.asapHop = asapHopList.get(asapHopList.size()-1);
60+
}
5461
}
5562

5663
@Override
@@ -90,6 +97,10 @@ public void addMessage(InputStream is, long length) throws IOException {
9097
byte[] message = new byte[(int)length];
9198
is.read(message);
9299

100+
this.addMessage(message);
101+
}
102+
103+
public void addMessage(byte[] message) throws IOException {
93104
this.messageList.add(message);
94105
}
95106
}

src/main/java/net/sharksystem/asap/engine/ASAPInternalPeer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence urlTar
107107
void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, byte[] messageAsBytes)
108108
throws IOException, ASAPException;
109109

110+
void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, int era,
111+
Set<CharSequence> recipients, byte[] messageAsBytes) throws IOException, ASAPException;
112+
113+
void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, int era, byte[] messageAsBytes)
114+
throws IOException, ASAPException;
115+
110116
void setASAPBasicKeyStorage(ASAPKeyStore ASAPKeyStore);
111117

112118
ASAPCommunicationSetting getASAPCommunicationControl();

src/main/java/net/sharksystem/asap/engine/ASAPInternalPeerFS.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,17 @@ public void deactivateOnlineMessages() {
604604
}
605605
}
606606

607-
public void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence urlTarget,
608-
byte[] messageAsBytes) throws IOException, ASAPException {
609-
610-
this.sendTransientASAPAssimilateMessage(format, urlTarget, null, messageAsBytes);
611-
}
612607

613608
@Override
614609
public void setASAPBasicKeyStorage(ASAPKeyStore ASAPKeyStore) {
615610
this.ASAPKeyStore = ASAPKeyStore;
616611
}
617612

613+
public void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence uri, byte[] messageAsBytes)
614+
throws IOException, ASAPException {
615+
this.sendTransientASAPAssimilateMessage(format, uri, null, messageAsBytes);
616+
}
617+
618618
public void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence uri,
619619
Set<CharSequence> receiver, byte[] messageAsBytes)
620620
throws IOException, ASAPException {
@@ -630,6 +630,17 @@ public void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence
630630
}
631631
*/
632632

633+
this.sendOnlineASAPAssimilateMessage(format, uri, ASAP.TRANSIENT_ERA, receiver, messageAsBytes);
634+
}
635+
636+
public void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence uri, int era, byte[] messageAsBytes)
637+
throws IOException, ASAPException {
638+
639+
this.sendOnlineASAPAssimilateMessage(format, uri, era, null, messageAsBytes);
640+
}
641+
642+
public void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence uri, int era,
643+
Set<CharSequence> receiver, byte[] messageAsBytes) throws IOException, ASAPException {
633644
// setup online message sender thread
634645
Log.writeLog(this, "setup online message sender object");
635646
ASAPOnlineMessageSender asapOnlineMessageSender = new ASAPOnlineMessageSenderEngineSide(this);

0 commit comments

Comments
 (0)