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

ru.taskurotta.service.hz.serialization.TaskContainerStreamSerializer Maven / Gradle / Ivy

The newest version!
package ru.taskurotta.service.hz.serialization;

import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.StreamSerializer;
import ru.taskurotta.internal.core.TaskType;
import ru.taskurotta.transport.model.ArgContainer;
import ru.taskurotta.transport.model.TaskContainer;
import ru.taskurotta.transport.model.TaskOptionsContainer;

import java.io.IOException;
import java.util.UUID;

import static ru.taskurotta.service.hz.serialization.SerializationTools.readArgsContainerArray;
import static ru.taskurotta.service.hz.serialization.SerializationTools.readString;
import static ru.taskurotta.service.hz.serialization.SerializationTools.readStringArray;
import static ru.taskurotta.service.hz.serialization.SerializationTools.writeArgsContainerArray;
import static ru.taskurotta.service.hz.serialization.SerializationTools.writeString;
import static ru.taskurotta.service.hz.serialization.SerializationTools.writeStringArray;

/**
 * User: greg
 */
public class TaskContainerStreamSerializer implements StreamSerializer {


    private TaskOptionsContainerSerializer taskOptionsContainerSerializer = new TaskOptionsContainerSerializer();

    @Override
    public void write(ObjectDataOutput out, TaskContainer object) throws IOException {
        UUIDSerializer.write(out, object.getTaskId());
        writeString(out, object.getMethod());
        writeString(out, object.getActorId());
        out.writeInt(object.getType().getValue());
        out.writeLong(object.getStartTime());
        out.writeInt(object.getErrorAttempts());
        writeArgsContainerArray(out, object.getArgs());
        if (object.getOptions() == null) {
            out.writeBoolean(false);
        } else {
            out.writeBoolean(true);
            taskOptionsContainerSerializer.write(out, object.getOptions());
        }
        out.writeBoolean(object.isUnsafe());
        writeStringArray(out, object.getFailTypes());
        UUIDSerializer.write(out, object.getProcessId());
    }

    @Override
    public TaskContainer read(ObjectDataInput in) throws IOException {
        UUID taskId = UUIDSerializer.read(in);
        String method = readString(in);
        String actorId = readString(in);
        TaskType taskType = TaskType.fromInt(in.readInt());
        long startTime = in.readLong();
        int attempts = in.readInt();
        ArgContainer[] containers = readArgsContainerArray(in);
        TaskOptionsContainer taskOptionsContainer = null;
        if (in.readBoolean()) {
            taskOptionsContainer = taskOptionsContainerSerializer.read(in);
        }
        boolean unsafe = in.readBoolean();
        String[] failTypes = readStringArray(in);
        UUID processId = UUIDSerializer.read(in);
        return new TaskContainer(taskId, processId, null, method, actorId, taskType, startTime, attempts, containers,
                taskOptionsContainer, unsafe, failTypes);
    }

    @Override
    public int getTypeId() {
        return ObjectTypes.TASK_CONTAINER;
    }

    @Override
    public void destroy() {

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy