Skip to content

Commit 94f7de9

Browse files
committed
prepare extraction of stream/tcp/fs utils into a separate project
1 parent 6f749a5 commit 94f7de9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+259
-212
lines changed

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

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package net.sharksystem.asap;
22

3-
import net.sharksystem.asap.utils.Helper;
4-
53
import java.io.IOException;
64
import java.net.InetAddress;
75
import java.net.Socket;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.sharksystem.asap;
22

3-
import net.sharksystem.streams.StreamPair;
3+
import net.sharksystem.utils.streams.StreamPair;
44

55
import java.io.IOException;
66

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import net.sharksystem.asap.protocol.ASAPConnection;
55
import net.sharksystem.asap.protocol.ASAPConnectionListener;
66
import net.sharksystem.asap.utils.PeerIDHelper;
7-
import net.sharksystem.streams.StreamPair;
7+
import net.sharksystem.utils.streams.StreamPair;
88
import net.sharksystem.utils.Log;
99

1010
import java.io.*;

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package net.sharksystem.asap;
22

33
import net.sharksystem.asap.engine.*;
4-
import net.sharksystem.asap.utils.Helper;
4+
import net.sharksystem.asap.utils.ASAPLogHelper;
55
import net.sharksystem.utils.Log;
66

77
import java.io.IOException;
@@ -95,7 +95,7 @@ public void chunkStored(String format, String senderE2E, String uri, int era,
9595
} else {
9696
this.log("extract messages from chunk and notify listener");
9797
ASAPMessages receivedMessages =
98-
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolder, era);
98+
ASAPLogHelper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolder, era);
9999

100100
this.chunkAssimilated(receivedMessages, format, senderE2E, uri, era, asapHopList, true);
101101
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package net.sharksystem.asap;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collection;
5+
6+
public class ASAPUtils {
7+
/**
8+
*
9+
* @param searchSpace list of possible eras
10+
* @param fromEra lowest era
11+
* @param toEra highest era
12+
* @return list of era which are within from and to and also in search space
13+
*/
14+
public static Collection<Integer> getErasInRange(Collection<Integer> searchSpace,
15+
int fromEra, int toEra) {
16+
17+
Collection<Integer> eras = new ArrayList<>();
18+
19+
// the only trick is to be aware of the cyclic nature of era numbers
20+
boolean wrapped = fromEra > toEra; // it reached the era end and started new
21+
22+
for(Integer era : searchSpace) {
23+
if(!wrapped) {
24+
//INIT ---- from-> +++++++++++++ <-to ----- MAX (+ fits)
25+
if(era >= fromEra && era <= toEra) eras.add(era);
26+
} else {
27+
// INIT+++++++++<-to ------ from->++++++MAX
28+
if(era <= toEra && era >= ASAP.INITIAL_ERA
29+
|| era >= fromEra && era <= ASAP.MAX_ERA
30+
) eras.add(era);
31+
}
32+
}
33+
34+
return eras;
35+
36+
}
37+
}

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
import net.sharksystem.asap.ASAPException;
55
import net.sharksystem.asap.ASAPMessages;
66
import net.sharksystem.asap.engine.*;
7-
import net.sharksystem.asap.utils.Helper;
7+
import net.sharksystem.asap.utils.ASAPLogHelper;
88
import net.sharksystem.asap.cmdline.TCPStream;
99
import net.sharksystem.asap.cmdline.TCPStreamCreatedListener;
10+
import net.sharksystem.utils.SerializationHelper;
1011

1112
import java.io.IOException;
1213
import java.text.DateFormat;
@@ -75,7 +76,7 @@ private void go() {
7576
String myMessage = "message from " + this.peerName + " at " + df.format(new Date());
7677

7778
// convert to bytes
78-
byte[] byteMessage = Helper.str2bytes(myMessage);
79+
byte[] byteMessage = SerializationHelper.str2bytes(myMessage);
7980
this.println("add message");
8081
exampleApp.add("exampleChannel", byteMessage);
8182

@@ -101,14 +102,14 @@ public void chunkStored(String format, String senderE2E, String uri, int era,
101102
List<ASAPHop> asapHop) throws IOException {
102103

103104
ASAPMessages receivedMessages =
104-
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolderName, era);
105+
ASAPLogHelper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolderName, era);
105106

106107
this.println("messages received: " + format + " | " + senderE2E + " | " + uri);
107108

108109
Iterator<byte[]> messages = receivedMessages.getMessages();
109110
while(messages.hasNext()) {
110111
byte[] msgBytes = messages.next();
111-
String receivedMessage = Helper.bytes2str(msgBytes);
112+
String receivedMessage = SerializationHelper.bytes2str(msgBytes);
112113
this.println("message received: " + receivedMessage);
113114
};
114115
}
@@ -119,7 +120,7 @@ private void printReceivedMessages(ASAPMessages asapMessages, List<ASAPHop> asap
119120
Iterator<byte[]> messages = asapMessages.getMessages();
120121
while(messages.hasNext()) {
121122
byte[] msgBytes = messages.next();
122-
String receivedMessage = Helper.bytes2str(msgBytes);
123+
String receivedMessage = SerializationHelper.bytes2str(msgBytes);
123124
this.println("message received: " + receivedMessage);
124125
};
125126
}

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.sharksystem.asap.ASAPException;
55
import net.sharksystem.asap.engine.ASAPInternalStorage;
66
import net.sharksystem.asap.engine.*;
7+
import net.sharksystem.utils.fs.FSUtils;
78

89
import java.io.*;
910
import java.util.*;
@@ -603,7 +604,7 @@ public void doCreateASAPMessage(String parameterString) throws ASAPException {
603604
}
604605

605606
public void doResetASAPStorages() {
606-
ASAPEngineFS.removeFolder(PEERS_ROOT_FOLDER);
607+
FSUtils.removeFolder(PEERS_ROOT_FOLDER);
607608
File rootFolder = new File(PEERS_ROOT_FOLDER);
608609
rootFolder.mkdirs();
609610

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.sharksystem.asap.ASAPChunkStorage;
77
import net.sharksystem.asap.ASAPMessages;
88
import net.sharksystem.utils.Log;
9+
import net.sharksystem.utils.fs.FSUtils;
910

1011
import java.io.File;
1112
import java.io.FilenameFilter;
@@ -135,7 +136,7 @@ public void dropChunks(int era) throws IOException {
135136
// here comes a Java 6 compatible version - fits to android SDK 23
136137
String eraPathName = this.rootDirectory + "/" + Integer.toString(era);
137138

138-
ASAPEngineFS.removeFolder(eraPathName);
139+
FSUtils.removeFolder(eraPathName);
139140
}
140141

141142
@Override

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

-37
Original file line numberDiff line numberDiff line change
@@ -293,41 +293,4 @@ public List<CharSequence> getSender() {
293293

294294
return senderList;
295295
}
296-
297-
////////////////////////////////////////////////////////////////////////////////////////
298-
// helper //
299-
////////////////////////////////////////////////////////////////////////////////////////
300-
301-
public static void removeFolder(String eraPathName) {
302-
File dir = new File(eraPathName);
303-
304-
String[] dirEntries = dir.list();
305-
306-
if(dirEntries != null) {
307-
for(String fileName : dirEntries) {
308-
File fileInDir = new File(eraPathName + "/" + fileName);
309-
if(fileInDir.isDirectory()) {
310-
ASAPEngineFS.removeFolder(fileInDir.getAbsolutePath());
311-
} else {
312-
try {
313-
if(!fileInDir.delete()) {
314-
Log.writeLog(ASAPEngineFS.class,"ASAPEngineFS: cannot delete file (try deleteOnExit):"
315-
+ fileInDir);
316-
}
317-
} catch (RuntimeException e) {
318-
Log.writeLog(ASAPEngineFS.class, "cannot file:" + e.getLocalizedMessage());
319-
// try next
320-
}
321-
}
322-
}
323-
}
324-
325-
dir.delete();
326-
dir.deleteOnExit();
327-
try {
328-
Thread.sleep(1); // give file system a moment
329-
} catch (InterruptedException e) {
330-
// nobody wants to know
331-
}
332-
}
333296
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.sharksystem.asap.engine;
22

3-
import net.sharksystem.asap.ASAPHop;
3+
import net.sharksystem.asap.ASAPUtils;
44
import net.sharksystem.utils.Utils;
55
import net.sharksystem.asap.ASAPException;
66
import net.sharksystem.asap.ASAPMessages;
@@ -72,7 +72,7 @@ private void syncChunkList() throws IOException {
7272
Collection<Integer> erasInFolder = Utils.getErasInFolder(this.chunkStorage.getRootDirectory());
7373
if(erasInFolder.isEmpty()) return;
7474

75-
Collection<Integer> erasToUse = Utils.getErasInRange(erasInFolder, this.fromEra, this.toEra);
75+
Collection<Integer> erasToUse = ASAPUtils.getErasInRange(erasInFolder, this.fromEra, this.toEra);
7676
if(erasToUse.isEmpty()) return;
7777

7878
/*

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

+11-10
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
import net.sharksystem.asap.ASAPException;
55
import net.sharksystem.asap.ASAPHop;
66
import net.sharksystem.asap.utils.ASAPSerialization;
7-
import net.sharksystem.asap.utils.Helper;
7+
import net.sharksystem.asap.utils.ASAPLogHelper;
88
import net.sharksystem.utils.Log;
9+
import net.sharksystem.utils.SerializationHelper;
910

1011
import java.io.*;
1112
import java.util.*;
@@ -341,8 +342,8 @@ private boolean readMetaData(File metaFile) throws IOException {
341342
}
342343

343344
try {
344-
this.recipients = Helper.string2CharSequenceSet(dis.readUTF());
345-
this.deliveredTo = Helper.string2CharSequenceList(dis.readUTF());
345+
this.recipients = SerializationHelper.string2CharSequenceSet(dis.readUTF());
346+
this.deliveredTo = SerializationHelper.string2CharSequenceList(dis.readUTF());
346347

347348
// finally read offset list
348349
String offsetList = dis.readUTF();
@@ -366,8 +367,8 @@ private void writeMetaData(File metaFile) throws IOException {
366367

367368
dos.writeUTF(this.uri);
368369
dos.writeUTF(this.getExtraAsString());
369-
dos.writeUTF(Helper.collection2String(this.recipients));
370-
dos.writeUTF(Helper.collection2String(this.deliveredTo));
370+
dos.writeUTF(SerializationHelper.collection2String(this.recipients));
371+
dos.writeUTF(SerializationHelper.collection2String(this.deliveredTo));
371372

372373
// write offsetList
373374
dos.writeUTF(this.messageStartOffsetListAsString());
@@ -381,7 +382,7 @@ private String messageStartOffsetListAsString() {
381382
boolean first = true;
382383
for(Long offset : this.messageStartOffsets) {
383384
if(!first) {
384-
sb.append(Helper.SERIALIZATION_DELIMITER);
385+
sb.append(ASAPLogHelper.SERIALIZATION_DELIMITER);
385386
}
386387
first = false;
387388
sb.append(offset.toString());
@@ -401,10 +402,10 @@ private String getExtraAsString() throws IOException {
401402
};
402403

403404
if(first) { first = false; }
404-
else { sb.append(Helper.SERIALIZATION_DELIMITER); }
405+
else { sb.append(ASAPLogHelper.SERIALIZATION_DELIMITER); }
405406

406407
sb.append(key);
407-
sb.append(Helper.SERIALIZATION_DELIMITER);
408+
sb.append(ASAPLogHelper.SERIALIZATION_DELIMITER);
408409
sb.append(value);
409410
}
410411

@@ -416,7 +417,7 @@ private void setExtraByString(String extraString) throws IOException {
416417

417418
try {
418419
HashMap<String, String> extra = new HashMap<>();
419-
StringTokenizer st = new StringTokenizer(extraString, Helper.SERIALIZATION_DELIMITER);
420+
StringTokenizer st = new StringTokenizer(extraString, ASAPLogHelper.SERIALIZATION_DELIMITER);
420421
while (st.hasMoreTokens()) {
421422
String key = st.nextToken();
422423
String value = st.nextToken();
@@ -437,7 +438,7 @@ private ArrayList<Long> messageOffsetString2List(String s) {
437438

438439
if(s == null || s.length() == 0) return longList;
439440

440-
StringTokenizer t = new StringTokenizer(s, Helper.SERIALIZATION_DELIMITER);
441+
StringTokenizer t = new StringTokenizer(s, ASAPLogHelper.SERIALIZATION_DELIMITER);
441442

442443
while(t.hasMoreTokens()) {
443444
Long offsetLong = Long.parseLong(t.nextToken());

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import net.sharksystem.asap.ASAPSecurityException;
66
import net.sharksystem.asap.protocol.*;
77
import net.sharksystem.asap.crypto.ASAPKeyStore;
8-
import net.sharksystem.utils.ExtraData;
8+
import net.sharksystem.asap.fs.ExtraData;
99

1010
import java.io.IOException;
1111
import java.io.OutputStream;

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

+5-7
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
import net.sharksystem.SharkException;
44
import net.sharksystem.asap.EncounterConnectionType;
55
import net.sharksystem.asap.crypto.*;
6-
import net.sharksystem.utils.ExtraData;
7-
import net.sharksystem.utils.ExtraDataFS;
8-
import net.sharksystem.utils.Utils;
6+
import net.sharksystem.asap.fs.ExtraData;
7+
import net.sharksystem.asap.fs.ExtraDataFS;
8+
import net.sharksystem.utils.*;
99
import net.sharksystem.asap.ASAP;
1010
import net.sharksystem.asap.ASAPException;
1111
import net.sharksystem.asap.ASAPSecurityException;
1212
import net.sharksystem.asap.listenermanager.management.ASAPManagementMessageHandler;
1313
import net.sharksystem.asap.protocol.*;
14-
import net.sharksystem.asap.utils.Helper;
15-
import net.sharksystem.utils.Log;
1614

1715
import java.io.*;
1816
import java.util.*;
@@ -436,7 +434,7 @@ private void notifyOnlinePeersChangedListener() {
436434
if(!this.connectedThreads.isEmpty()) {
437435
System.out.println(this.getLogStart()
438436
+ "#online peers: " + this.connectedThreads.keySet().size()
439-
+ " | " + Helper.collection2String(this.connectedThreads.keySet()));
437+
+ " | " + SerializationHelper.collection2String(this.connectedThreads.keySet()));
440438
} else {
441439
System.out.println(this.getLogStart() + "no (more) peers: ");
442440
}
@@ -454,7 +452,7 @@ public Set<CharSequence> getOnlinePeers() {
454452
if(!this.connectedThreads.isEmpty()) {
455453
System.out.println(this.getLogStart()
456454
+ "getOnlinePeers called | #online peers: " + this.connectedThreads.keySet().size()
457-
+ " | " + Helper.collection2String(this.connectedThreads.keySet()));
455+
+ " | " + SerializationHelper.collection2String(this.connectedThreads.keySet()));
458456
} else {
459457
System.out.println(this.getLogStart() + "getOnlinePeers called | no (more) peers: ");
460458
}

src/main/java/net/sharksystem/utils/ExtraData.java renamed to src/main/java/net/sharksystem/asap/fs/ExtraData.java

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

33
import net.sharksystem.SharkException;
44

src/main/java/net/sharksystem/utils/ExtraDataFS.java renamed to src/main/java/net/sharksystem/asap/fs/ExtraDataFS.java

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

33
import net.sharksystem.SharkException;
44
import net.sharksystem.asap.ASAPException;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package net.sharksystem.asap.utils;
2+
3+
import net.sharksystem.utils.Log;
4+
import net.sharksystem.utils.Utils;
5+
import net.sharksystem.asap.ASAPChunkStorage;
6+
import net.sharksystem.asap.engine.ASAPEngine;
7+
import net.sharksystem.asap.engine.ASAPEngineFS;
8+
import net.sharksystem.asap.ASAPException;
9+
import net.sharksystem.asap.ASAPMessages;
10+
11+
import java.io.*;
12+
13+
public class ASAPLogHelper {
14+
public static final String SERIALIZATION_DELIMITER = "|||";
15+
16+
public static ASAPMessages getMessagesByChunkReceivedInfos(String format, String sender, String uri,
17+
String folderName, int era) {
18+
try {
19+
String rootIncomingStorage = folderName + "/" + Utils.url2FileName(format);
20+
Log.writeLog(ASAPLogHelper.class, "try getting storage in folder " + rootIncomingStorage);
21+
ASAPEngine existingASAPEngineFS =
22+
ASAPEngineFS.getExistingASAPEngineFS(rootIncomingStorage);
23+
Log.writeLog(ASAPLogHelper.class, "got existing asap engine");
24+
25+
ASAPChunkStorage chunkStorage = existingASAPEngineFS.getReceivedChunksStorage(sender);
26+
Log.writeLog(ASAPLogHelper.class, "got incoming channel of " + sender);
27+
28+
ASAPMessages asapMessages = chunkStorage.getASAPMessages(uri, era, era);
29+
Log.writeLog(ASAPLogHelper.class, "got messages uri: " + uri + " / era: " + era);
30+
31+
return asapMessages;
32+
} catch (IOException | ASAPException e) {
33+
Log.writeLog(ASAPLogHelper.class, "could not access message after be informed about new chunk arrival"
34+
+ e.getLocalizedMessage());
35+
}
36+
37+
return null;
38+
}
39+
}

0 commit comments

Comments
 (0)