tdlib-session-container/src/main/java/it/tdlight/reactiveapi/TdlibDeserializer.java

36 lines
935 B
Java

package it.tdlight.reactiveapi;
import static it.tdlight.reactiveapi.Event.SERIAL_VERSION;
import it.tdlight.jni.TdApi;
import it.tdlight.jni.TdApi.Object;
import java.io.ByteArrayInputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.IOException;
public class TdlibDeserializer implements Deserializer<Object> {
@Override
public Object deserialize(byte[] data) {
if (data.length == 0) {
return null;
}
var bais = new ByteArrayInputStream(data);
var dais = new DataInputStream(bais);
return deserialize(-1, dais);
}
@Override
public Object deserialize(int length, DataInput dataInput) {
try {
if (dataInput.readInt() != SERIAL_VERSION) {
return new TdApi.Error(400, "Conflicting protocol version");
}
return TdApi.Deserializer.deserialize(dataInput);
} catch (IOException e) {
throw new SerializationException("Failed to deserialize TDLib object", e);
}
}
}