xuekang
2024-05-10 edf3b7fde038fcf3e6d86b8b4b88c2ff6f9014cf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/*
 *  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<GlobalSession> readSortByTimeoutBeginSessions(boolean withBranchSessions);
    /**
     * Read session global session.
     *
     * @param statuses the statuses
     * @param withBranchSessions the withBranchSessions
     * @return the global session list
     */
    List<GlobalSession> readSession(GlobalStatus[] statuses, boolean withBranchSessions);
 
    /**
     * Read session by status list.
     *
     * @param sessionCondition the session condition
     * @return the list
     */
    List<GlobalSession> 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 + "]");
        }
    }
}