Newer
Older
KeeperJerry_Launcher / LaunchServer / source / response / Response.java
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);
    }
}