summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-12-02 11:18:01 -0500
committerSam Anthony <sam@samanthony.xyz>2024-12-02 11:18:01 -0500
commit77c5a38fb24a2feefb443c29668afe59f0f2a53c (patch)
tree727efca949a2bf14bee8994b1229512410a9912e /src
parent4382f9dcbe097b86c957ba028e2bcab6ca384f58 (diff)
downloadsoen423-77c5a38fb24a2feefb443c29668afe59f0f2a53c.zip
replica2: implement startProcess()
Diffstat (limited to 'src')
-rw-r--r--src/main/java/derms/replica2/Replica2.java49
1 files changed, 25 insertions, 24 deletions
diff --git a/src/main/java/derms/replica2/Replica2.java b/src/main/java/derms/replica2/Replica2.java
index 666ee1b..e004fe6 100644
--- a/src/main/java/derms/replica2/Replica2.java
+++ b/src/main/java/derms/replica2/Replica2.java
@@ -4,6 +4,7 @@ import derms.Replica;
import derms.ReplicaManager;
import derms.Request;
import derms.Response;
+import derms.util.ThreadPool;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import java.io.IOException;
@@ -23,8 +24,9 @@ public class Replica2 implements Replica {
private final Logger log;
private final ResponderServer responderServer;
private final CoordinatorServer coordinatorServer;
- private boolean alive;
private final ReplicaManager replicaManager;
+ private final ExecutorService pool;
+ private boolean alive = false;
public Replica2(City city, ReplicaManager replicaManager) throws IOException {
this.city = city;
@@ -33,6 +35,8 @@ public class Replica2 implements Replica {
this.servers = new Servers();
this.log = DermsLogger.getLogger(getClass());
this.replicaManager = replicaManager;
+ this.pool = Executors.newCachedThreadPool();
+
try {
this.responderServer = new ResponderServer(city, resources, servers);
} catch (IOException e) {
@@ -46,66 +50,61 @@ public class Replica2 implements Replica {
throw new IOException("Failed to create CoordinatorServer: "+e.getMessage());
}
log.info("Created CoordinatorServer");
+ }
- log.info("Running");
- log.config("Local address is "+localAddr.toString());
-
- ExecutorService pool = Executors.newCachedThreadPool();
+ @Override
+ public boolean isAlive() { return alive; }
+ @Override
+ public void startProcess() {
try {
pool.execute(new ResourceAvailability.Server(localAddr, resources));
} catch (IOException e) {
String msg = "Failed to start ResourceAvailability Server: "+e.getMessage();
log.severe(msg);
- throw e;
+ return;
}
try {
pool.execute(new RequestResource.Server(localAddr, resources));
} catch (IOException e) {
log.severe("Failed to start RequestResource Server: "+e.getMessage());
- throw e;
+ return;
}
try {
pool.execute(new FindResource.Server(localAddr, resources));
} catch (IOException e) {
log.severe("Failed to start FindResource Server: "+e.getMessage());
- throw e;
+ return;
}
try {
pool.execute(new ReturnResource.Server(localAddr, resources));
} catch (IOException e) {
log.severe("Failed to start ReturnResource Server: "+e.getMessage());
- throw e;
+ return;
}
try {
pool.execute(new SwapResource.Server(localAddr, resources, servers));
} catch (IOException e) {
log.severe("Failed to start SwapResource Server: "+e.getMessage());
- throw e;
+ return;
}
try {
pool.execute(new Announcer(announceGroup, localAddr, city));
} catch (IOException e) {
log.severe("Failed to start Announcer: "+e.getMessage());
- throw e;
+ return;
}
try {
pool.execute(new AnnounceListener(announceGroup, localAddr, servers));
} catch (IOException e) {
log.severe("Failed to start AnnounceListener: "+e.getMessage());
- throw e;
+ return;
}
- this.alive = true;
- }
-
- @Override
- public boolean isAlive() { return alive; }
-
- @Override
- public void startProcess() {
- // TODO
+ log.info("Running");
+ log.config("Local address is "+localAddr.toString());
+ alive = true;
log.info(getClass().getSimpleName() + " started.");
}
@@ -152,7 +151,6 @@ public class Replica2 implements Replica {
@Override
public void restart() {
- // TODO
shutdown();
startProcess();
}
@@ -160,8 +158,11 @@ public class Replica2 implements Replica {
@Override
public int getId() { return 2; }
- private void shutdown() {
- // TODO
+ public void shutdown() {
+ log.info("Shutting down...");
+ ThreadPool.shutdown(pool, log);
+ alive = false;
+ log.info("Finished shutting down.");
}
private String addResource(Request request) {