pkg/tm/constant.go (52 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 tm import "seata.apache.org/seata-go/pkg/protocol/message" type TransactionManager interface { // Begin a new global transaction. Begin(applicationId, transactionServiceGroup, name string, timeout int64) (string, error) // Commit Global commit. Commit(xid string) (message.GlobalStatus, error) // Rollback Global rollback. Rollback(xid string) (message.GlobalStatus, error) // GetStatus Get current status of the give transaction. GetStatus(xid string) (message.GlobalStatus, error) // GlobalReport Global report. GlobalReport(xid string, globalStatus message.GlobalStatus) (message.GlobalStatus, error) } // GlobalTransactionRole Identifies whether a global transaction is beginNewGtx or participates in something else type GlobalTransactionRole int8 const ( UnKnow = GlobalTransactionRole(0) Launcher = GlobalTransactionRole(1) Participant = GlobalTransactionRole(2) ) func (role GlobalTransactionRole) String() string { switch role { case UnKnow: return "UnKnow" case Launcher: return "Launcher" case Participant: return "Participant" } return "UnKnow" } // Propagation Used to identify the spread of the global transaction enumerated types type Propagation int8 const ( // Required // The default propagation. // If transaction is existing, execute with current transaction, // else execute with beginNewGtx transaction. Required = Propagation(0) // RequiresNew // If transaction is existing, suspend it, and then execute business with beginNewGtx transaction. RequiresNew = Propagation(1) // NotSupported // If transaction is existing, suspend it, and then execute business without transaction. NotSupported = Propagation(2) // Supports // If transaction is not existing, execute without global transaction, // else execute business with current transaction. Supports = Propagation(3) // Never // If transaction is existing, throw exception, // else execute business without transaction. Never = Propagation(4) // Mandatory // If transaction is not existing, throw exception, // else execute business with current transaction. Mandatory = Propagation(5) ) func (p Propagation) String() string { switch p { case Required: return "Required" case RequiresNew: return "RequiresNew" case NotSupported: return "NotSupported" case Supports: return "Supports" case Never: return "Never" case Mandatory: return "Mandatory" } return "UnKnow" }