Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions fagiServer/src/main/java/com/fagi/handler/InputHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public void handleInput(Object input) {
out.addResponse(handleLogin(arg));
} else if (input instanceof Logout) {
out.addResponse(handleLogout());
out.setRunning(false);
out.stop();
} else if (input instanceof CreateUser arg) {
out.addResponse(handleCreateUser(arg));
} else if (input instanceof FriendRequest arg) {
Expand Down Expand Up @@ -420,7 +420,7 @@ private Object handleLogin(Login arg) {

private Object handleLogout() {
data.userLogout(inputAgent.getUsername());
inputAgent.setRunning(false);
inputAgent.stop();

List<String> friends = data
.getUser(inputAgent.getUsername())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.fagi.running;

/**
* Checks a field to determine if it's running.
*/
public class CheckFieldRunningStrategy implements IsRunningStrategy {
private boolean running = true;

@Override
public boolean isRunning() {
return running;
}

@Override
public void stop() {
running = false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,9 @@ public interface IsRunningStrategy {
* @return true if the worker is running, false if not
*/
boolean isRunning();

/**
* Ensure future calls to {@link IsRunningStrategy#isRunning()} will return false
*/
void stop();
}
13 changes: 4 additions & 9 deletions fagiServer/src/main/java/com/fagi/server/Server.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
import com.fagi.handler.ConversationHandler;
import com.fagi.model.Data;
import com.fagi.model.InviteCodeContainer;
import com.fagi.running.CheckFieldRunningStrategy;
import com.fagi.running.IsRunningStrategy;
import com.fagi.server.running.CheckFieldServerRunningStrategy;
import com.fagi.utility.JsonFileOperations;
import com.fagi.worker.InputWorker;
import com.fagi.worker.OutputWorker;
Expand All @@ -32,8 +32,7 @@
public class Server {
static final String CONFIG_FILE = "config/serverinfo.config";
private final Data data;
private IsRunningStrategy isRunningStrategy = new CheckFieldServerRunningStrategy(this);
private boolean running = true;
private IsRunningStrategy isRunningStrategy = new CheckFieldRunningStrategy();
private final ConversationHandler handler;
private Thread conversationHandlerThread;
private final List<Thread> inputWorkerThreads = Collections.synchronizedList(new ArrayList<>());
Expand Down Expand Up @@ -82,7 +81,7 @@ public void start(ServerSocket serverSocket) {
workerCreation(serverSocket);
} catch (IOException e) {
System.out.println("Error in server loop exception = " + e);
running = false;
isRunningStrategy.stop();
}
}

Expand Down Expand Up @@ -121,11 +120,7 @@ private void workerCreation(ServerSocket serverSocket) throws IOException {
}

public boolean isRunning() {
return running;
}

public void setRunning(boolean running) {
this.running = running;
return isRunningStrategy.isRunning();
}

public void setIsRunningStrategy(IsRunningStrategy isRunningStrategy) {
Expand Down

This file was deleted.

2 changes: 1 addition & 1 deletion fagiServer/src/main/java/com/fagi/worker/InputAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public interface InputAgent {

String getUsername();

void setRunning(boolean running);
void stop();

InputHandler getInputHandler();
}
14 changes: 7 additions & 7 deletions fagiServer/src/main/java/com/fagi/worker/InputWorker.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public InputWorker(

@Override
public void run() {
while (isWorkerRunningStrategy.isRunning()) {
while (isRunningStrategy.isRunning()) {
System.out.println("Running");
try {
Object input = objIn.readObject();
Expand All @@ -63,13 +63,13 @@ public void run() {
// TODO: This will be fixed with https://trello.com/c/KBmf0o1U/54
inputHandler.handleInput(input);
} catch (EOFException | SocketException eof) {
running = false;
stop();
System.out.println("Logging out user " + myUserName);
out.setRunning(false);
out.stop();
data.userLogout(myUserName);
} catch (Exception e) {
running = false;
out.setRunning(false);
stop();
out.stop();
System.out.println("Something went wrong in a input worker while loop " + e);
e.printStackTrace();
System.out.println("Logging out user " + myUserName);
Expand Down Expand Up @@ -115,8 +115,8 @@ public String getUsername() {
}

@Override
public void setRunning(boolean running) {
this.running = running;
public void stop() {
this.isRunningStrategy.stop();
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion fagiServer/src/main/java/com/fagi/worker/OutputAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ public interface OutputAgent {

void setUserName(String userName);

void setRunning(boolean running);
void stop();
}
10 changes: 5 additions & 5 deletions fagiServer/src/main/java/com/fagi/worker/OutputWorker.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,20 @@ public OutputWorker(

@Override
public void run() {
while (isWorkerRunningStrategy.isRunning()) {
while (isRunningStrategy.isRunning()) {
System.out.println("Running");
try {
sendIncMessages();
sendResponses();
objOut.reset();
while (messages.isEmpty() && respondObjects.isEmpty() && isWorkerRunningStrategy.isRunning()) {
while (messages.isEmpty() && respondObjects.isEmpty() && isRunningStrategy.isRunning()) {
if (myUserName != null) {
checkForLists();
}
Thread.sleep(100);
}
} catch (IOException | InterruptedException ioe) {
running = false;
stop();
System.out.println(ioe.toString());
System.out.println("Logging out user " + myUserName);
data.userLogout(myUserName);
Expand Down Expand Up @@ -134,8 +134,8 @@ public void setUserName(String userName) {
}

@Override
public void setRunning(boolean running) {
this.running = running;
public void stop() {
this.isRunningStrategy.stop();
}

public int getResponseObjectsQueueSize() {
Expand Down
14 changes: 6 additions & 8 deletions fagiServer/src/main/java/com/fagi/worker/Worker.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,22 @@
*
* Worker thread for each client.
*/
import com.fagi.worker.running.CheckFieldWorkerRunningStrategy;

import com.fagi.running.CheckFieldRunningStrategy;
import com.fagi.running.IsRunningStrategy;

public abstract class Worker implements Runnable {
// TODO: Rework using running and the IsWorkerRunningStrategy
// Trello issue: https://trello.com/c/8cEhrobt
boolean running = true;
protected IsRunningStrategy isWorkerRunningStrategy = new CheckFieldWorkerRunningStrategy(this);
protected IsRunningStrategy isRunningStrategy = new CheckFieldRunningStrategy();

public boolean isRunning() {
return running;
return isRunningStrategy.isRunning();
}

/**
* Used by tests to change the strategy used to check if worker is running
* @param strategy the strategy to set
*/
void setIsWorkerRunningStrategy(IsRunningStrategy strategy) {
isWorkerRunningStrategy = strategy;
void setIsRunningStrategy(IsRunningStrategy strategy) {
isRunningStrategy = strategy;
}
}

This file was deleted.

Loading
Loading