package launchserver.response;
import java.io.IOException;
import launcher.LauncherAPI;
import launcher.helper.LogHelper;
import launcher.request.RequestException;
import launcher.serialize.HInput;
import launcher.serialize.HOutput;
import launchserver.LaunchServer;
public abstract class Response {
@LauncherAPI protected final LaunchServer server;
@LauncherAPI protected final long id;
@LauncherAPI protected final HInput input;
@LauncherAPI protected final HOutput output;
@LauncherAPI
protected Response(LaunchServer server, long id, HInput input, HOutput output) {
this.server = server;
this.id = id;
this.input = input;
this.output = output;
}
@LauncherAPI
public abstract void reply() throws Exception;
@LauncherAPI
protected final void debug(String message) {
LogHelper.subDebug("#%d %s", id, message);
}
@LauncherAPI
protected final void debug(String message, Object... args) {
debug(String.format(message, args));
}
@LauncherAPI
protected final void writeNoError(HOutput output) throws IOException {
output.writeString("", 0);
}
@LauncherAPI
public static void requestError(String message) throws RequestException {
throw new RequestException(message);
}
@FunctionalInterface
public interface Factory {
@LauncherAPI
Response newResponse(LaunchServer server, long id, HInput input, HOutput output);
}
}