
co.spraybot.messagerunner.messagecodecs.DataStoreParcelMessageCodec Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of message-runner Show documentation
Show all versions of message-runner Show documentation
A micro-framework to allow easily passing specific Vert.x messages to specific addresses for processing of those messages.
The newest version!
package co.spraybot.messagerunner.messagecodecs;
import co.spraybot.messagerunner.DataStoreParcel;
import co.spraybot.messagerunner.DataStoreVerticle;
import co.spraybot.messagerunner.parcels.DefaultDataStoreParcel;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.eventbus.MessageCodec;
import io.vertx.core.json.JsonObject;
public class DataStoreParcelMessageCodec implements MessageCodec {
@Override
public void encodeToWire(Buffer buffer, DefaultDataStoreParcel defaultDataStoreParcel) {
JsonObject data = new JsonObject();
Class actualValueType = defaultDataStoreParcel.getValueType();
String valueType = (actualValueType != null) ? actualValueType.getCanonicalName() : null;
data.put("operation", defaultDataStoreParcel.getDataStoreOperation().toString());
data.put("key", defaultDataStoreParcel.getKey());
data.put("value", defaultDataStoreParcel.getValue());
data.put("valueType", valueType);
String encodedData = data.encode();
int length = encodedData.getBytes().length;
buffer.appendInt(length);
buffer.appendString(encodedData);
}
@Override
public DataStoreParcel decodeFromWire(int i, Buffer buffer) {
int start = i + 4;
int end = buffer.getInt(i) + 4;
String encodedData = buffer.getString(start, end);
JsonObject data = new JsonObject(encodedData);
DataStoreVerticle.Operation operation = DataStoreVerticle.Operation.valueOf(data.getString("operation"));
return DataStoreParcel.builder()
.operation(operation)
.key(data.getString("key"))
.value(data.getValue("value"))
.build();
}
@Override
public DataStoreParcel transform(DefaultDataStoreParcel defaultDataStoreParcel) {
return defaultDataStoreParcel;
}
@Override
public String name() {
return getClass().getCanonicalName();
}
@Override
public byte systemCodecID() {
return -1;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy