tdlib-session-container/src/main/java/it/tdlight/tdlibsession/td/middle/StartSessionMessageCodec.java

57 lines
1.4 KiB
Java
Raw Normal View History

2021-01-23 18:49:21 +01:00
package it.tdlight.tdlibsession.td.middle;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.eventbus.MessageCodec;
2021-01-24 19:13:46 +01:00
import io.vertx.core.json.JsonObject;
2021-01-27 00:58:07 +01:00
import it.tdlight.utils.BufferUtils;
import org.warp.commonutils.serialization.UTFUtils;
2021-01-23 18:49:21 +01:00
public class StartSessionMessageCodec implements MessageCodec<StartSessionMessage, StartSessionMessage> {
private final String codecName;
public StartSessionMessageCodec() {
super();
this.codecName = "StartSessionMessageCodec";
}
@Override
public void encodeToWire(Buffer buffer, StartSessionMessage t) {
2021-01-27 00:58:07 +01:00
BufferUtils.encode(buffer, os -> {
2021-03-10 12:35:56 +01:00
os.writeLong(t.id());
2021-01-27 00:58:07 +01:00
UTFUtils.writeUTF(os, t.alias());
BufferUtils.writeBuf(os, t.binlog());
os.writeLong(t.binlogDate());
UTFUtils.writeUTF(os, t.implementationDetails().toString());
});
2021-01-23 18:49:21 +01:00
}
@Override
public StartSessionMessage decodeFromWire(int pos, Buffer buffer) {
2021-03-10 12:35:56 +01:00
return BufferUtils.decode(pos, buffer, is -> new StartSessionMessage(is.readLong(),
2021-01-27 00:58:07 +01:00
UTFUtils.readUTF(is),
BufferUtils.rxReadBuf(is),
is.readLong(),
new JsonObject(UTFUtils.readUTF(is))
));
2021-01-23 18:49:21 +01:00
}
@Override
public StartSessionMessage transform(StartSessionMessage t) {
// If a message is sent *locally* across the event bus.
// This sends message just as is
return t;
}
@Override
public String name() {
return codecName;
}
@Override
public byte systemCodecID() {
// Always -1
return -1;
}
}