Skip to content

Commit 7d145fd

Browse files
committed
online sending bug identified: second messages are not accepted on receiver side because: chunk already exists. transient message sending introduced.
1 parent 299ebb8 commit 7d145fd

File tree

8 files changed

+70
-18
lines changed

8 files changed

+70
-18
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.Random;
44

55
public class ASAP {
6+
public static final int TRANSIENT_ERA = -1;
67
public static final int INITIAL_ERA = 0;
78
public static final int MIN_ERA = INITIAL_ERA;
89
public static final int MAX_ERA = Integer.MAX_VALUE;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ public interface ASAPMessageSender {
1313
void sendASAPMessage(CharSequence appName, CharSequence uri,
1414
byte[] message) throws ASAPException;
1515

16-
void sendOnlineASAPMessage(CharSequence appName, CharSequence uri, byte[] message)
16+
void sendTransientASAPMessage(CharSequence appName, CharSequence uri, byte[] message)
1717
throws ASAPException, IOException;
1818
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] messa
9090
engine.add(uri, message);
9191
// send online
9292
try {
93-
this.sendOnlineASAPMessage(appName, uri, message);
93+
this.sendTransientASAPMessage(appName, uri, message);
9494
}
9595
catch(ASAPException e) {
9696
// no online peers - that's ok
@@ -102,12 +102,12 @@ public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] messa
102102
}
103103
}
104104

105-
public void sendOnlineASAPMessage(CharSequence appName, CharSequence uri, byte[] message)
105+
public void sendTransientASAPMessage(CharSequence appName, CharSequence uri, byte[] message)
106106
throws ASAPException, IOException {
107107

108108
Log.writeLog(this, this.getInternalPeer().getOwner().toString(),
109-
"try sending message over existing connections ");
110-
this.getInternalPeer().sendOnlineASAPAssimilateMessage(appName, uri, message);
109+
"try sending transient message over existing connections ");
110+
this.getInternalPeer().sendTransientASAPAssimilateMessage(appName, uri, message);
111111

112112
}
113113

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,7 @@ public void handleASAPInterest(ASAP_Interest_PDU_1_0 asapInterest, ASAP_1_0 prot
650650
Peer told us last encounter era - from senders perspective of course.
651651
There are several options, sketch:
652652
653-
<------ our storage ------->
653+
<------ our storage ------->
654654
............ [eraFirst] +++++++++++++++ [eraLast] .........
655655
(a) (b) (c) (d)
656656
a) We send everything we have

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.sharksystem.asap.crypto.ASAPKeyStore;
88
import net.sharksystem.utils.ExtraData;
99

10-
import java.io.FileNotFoundException;
1110
import java.io.IOException;
1211
import java.io.OutputStream;
1312
import java.util.Set;
@@ -102,10 +101,10 @@ void setAsapRoutingAllowed(CharSequence applicationFormat, boolean allowed)
102101
* @throws IOException
103102
* @throws ASAPException
104103
*/
105-
void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, Set<CharSequence> recipients,
106-
byte[] messageAsBytes) throws IOException, ASAPException;
104+
void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, Set<CharSequence> recipients,
105+
byte[] messageAsBytes) throws IOException, ASAPException;
107106

108-
void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, byte[] messageAsBytes)
107+
void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence urlTarget, byte[] messageAsBytes)
109108
throws IOException, ASAPException;
110109

111110
void setASAPBasicKeyStorage(ASAPKeyStore ASAPKeyStore);

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import net.sharksystem.SharkException;
44
import net.sharksystem.asap.EncounterConnectionType;
55
import net.sharksystem.asap.crypto.*;
6-
import net.sharksystem.asap.utils.ASAPSerialization;
76
import net.sharksystem.utils.ExtraData;
87
import net.sharksystem.utils.ExtraDataFS;
98
import net.sharksystem.utils.Utils;
@@ -605,35 +604,37 @@ public void deactivateOnlineMessages() {
605604
}
606605
}
607606

608-
public void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence urlTarget,
609-
byte[] messageAsBytes) throws IOException, ASAPException {
607+
public void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence urlTarget,
608+
byte[] messageAsBytes) throws IOException, ASAPException {
610609

611-
this.sendOnlineASAPAssimilateMessage(format, urlTarget, null, messageAsBytes);
610+
this.sendTransientASAPAssimilateMessage(format, urlTarget, null, messageAsBytes);
612611
}
613612

614613
@Override
615614
public void setASAPBasicKeyStorage(ASAPKeyStore ASAPKeyStore) {
616615
this.ASAPKeyStore = ASAPKeyStore;
617616
}
618617

619-
public void sendOnlineASAPAssimilateMessage(CharSequence format, CharSequence urlTarget,
620-
Set<CharSequence> recipients, byte[] messageAsBytes)
618+
public void sendTransientASAPAssimilateMessage(CharSequence format, CharSequence uri,
619+
Set<CharSequence> receiver, byte[] messageAsBytes)
621620
throws IOException, ASAPException {
622621

623-
int era = ASAP.INITIAL_ERA; // init
622+
// int era = ASAP.TRANSIENT_ERA; // init
624623

624+
/*
625625
try {
626626
era = this.getASAPEngine(format).getEra();
627627
} catch (ASAPException e) {
628628
// no engine.. ok
629629
System.out.println(this.getLogStart() + "send message with format but no engine exists (yet): " + format);
630630
}
631+
*/
631632

632633
// setup online message sender thread
633634
Log.writeLog(this, "setup online message sender object");
634635
ASAPOnlineMessageSender asapOnlineMessageSender = new ASAPOnlineMessageSenderEngineSide(this);
635636
Log.writeLog(this, "call send asap assimilate message with online message sender");
636-
asapOnlineMessageSender.sendASAPAssimilateMessage(format, urlTarget, recipients, messageAsBytes, era);
637+
asapOnlineMessageSender.sendASAPAssimilateMessage(format, uri, receiver, messageAsBytes, ASAP.TRANSIENT_ERA);
637638
}
638639

639640
private Collection<ASAPEngine> getEngines() {

src/test/java/net/sharksystem/TestConstants.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,9 @@ public interface TestConstants {
1212
String DAVID_NAME = "David";
1313

1414
String URI = "shark://testUri";
15+
byte[] MESSAGE_1 = "1st message".getBytes();
16+
byte[] MESSAGE_2 = "2nd message".getBytes();
17+
18+
byte[] MESSAGE_ALICE_TO_BOB_1 = "Alice -> Bob (#1)".getBytes();
19+
byte[] MESSAGE_BOB_TO_ALICE_1 = "Bob -> Alice (#1)".getBytes();
1520
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package net.sharksystem.asap.peer;
2+
3+
import net.sharksystem.CountsReceivedMessagesListener;
4+
import net.sharksystem.TestConstants;
5+
import net.sharksystem.asap.ASAPException;
6+
import net.sharksystem.asap.apps.testsupport.ASAPTestPeerFS;
7+
import org.junit.Assert;
8+
9+
import java.io.IOException;
10+
import java.util.ArrayList;
11+
import java.util.Collection;
12+
13+
public class TransientMessages {
14+
public static final String WORKING_SUB_DIRECTORY = TestConstants.ROOT_DIRECTORY + "transientMessages/";
15+
public static final String APPNAME = "asap/transient";
16+
17+
public void exchangeTransientMessage() throws IOException, ASAPException, InterruptedException {
18+
Collection<CharSequence> formats = new ArrayList<>();
19+
formats.add(APPNAME);
20+
21+
///////////////// ALICE //////////////////////////////////////////////////////////////
22+
// setup mocked peer / asap application and activity in android
23+
ASAPTestPeerFS aliceSimplePeer = new ASAPTestPeerFS(TestConstants.ALICE_ID, formats);
24+
CountsReceivedMessagesListener aliceListener = new CountsReceivedMessagesListener(TestConstants.ALICE_ID);
25+
aliceSimplePeer.addASAPMessageReceivedListener(APPNAME, aliceListener);
26+
27+
ASAPTestPeerFS bobSimplePeer = new ASAPTestPeerFS(TestConstants.BOB_ID, formats);
28+
CountsReceivedMessagesListener bobListener = new CountsReceivedMessagesListener(TestConstants.ALICE_ID);
29+
bobSimplePeer.addASAPMessageReceivedListener(APPNAME, bobListener);
30+
31+
aliceSimplePeer.sendTransientASAPMessage(APPNAME, TestConstants.URI, TestConstants.MESSAGE_ALICE_TO_BOB_1);
32+
33+
bobSimplePeer.sendTransientASAPMessage(APPNAME, TestConstants.URI, TestConstants.MESSAGE_BOB_TO_ALICE_1);
34+
35+
aliceSimplePeer.startEncounter(7777, bobSimplePeer);
36+
// give your app a moment to process
37+
Thread.sleep(100);
38+
// stop encounter
39+
bobSimplePeer.stopEncounter(aliceSimplePeer);
40+
// give your app a moment to process
41+
Thread.sleep(100);
42+
43+
Assert.assertEquals(1, aliceListener.numberOfMessages);
44+
Assert.assertEquals(1, bobListener.numberOfMessages);
45+
}
46+
}

0 commit comments

Comments
 (0)