package com.cardshifter.server.model;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
import org.apache.log4j.LogManager;
import com.cardshifter.api.ClientIO;
import com.cardshifter.api.messages.Message;
public class ServerConsole extends ClientIO implements Runnable {
public ServerConsole(Server server, CommandHandler commands) {
super(server);
this.commands = commands;
}
private final CommandHandler commands;
@Override
public void run() {
Scanner scanner = new Scanner(System.in, StandardCharsets.UTF_8.name());
while (!Thread.interrupted()) {
String input = scanner.nextLine();
LogManager.getLogger(getClass()).info("Console input: " + input);
Command cmd = new Command(this, input);
boolean handled = commands.handle(cmd);
if (!handled) {
System.out.println("CONSOLE Invalid command: " + cmd);
}
}
LogManager.getLogger(getClass()).info("Console stopped");
scanner.close();
}
@Override
public void onSendToClient(Message message) {
System.out.println(message);
}
@Override
public void sentToServer(String message) {
commands.handle(new Command(this, message));
}
@Override
public void close() {
throw new UnsupportedOperationException();
}
@Override
public String getRemoteAddress() {
return "Console";
}
}