goserver_sync/examples/txserver2/tx_trace.go

72 lines
2.2 KiB
Go

package main
import (
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"mongo.games.com/goserver/core/transact"
"mongo.games.com/goserver/examples/protocol"
"mongo.games.com/goserver/srvlib"
)
type traceTransHandler struct {
}
func init() {
transact.RegisteHandler(protocol.TxTrace, &traceTransHandler{})
srvlib.ServerSessionMgrSington.AddListener(&MyServerSessionRegisteListener{})
}
func (this *traceTransHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult {
logger.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
}
func (this *traceTransHandler) OnCommit(tNode *transact.TransNode) transact.TransExeResult {
logger.Logger.Trace("traceTransHandler.OnCommit ")
return transact.TransExeResult_Success
}
func (this *traceTransHandler) OnRollBack(tNode *transact.TransNode) transact.TransExeResult {
logger.Logger.Trace("traceTransHandler.OnRollBack ")
return transact.TransExeResult_Success
}
func (this *traceTransHandler) OnChildTransRep(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, ud interface{}) transact.TransExeResult {
logger.Logger.Trace("traceTransHandler.OnChildTransRep ")
return transact.TransExeResult_Success
}
type MyServerSessionRegisteListener struct {
}
func (mssrl *MyServerSessionRegisteListener) OnRegiste(*netlib.Session) {
logger.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 (mssrl *MyServerSessionRegisteListener) OnUnregiste(*netlib.Session) {
logger.Logger.Trace("MyServerSessionRegisteListener.OnUnregiste")
}