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"
}