diff --git a/dtmcli/message.go b/dtmcli/message.go index e4a1c29..a86384a 100644 --- a/dtmcli/message.go +++ b/dtmcli/message.go @@ -31,9 +31,14 @@ type MsgStep struct { // NewMsg create new msg func NewMsg(server string) *Msg { + return NewMsg2(server, GenGid(server)) +} + +// NewMsg2 create new msg with specified gid +func NewMsg2(server string, gid string) *Msg { return &Msg{ MsgData: MsgData{ - Gid: GenGid(server), + Gid: gid, TransType: "msg", }, Server: server, diff --git a/dtmcli/saga.go b/dtmcli/saga.go index 8e34667..da2408c 100644 --- a/dtmcli/saga.go +++ b/dtmcli/saga.go @@ -31,9 +31,14 @@ type SagaStep struct { // NewSaga create a saga func NewSaga(server string) *Saga { + return NewSaga2(server, GenGid(server)) +} + +// NewSaga2 create a saga +func NewSaga2(server string, gid string) *Saga { return &Saga{ SagaData: SagaData{ - Gid: GenGid(server), + Gid: gid, TransType: "saga", }, Server: server, diff --git a/dtmcli/tcc.go b/dtmcli/tcc.go index 84ef449..334a0a2 100644 --- a/dtmcli/tcc.go +++ b/dtmcli/tcc.go @@ -22,7 +22,12 @@ type TccGlobalFunc func(tcc *Tcc) error // TccGlobalTransaction begin a tcc global transaction func TccGlobalTransaction(dtm string, tccFunc TccGlobalFunc) (gid string, rerr error) { - gid = GenGid(dtm) + return TccGlobalTransaction2(dtm, GenGid(dtm), tccFunc) +} + +// TccGlobalTransaction2 begin a tcc global transaction +func TccGlobalTransaction2(dtm string, gidIn string, tccFunc TccGlobalFunc) (gid string, rerr error) { + gid = gidIn data := &M{ "gid": gid, "trans_type": "tcc", diff --git a/dtmcli/xa.go b/dtmcli/xa.go index 591c616..e43eac0 100644 --- a/dtmcli/xa.go +++ b/dtmcli/xa.go @@ -116,7 +116,12 @@ func (xc *XaClient) XaLocalTransaction(c *gin.Context, transFunc XaLocalFunc) (r // XaGlobalTransaction start a xa global transaction func (xc *XaClient) XaGlobalTransaction(transFunc XaGlobalFunc) (gid string, rerr error) { - xa := Xa{IDGenerator: IDGenerator{}, Gid: GenGid(xc.Server)} + return xc.XaGlobalTransaction2(GenGid(xc.Server), transFunc) +} + +// XaGlobalTransaction2 start a xa global transaction with gid=ginIn +func (xc *XaClient) XaGlobalTransaction2(gidIn string, transFunc XaGlobalFunc) (gid string, rerr error) { + xa := Xa{IDGenerator: IDGenerator{}, Gid: gidIn} gid = xa.Gid data := &M{ "gid": gid,