Skip to content

Commit 272f062

Browse files
committed
Working on hub integration.
1 parent 70463e8 commit 272f062

4 files changed

Lines changed: 28 additions & 3 deletions

File tree

libs/ASAPHub.jar

216 Bytes
Binary file not shown.

libs/ASAPJava.jar

1.25 KB
Binary file not shown.

src/net/sharksystem/cmdline/sharkmessengerUI/ProductionUI.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import net.sharksystem.cmdline.sharkmessengerUI.commands.tcp.UICommandShowOpenTCPPorts;
2525
import net.sharksystem.fs.ExtraData;
2626
import net.sharksystem.fs.ExtraDataFS;
27+
import net.sharksystem.hub.peerside.ASAPHubManager;
2728
import net.sharksystem.utils.Log;
2829

2930
/**
@@ -33,9 +34,11 @@
3334
public class ProductionUI {
3435
public static final String SETTINGSFILENAME = ".sharkMessengerSettings";
3536
public static final String PEERNAME_KEY = "peername";
37+
public static final String SYNC_WITH_OTHERS_IN_SECONDS_KEY = "syncWithOthersInSeconds";
3638

3739
public static void main(String[] args) throws SharkException, IOException {
3840
String peerName = null;
41+
int syncWithOthersInSeconds = ASAPHubManager.DEFAULT_WAIT_INTERVAL_IN_SECONDS;
3942
ExtraData settings = new ExtraDataFS("./" + SETTINGSFILENAME);
4043
boolean isBack = false;
4144

@@ -49,6 +52,17 @@ public static void main(String[] args) throws SharkException, IOException {
4952
case 1:
5053
peerName = args[0];
5154
break;
55+
case 2:
56+
peerName = args[0];
57+
try {
58+
syncWithOthersInSeconds = Integer.parseInt(args[1]);
59+
}
60+
catch(NumberFormatException re) {
61+
System.err.println("could not parse second parameter " +
62+
"/ meant to be an integer telling how many seconds to wait for syncing with hubs"
63+
+ re.getLocalizedMessage());
64+
}
65+
break;
5266
default:
5367
System.out.println("possible arguments: ");
5468
System.out.println("\n -n peerName");
@@ -84,6 +98,8 @@ public static void main(String[] args) throws SharkException, IOException {
8498
settings.putExtra(PEERNAME_KEY, peerName.getBytes());
8599
}
86100

101+
settings.putExtra(SYNC_WITH_OTHERS_IN_SECONDS_KEY, syncWithOthersInSeconds);
102+
87103
// Re-direct asap/shark log messages.
88104
PrintStream asapLogMessages = new PrintStream("asapLogs" + peerName + ".txt");
89105
Log.setOutStream(asapLogMessages);

src/net/sharksystem/cmdline/sharkmessengerUI/SharkMessengerApp.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import java.net.Socket;
2222
import java.util.*;
2323

24+
import static net.sharksystem.cmdline.sharkmessengerUI.ProductionUI.SYNC_WITH_OTHERS_IN_SECONDS_KEY;
25+
2426
/**
2527
* Proposed and suggested pattern for Shark app. Implement a central entity (could even be a singleton)
2628
* that provides access to any component that is part of this application
@@ -45,6 +47,7 @@ public SharkMessengerApp(String peerName, ExtraData settings) throws SharkExcept
4547
this.settings = settings;
4648
this.sharkPeerFS = new SharkPeerFS(peerName, this.peerDataFolderName);
4749
this.peerName = peerName;
50+
int syncWithOthersInSeconds = settings.getExtraInteger(SYNC_WITH_OTHERS_IN_SECONDS_KEY);
4851

4952
// set up shark components
5053

@@ -79,16 +82,19 @@ public SharkMessengerApp(String peerName, ExtraData settings) throws SharkExcept
7982
//////////////////////// setup hub connection management
8083
// TODO: that's still a design flaw. We need something that extracts a connection handler from a peer. Do we?
8184
ASAPPeer asapPeer = this.sharkPeerFS.getASAPPeer();
85+
ASAPConnectionHandler asapHandler = (ASAPConnectionHandler) asapPeer;
8286
// this code runs on service side - this peer should be a connection handler
8387
if (asapPeer instanceof ASAPConnectionHandler) { // TODO: aaaaargs
8488
// yes it is
8589
ASAPEncounterManagerImpl asapEncounterManager =
86-
new ASAPEncounterManagerImpl((ASAPConnectionHandler) asapPeer, asapPeer.getPeerID());
90+
new ASAPEncounterManagerImpl(asapHandler, asapPeer.getPeerID(),
91+
syncWithOthersInSeconds*1000);
8792
// same object - different roles
8893
this.encounterManager = asapEncounterManager;
8994
this.encounterManagerAdmin = asapEncounterManager;
9095

91-
this.hubConnectionManager = new HubConnectionManagerImpl(this.encounterManager, asapPeer);
96+
this.hubConnectionManager =
97+
new HubConnectionManagerImpl(this.encounterManager, asapPeer, syncWithOthersInSeconds);
9298
} else {
9399
Log.writeLogErr(this,
94100
"ASAP peer set but is not a connection handler - cannot set up connection management");
@@ -191,7 +197,10 @@ public Set<Integer> getOpenHubPorts() {
191197
public void startHub(int portNumber) throws IOException {
192198
if(this.portAlreadyInUse(portNumber)) return;
193199

194-
ASAPTCPHub asapHub = new ASAPTCPHub(portNumber);
200+
// create a new hub that spawns new TCP connections.
201+
// ASAPTCPHub asapHub = new ASAPTCPHub(portNumber, true);
202+
203+
ASAPTCPHub asapHub = new ASAPTCPHub(portNumber, false);
195204
this.asapHubs.put(portNumber, asapHub);
196205
new Thread(asapHub).start();
197206
}

0 commit comments

Comments
 (0)