tcc

package
v0.0.0-...-daf8b82 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 4, 2022 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TccTransaction

func TccTransaction(ctx context.Context, cli *GrpcClient, expire time.Time,
	tryFunctions func(ctx context.Context, t *Transaction, gtid string) error) (*pb.TccResponse, error)

TccTransaction start a TCC transaction as a block,

return TccResponse and error,
transaction is aborted if error is not nil,
TccResponse describes states of TCC transaction

func WithRetry

func WithRetry(retry time.Duration) func(o *options)

WithRetry set retry duration

func WithTimeout

func WithTimeout(timeout time.Duration) func(o *options)

WithTimeout set timeout duration

Types

type GrpcClient

type GrpcClient struct {
	pb.TcClient
}

GrpcClient is grpc client of TCC AP

func NewGrpcClient

func NewGrpcClient(target string) (*GrpcClient, error)

NewGrpcClient create a grpc client

target is address of grpc server

type HttpClient

type HttpClient struct {
	TcServer string
}

HttpClient is http client of TCC AP

func (*HttpClient) Cancel

func (cli *HttpClient) Cancel(ctx context.Context, gtid string) (*define.TccResponse, error)

Cancel rollback TCC transaction

func (*HttpClient) Confirm

func (cli *HttpClient) Confirm(ctx context.Context, gtid string) (*define.TccResponse, error)

Confirm commit TCC transaction

func (*HttpClient) Get

func (cli *HttpClient) Get(ctx context.Context, gtid string) (*define.TccResponse, error)

Get get states of saga transaction

func (*HttpClient) NewGtid

func (cli *HttpClient) NewGtid(ctx context.Context) (string, error)

NewGtid create a unique identifier for transaction

func (*HttpClient) Prepare

func (cli *HttpClient) Prepare(ctx context.Context, req *define.TccRequest) (*define.TccResponse, error)

Prepare prepare transaction

func (*HttpClient) Register

func (cli *HttpClient) Register(ctx context.Context, gtid string, branch *define.TccBranch) (*define.TccResponse, error)

Register register a branch transaction for TCC transaction

type Transaction

type Transaction struct {
	// contains filtered or unexported fields
}

Transaction A distributed TCC transaction

func (*Transaction) TryGrpc

func (t *Transaction) TryGrpc(branchID int, conn *grpc.ClientConn,
	try string, confirm string, cancel string,
	request proto.Message,
	response interface{},
	opts ...func(o *options)) (err error)

TryGrpc invoke try method of grpc server of RM to start a branch transaction.

branchID is unique identifier, ensure it is unique in a TCC transaction
conn is grpc client connection of RM
try is try method of grpc server
confirm is confirm method of grpc server
cancel is cancel method of grpc server
request is request structure of try, confirm and cancel method
response is response of try method
opts set options of branch transaction

func (*Transaction) TryHttp

func (t *Transaction) TryHttp(branchID int,
	try string, confirm string, cancel string,
	payload []byte,
	opts ...func(o *options)) ([]byte, error)

TryHttp invoke try method of http server of RM to start a branch transaction.

branchID is unique identifier, ensure it is unique in a TCC transaction
try is try URL of http server
confirm is confirm URL of http server
cancel is cancel URL of http server
request is request structure of try, confirm and cancel
response is response of try
opts set options of branch transaction

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL