package io.teknek.nibiru.transport;
import io.teknek.nibiru.transport.columnfamily.GetMessage;
import io.teknek.nibiru.transport.columnfamilyadmin.CleanupMessage;
import io.teknek.nibiru.transport.keyvalue.Get;
import io.teknek.nibiru.transport.keyvalue.Set;
import io.teknek.nibiru.transport.metadata.CreateOrUpdateKeyspace;
import io.teknek.nibiru.transport.metadata.CreateOrUpdateStore;
import io.teknek.nibiru.transport.metadata.GetKeyspaceMetaData;
import io.teknek.nibiru.transport.metadata.GetStoreMetaData;
import io.teknek.nibiru.transport.metadata.ListKeyspaces;
import io.teknek.nibiru.transport.metadata.ListLiveMembers;
import io.teknek.nibiru.transport.metadata.ListStores;
import io.teknek.nibiru.transport.rpc.BlockingRpc;
import org.codehaus.jackson.annotate.JsonSubTypes;
import org.codehaus.jackson.annotate.JsonTypeInfo;
import org.codehaus.jackson.annotate.JsonSubTypes.Type;
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
//metadata
@Type(value = ListLiveMembers.class, name = "ListLiveMembers"),
@Type(value = CreateOrUpdateKeyspace.class, name = "CreateOrUpdateKeyspace"),
@Type(value = GetStoreMetaData.class, name = "GetStoreMetaData"),
@Type(value = ListStores.class, name = "ListStores"),
@Type(value = ListKeyspaces.class, name = "ListKeyspaces"),
@Type(value = GetKeyspaceMetaData.class, name = "GetKeyspaceMetaData"),
@Type(value = CreateOrUpdateStore.class, name = "CreateOrUpdateStore"),
//keyvalue
@Type(value = Set.class, name = "Set"),
@Type(value = Get.class, name = "Get"),
//rpc
@Type(value = BlockingRpc.class, name = "BlockingRpc"),
//columnfamily
@Type(value = GetMessage.class, name = "GetMessage"),
//columnfamilyadmin
@Type(value = CleanupMessage.class, name = "CleanupMessage"),
})
public class BaseMessage {
}