package fi.iki.mkuokkanen.seda.queue.event;
import com.google.common.base.MoreObjects;
import com.lmax.disruptor.EventFactory;
import javolution.io.Struct;
import java.nio.ByteBuffer;
/**
* Descibes one message, that is stored in disruptor queueu. Provides
* preallocated memory.
*
* @author mkuokkanen
*/
public class Message extends Struct {
public final Signed64 id = new Signed64();
public final Enum32<MessageType> type = new Enum32<>(MessageType.values());
public final RequestPushStruct asPush = inner(new RequestPushStruct());
public final RequestDeleteStruct asDelete = inner(new RequestDeleteStruct());
public final RequestBroadcastStruct asBroadcast = inner(new RequestBroadcastStruct());
public final ResponseBroadcastStruct asBroadcastResponse = inner(new ResponseBroadcastStruct());
/**
* Private constructor, these won't be created from outside
*/
private Message() {
super();
type.set(MessageType.UNKNOWN);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this.getClass())
.add("id", id)
.add("type", type)
.toString();
}
public final static EventFactory<Message> FACTORY = new EventFactory<Message>() {
@Override
public Message newInstance() {
Message newMsg = new Message();
newMsg.setByteBuffer(ByteBuffer.allocate(newMsg.size()), 0);
return newMsg;
}
};
}