package launcher.serialize.stream;
import launcher.LauncherAPI;
import launcher.helper.IOHelper;
import launcher.serialize.HInput;
import launcher.serialize.HOutput;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public abstract class StreamObject
{
/* public StreamObject(HInput input) */
@LauncherAPI
public abstract void write(HOutput output) throws IOException;
@LauncherAPI
public final byte[] write() throws IOException
{
try (ByteArrayOutputStream array = IOHelper.newByteArrayOutput())
{
try (HOutput output = new HOutput(array))
{
write(output);
}
return array.toByteArray();
}
}
@FunctionalInterface
public interface Adapter<O extends StreamObject>
{
@LauncherAPI
O convert(HInput input) throws IOException;
}
}