package launcher.request;
import launcher.Launcher.Config;
import launcher.LauncherAPI;
import launcher.helper.VerifyHelper;
import launcher.serialize.HInput;
import launcher.serialize.HOutput;
public abstract class CustomRequest<T> extends Request<T>
{
@LauncherAPI
public CustomRequest(Config config)
{
super(config);
}
@LauncherAPI
public CustomRequest()
{
this(null);
}
@Override
public final Type getType()
{
return Type.CUSTOM;
}
@Override
protected final T requestDo(HInput input, HOutput output) throws Throwable
{
output.writeASCII(VerifyHelper.verifyIDName(getName()), 255);
output.flush();
// Custom request redirect
return requestDoCustom(input, output);
}
@LauncherAPI
public abstract String getName();
@LauncherAPI
protected abstract T requestDoCustom(HInput input, HOutput output);
}