All Downloads are FREE. Search and download functionalities are using the official Maven repository.

co.spraybot.messagerunner.messagecodecs.DataStoreParcelMessageCodec Maven / Gradle / Ivy

Go to download

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