func (this *TxStartHandler) Process(session *netlib.Session, data interface{}) error { logger.Trace("TxStartHandler.Process") if ts, ok := data.(*protocol.TransactStart); ok { netptnp := ts.GetParenTNP() if netptnp == nil { return nil } netmtnp := ts.GetMyTNP() if netmtnp == nil { return nil } ptnp := &transact.TransNodeParam{ TId: transact.TransNodeID(netptnp.GetTransNodeID()), Tt: transact.TransType(netptnp.GetTransType()), Ot: transact.TransOwnerType(netptnp.GetOwnerType()), Tct: transact.TransactCommitPolicy(netptnp.GetTransCommitType()), Oid: int(netptnp.GetOwnerID()), SkeletonID: int(netptnp.GetSkeletonID()), LevelNo: int(netptnp.GetLevelNo()), AreaID: int(netptnp.GetAreaID()), TimeOut: time.Duration(netptnp.GetTimeOut()), } mtnp := &transact.TransNodeParam{ TId: transact.TransNodeID(netmtnp.GetTransNodeID()), Tt: transact.TransType(netmtnp.GetTransType()), Ot: transact.TransOwnerType(netmtnp.GetOwnerType()), Tct: transact.TransactCommitPolicy(netmtnp.GetTransCommitType()), Oid: int(netmtnp.GetOwnerID()), SkeletonID: int(netmtnp.GetSkeletonID()), LevelNo: int(netmtnp.GetLevelNo()), AreaID: int(netmtnp.GetAreaID()), TimeOut: time.Duration(netmtnp.GetTimeOut()), } if !transact.ProcessTransStart(ptnp, mtnp, ts.GetCustomData(), mtnp.TimeOut) { return errors.New("TxStartHandler error, tid=" + strconv.FormatInt(netmtnp.GetTransNodeID(), 16)) } } return nil }
func (mssrl *MyServerSessionRegisteListener) OnRegiste(*netlib.Session) { logger.Trace("MyServerSessionRegisteListener.OnRegiste") tnp := &transact.TransNodeParam{ Tt: protocol.TxTrace, Ot: transact.TransOwnerType(2), Oid: 202, AreaID: 1, } tNode := transact.DTCModule.StartTrans(tnp, nil, transact.DefaultTransactTimeout) if tNode != nil { tNode.Go(core.CoreObject()) } }
func (this *traceTransHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { logger.Trace("traceTransHandler.OnExcute ") tnp := &transact.TransNodeParam{ Tt: protocol.TxTrace, Ot: transact.TransOwnerType(2), Oid: 201, AreaID: 1, Tct: transact.TransactCommitPolicy_TwoPhase, } p := new(int) *p = -2 userData := protocol.StructA{X: 10, Y: -1, Z: 65535, P: p, Desc: "welcome!"} tNode.StartChildTrans(tnp, userData, transact.DefaultTransactTimeout) return transact.TransExeResult_Success }