package org.kevoree.api;
import org.kevoree.ContainerRoot;
import org.kevoree.api.handler.LockCallBack;
import org.kevoree.api.handler.ModelListener;
import org.kevoree.api.handler.UUIDModel;
import org.kevoree.api.handler.UpdateCallback;
import org.kevoree.pmodeling.api.trace.TraceSequence;
import java.util.UUID;
/**
* Created with IntelliJ IDEA.
* User: duke
* Date: 26/11/2013
* Time: 17:25
*/
public interface ModelService {
UUIDModel getCurrentModel();
ContainerRoot getPendingModel();
void compareAndSwap(ContainerRoot model, UUID uuid, UpdateCallback callback);
void update(ContainerRoot model, UpdateCallback callback);
void registerModelListener(ModelListener listener);
void unregisterModelListener(ModelListener listener);
void acquireLock(LockCallBack callBack, Long timeout);
void releaseLock(UUID uuid);
String getNodeName();
void submitScript(String script, UpdateCallback callback);
void submitSequence(TraceSequence sequence, UpdateCallback callback);
}