Files
Mindustry/core/src/mindustry/net/Streamable.java
2021-06-02 11:08:08 -04:00

50 lines
1.2 KiB
Java

package mindustry.net;
import mindustry.net.Packets.*;
import java.io.*;
public class Streamable extends Packet{
public transient ByteArrayInputStream stream;
@Override
public int getPriority(){
return priorityHigh;
}
public static class StreamBuilder{
public final int id;
public final byte type;
public final int total;
public final ByteArrayOutputStream stream = new ByteArrayOutputStream();
public StreamBuilder(StreamBegin begin){
id = begin.id;
type = begin.type;
total = begin.total;
}
public float progress(){
return (float)stream.size() / total;
}
public void add(byte[] bytes){
try{
stream.write(bytes);
}catch(IOException e){
throw new RuntimeException(e);
}
}
public Streamable build(){
Streamable s = Net.newPacket(type);
s.stream = new ByteArrayInputStream(stream.toByteArray());
return s;
}
public boolean isDone(){
return stream.size() >= total;
}
}
}