package io.statik.report;
import io.statik.report.ReportHandler.Stage;
import java.net.InetSocketAddress;
import java.util.UUID;
public class Client {
private final UUID uuid = UUID.randomUUID();
private final ReportServer rs;
private final InetSocketAddress remoteAddress;
private UUID serverUUID = null;
private Stage stage;
private Request request;
public Client(final ReportServer rs, final InetSocketAddress remoteAddress) {
this.rs = rs;
this.remoteAddress = remoteAddress;
this.stage = Stage.INTRODUCTION;
synchronized (this.rs.getClients()) {
this.rs.getClients().add(this);
}
}
public void destroy() {
this.rs.getClients().remove(this);
}
public Request getCurrentRequest() {
return this.request;
}
public InetSocketAddress getRemoteAddress() {
return this.remoteAddress;
}
public UUID getServerUUID() {
return this.serverUUID;
}
/**
* This may only be called once, as a Client should only be reporting for one server.
*
* @param serverUUID UUID of server this Client is reporting for
* @throws java.lang.IllegalStateException If the serverUUID has already been set
*/
public void setServerUUID(UUID serverUUID) {
if (this.getServerUUID() != null) throw new IllegalStateException("serverUUID has already been set.");
this.serverUUID = serverUUID;
}
public Stage getStage() {
return this.stage;
}
public void setStage(final Stage stage) {
this.stage = stage;
}
public UUID getUUID() {
return this.uuid;
}
}