/* * Copyright 1999-2019 Seata.io Group. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.seata.server.store; import io.seata.core.model.GlobalStatus; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionCondition; import java.util.List; /** * The interface Transaction store manager. * * @author slievrly */ public interface TransactionStoreManager { /** * Write session boolean. * * @param logOperation the log operation * @param session the session * @return the boolean */ boolean writeSession(LogOperation logOperation, SessionStorable session); /** * Read global session global session. * * @param xid the xid * @return the global session */ GlobalSession readSession(String xid); /** * Read session global session. * * @param xid the xid * @param withBranchSessions the withBranchSessions * @return the global session */ GlobalSession readSession(String xid, boolean withBranchSessions); /** * Read session global session by sort by timeout begin status. * * @param withBranchSessions the withBranchSessions * @return the global session */ List readSortByTimeoutBeginSessions(boolean withBranchSessions); /** * Read session global session. * * @param statuses the statuses * @param withBranchSessions the withBranchSessions * @return the global session list */ List readSession(GlobalStatus[] statuses, boolean withBranchSessions); /** * Read session by status list. * * @param sessionCondition the session condition * @return the list */ List readSession(SessionCondition sessionCondition); /** * Shutdown. */ void shutdown(); /** * The enum Log operation. */ enum LogOperation { /** * Global add log operation. */ GLOBAL_ADD((byte)1), /** * Global update log operation. */ GLOBAL_UPDATE((byte)2), /** * Global remove log operation. */ GLOBAL_REMOVE((byte)3), /** * Branch add log operation. */ BRANCH_ADD((byte)4), /** * Branch update log operation. */ BRANCH_UPDATE((byte)5), /** * Branch remove log operation. */ BRANCH_REMOVE((byte)6); private byte code; LogOperation(byte code) { this.code = code; } /** * Gets code. * * @return the code */ public byte getCode() { return this.code; } /** * Gets log operation by code. * * @param code the code * @return the log operation by code */ public static LogOperation getLogOperationByCode(byte code) { for (LogOperation temp : values()) { if (temp.getCode() == code) { return temp; } } throw new IllegalArgumentException("Unknown LogOperation[" + code + "]"); } } }