diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-12-02 11:18:01 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-12-02 11:18:01 -0500 |
| commit | 77c5a38fb24a2feefb443c29668afe59f0f2a53c (patch) | |
| tree | 727efca949a2bf14bee8994b1229512410a9912e /src | |
| parent | 4382f9dcbe097b86c957ba028e2bcab6ca384f58 (diff) | |
| download | soen423-77c5a38fb24a2feefb443c29668afe59f0f2a53c.zip | |
replica2: implement startProcess()
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/derms/replica2/Replica2.java | 49 |
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) { |