io.journalkeeper.core.serialize.WrappedState Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of journalkeeper-core Show documentation
Show all versions of journalkeeper-core Show documentation
Journalkeeper core raft implementations.
package io.journalkeeper.core.serialize;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Properties;
/**
* @author LiYue
* Date: 2020/2/18
*/
public interface WrappedState {
/**
* 在状态state上执行命令entries,JournalKeeper保证执行操作命令的线性语义。要求:
*
* - 原子性
* - 幂等性
*
* 成功返回执行结果,否则抛异常。
*
* @param entry 待执行的命令
* @return 执行结果。See {@link WrappedStateResult}
*/
default WrappedStateResult executeAndNotify(E entry) {
return new WrappedStateResult<>(execute(entry), null);
}
/**
* 在状态state上执行命令entries,JournalKeeper保证执行操作命令的线性语义。要求:
*
* - 原子性
* - 幂等性
*
* 成功返回执行结果,否则抛异常。
*
* @param entry 待执行的命令
* @return 执行结果。
*/
ER execute(E entry);
/**
* 查询
*
* @param query 查询条件
* @return 查询结果
*/
QR query(Q query);
/**
* 从磁盘中恢复状态机中的状态数据,在状态机启动的时候调用。
*
* @param path 存放state文件的路径
* @param properties 属性
* @throws IOException 发生IO异常时抛出
*/
void recover(Path path, Properties properties) throws IOException;
default void close() {
}
}