blob: fbd388cd2fccae8afd695154d2416e40ba0ef972 [file] [log] [blame]
package codec
import (
"bytes"
"github.com/dk-lockdown/seata-golang/meta"
"github.com/dk-lockdown/seata-golang/protocal"
"vimagination.zapto.org/byteio"
)
func AbstractResultMessageDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractResultMessage{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
msg.ResultCode = protocal.ResultCode(resultCode)
totalReadN += 1
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
return msg,totalReadN
}
func MergedWarpMessageDecoder(in []byte) (interface{},int) {
var (
size16 int16 = 0
readN = 0
totalReadN = 0
)
result := protocal.MergedWarpMessage{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
r.ReadInt32()
totalReadN += 4
size16,readN,_ = r.ReadInt16()
totalReadN += readN
result.Msgs = make([]protocal.MessageTypeAware,0)
for index := 0; index < int(size16); index++ {
typeCode,_,_ := r.ReadInt16()
totalReadN += 2
decoder := getMessageDecoder(typeCode)
if decoder != nil {
msg,readN := decoder(in[totalReadN:])
totalReadN += readN
result.Msgs = append(result.Msgs,msg.(protocal.MessageTypeAware))
}
}
return result,totalReadN
}
func MergeResultMessageDecoder(in []byte) (interface{},int) {
var (
size16 int16 = 0
readN = 0
totalReadN = 0
)
result := protocal.MergeResultMessage{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
r.ReadInt32()
totalReadN += 4
size16,readN,_ = r.ReadInt16()
totalReadN += readN
result.Msgs = make([]protocal.MessageTypeAware,0)
for index := 0; index < int(size16); index++ {
typeCode,_,_ := r.ReadInt16()
totalReadN += 2
decoder := getMessageDecoder(typeCode)
if decoder != nil {
msg,readN := decoder(in[totalReadN:])
totalReadN += readN
result.Msgs = append(result.Msgs,msg.(protocal.MessageTypeAware))
}
}
return result,totalReadN
}
func AbstractIdentifyRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractIdentifyRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Version, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ApplicationId, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.TransactionServiceGroup, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ExtraData = make([]byte,int(length16))
readN, _ := r.Read(msg.ExtraData)
totalReadN += readN
}
return msg,totalReadN
}
func AbstractIdentifyResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractIdentifyResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
identified, _ := r.ReadByte()
totalReadN += 1
if identified == byte(1){
msg.Identified = true
} else if identified == byte(0) {
msg.Identified = false
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Version, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
return msg,totalReadN
}
func RegisterRMRequestDecoder(in []byte) (interface{},int) {
var (
length32 uint32 = 0
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.RegisterRMRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Version, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ApplicationId, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.TransactionServiceGroup, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ExtraData = make([]byte,int(length16))
readN, _ := r.Read(msg.ExtraData)
totalReadN += readN
}
length32, readN, _ = r.ReadUint32()
totalReadN += readN
if length32 > 0 {
msg.ResourceIds, readN, _ = r.ReadString(int(length32))
totalReadN += readN
}
return msg,totalReadN
}
func RegisterRMResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractIdentifyResponseDecoder(in)
abstractIdentifyResponse := resp.(protocal.AbstractIdentifyResponse)
msg := protocal.RegisterRMResponse{AbstractIdentifyResponse:abstractIdentifyResponse}
return msg,totalReadN
}
func RegisterTMRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := AbstractIdentifyRequestDecoder(in)
abstractIdentifyRequest := req.(protocal.AbstractIdentifyRequest)
msg := protocal.RegisterTMRequest{AbstractIdentifyRequest:abstractIdentifyRequest}
return msg,totalReadN
}
func RegisterTMResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractIdentifyResponseDecoder(in)
abstractIdentifyResponse := resp.(protocal.AbstractIdentifyResponse)
msg := protocal.RegisterRMResponse{AbstractIdentifyResponse:abstractIdentifyResponse}
return msg,totalReadN
}
func AbstractTransactionResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractTransactionResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
totalReadN += 1
msg.ResultCode = protocal.ResultCode(resultCode)
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
exceptionCode, _ := r.ReadByte()
totalReadN += 1
msg.TransactionExceptionCode = meta.TransactionExceptionCode(exceptionCode)
return msg,totalReadN
}
func AbstractBranchEndRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractBranchEndRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
msg.BranchId, _, _ = r.ReadInt64()
totalReadN += 8
branchType, _ := r.ReadByte()
totalReadN += 1
msg.BranchType = meta.BranchType(branchType)
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ResourceId, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ApplicationData = make([]byte,int(length16))
readN,_ := r.Read(msg.ApplicationData)
totalReadN += readN
}
return msg,totalReadN
}
func AbstractBranchEndResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractBranchEndResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
totalReadN += 1
msg.ResultCode = protocal.ResultCode(resultCode)
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
exceptionCode, _ := r.ReadByte()
totalReadN += 1
msg.TransactionExceptionCode = meta.TransactionExceptionCode(exceptionCode)
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
msg.BranchId, _, _ = r.ReadInt64()
totalReadN += 8
branchStatus,_ := r.ReadByte()
totalReadN += 1
msg.BranchStatus = meta.BranchStatus(branchStatus)
return msg,totalReadN
}
func AbstractGlobalEndRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractGlobalEndRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ExtraData = make([]byte,int(length16))
readN,_ := r.Read(msg.ExtraData)
totalReadN += readN
}
return msg,totalReadN
}
func AbstractGlobalEndResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.AbstractGlobalEndResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
totalReadN += 1
msg.ResultCode = protocal.ResultCode(resultCode)
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
exceptionCode, _ := r.ReadByte()
totalReadN += 1
msg.TransactionExceptionCode = meta.TransactionExceptionCode(exceptionCode)
globalStatus,_ := r.ReadByte()
totalReadN += 1
msg.GlobalStatus = meta.GlobalStatus(globalStatus)
return msg,totalReadN
}
func BranchCommitRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := AbstractBranchEndRequestDecoder(in)
abstractBranchEndRequest := req.(protocal.AbstractBranchEndRequest)
msg := protocal.BranchCommitRequest{AbstractBranchEndRequest:abstractBranchEndRequest}
return msg,totalReadN
}
func BranchCommitResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractBranchEndResponseDecoder(in)
abstractBranchEndResponse := resp.(protocal.AbstractBranchEndResponse)
msg := protocal.BranchCommitResponse{AbstractBranchEndResponse:abstractBranchEndResponse}
return msg,totalReadN
}
func BranchRegisterRequestDecoder(in []byte) (interface{},int) {
var (
length32 uint32 = 0
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.BranchRegisterRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
branchType, _ := r.ReadByte()
totalReadN += 1
msg.BranchType = meta.BranchType(branchType)
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ResourceId, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length32, readN, _ = r.ReadUint32()
totalReadN += readN
if length32 > 0 {
msg.LockKey, readN, _ = r.ReadString(int(length32))
totalReadN += readN
}
length32, readN, _ = r.ReadUint32()
totalReadN += readN
if length32 > 0 {
msg.ApplicationData = make([]byte,int(length32))
readN,_ := r.Read(msg.ApplicationData)
totalReadN += readN
}
return msg,totalReadN
}
func BranchRegisterResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.BranchRegisterResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
totalReadN += 1
msg.ResultCode = protocal.ResultCode(resultCode)
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
exceptionCode, _ := r.ReadByte()
totalReadN += 1
msg.TransactionExceptionCode = meta.TransactionExceptionCode(exceptionCode)
msg.BranchId, readN, _ = r.ReadInt64()
totalReadN += readN
return msg,totalReadN
}
func BranchReportRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.BranchReportRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
msg.BranchId, _, _ = r.ReadInt64()
branchStatus, _ := r.ReadByte()
msg.Status = meta.BranchStatus(branchStatus)
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ResourceId, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ApplicationData = make([]byte,int(length16))
readN,_ := r.Read(msg.ApplicationData)
totalReadN += readN
}
branchType, _ := r.ReadByte()
totalReadN += 1
msg.BranchType = meta.BranchType(branchType)
return msg,totalReadN
}
func BranchReportResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractTransactionResponseDecoder(in)
abstractTransactionResponse := resp.(protocal.AbstractTransactionResponse)
msg := protocal.BranchReportResponse{AbstractTransactionResponse: abstractTransactionResponse}
return msg,totalReadN
}
func BranchRollbackRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := AbstractBranchEndRequestDecoder(in)
abstractBranchEndRequest := req.(protocal.AbstractBranchEndRequest)
msg := protocal.BranchRollbackRequest{AbstractBranchEndRequest:abstractBranchEndRequest}
return msg,totalReadN
}
func BranchRollbackResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractBranchEndResponseDecoder(in)
abstractBranchEndResponse := resp.(protocal.AbstractBranchEndResponse)
msg := protocal.BranchRollbackResponse{AbstractBranchEndResponse:abstractBranchEndResponse}
return msg,totalReadN
}
func GlobalBeginRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.GlobalBeginRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
timeout, readN, _ := r.ReadInt32()
totalReadN += readN
msg.Timeout = timeout
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.TransactionName, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
return msg,totalReadN
}
func GlobalBeginResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.GlobalBeginResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
totalReadN += 1
msg.ResultCode = protocal.ResultCode(resultCode)
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
exceptionCode, _ := r.ReadByte()
totalReadN += 1
msg.TransactionExceptionCode = meta.TransactionExceptionCode(exceptionCode)
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ExtraData = make([]byte,int(length16))
readN,_ := r.Read(msg.ExtraData)
totalReadN += readN
}
return msg,totalReadN
}
func GlobalCommitRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := AbstractGlobalEndRequestDecoder(in)
abstractGlobalEndRequest := req.(protocal.AbstractGlobalEndRequest)
msg := protocal.GlobalCommitRequest{AbstractGlobalEndRequest:abstractGlobalEndRequest}
return msg,totalReadN
}
func GlobalCommitResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractGlobalEndResponseDecoder(in)
abstractGlobalEndResponse := resp.(protocal.AbstractGlobalEndResponse)
msg := protocal.GlobalCommitResponse{AbstractGlobalEndResponse:abstractGlobalEndResponse}
return msg,totalReadN
}
func GlobalLockQueryRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := BranchRegisterRequestDecoder(in)
branchRegisterRequest := req.(protocal.BranchRegisterRequest)
msg := protocal.GlobalLockQueryRequest{BranchRegisterRequest:branchRegisterRequest}
return msg,totalReadN
}
func GlobalLockQueryResponseDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.GlobalLockQueryResponse{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
resultCode, _ := r.ReadByte()
totalReadN += 1
msg.ResultCode = protocal.ResultCode(resultCode)
if msg.ResultCode == protocal.ResultCodeFailed {
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Msg, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
}
exceptionCode, _ := r.ReadByte()
totalReadN += 1
msg.TransactionExceptionCode = meta.TransactionExceptionCode(exceptionCode)
lockable, readN, _ := r.ReadUint16()
totalReadN += readN
if lockable == uint16(1) {
msg.Lockable = true
} else if lockable == uint16(0) {
msg.Lockable = false
}
return msg,totalReadN
}
func GlobalReportRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.GlobalReportRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.Xid, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ExtraData = make([]byte,int(length16))
readN, _ := r.Read(msg.ExtraData)
totalReadN += readN
}
globalStatus,_ := r.ReadByte()
totalReadN += 1
msg.GlobalStatus = meta.GlobalStatus(globalStatus)
return msg,totalReadN
}
func GlobalReportResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractGlobalEndResponseDecoder(in)
abstractGlobalEndResponse := resp.(protocal.AbstractGlobalEndResponse)
msg := protocal.GlobalReportResponse{AbstractGlobalEndResponse:abstractGlobalEndResponse}
return msg,totalReadN
}
func GlobalRollbackRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := AbstractGlobalEndRequestDecoder(in)
abstractGlobalEndRequest := req.(protocal.AbstractGlobalEndRequest)
msg := protocal.GlobalRollbackRequest{AbstractGlobalEndRequest:abstractGlobalEndRequest}
return msg,totalReadN
}
func GlobalRollbackResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractGlobalEndResponseDecoder(in)
abstractGlobalEndResponse := resp.(protocal.AbstractGlobalEndResponse)
msg := protocal.GlobalRollbackResponse{AbstractGlobalEndResponse:abstractGlobalEndResponse}
return msg,totalReadN
}
func GlobalStatusRequestDecoder(in []byte) (interface{},int) {
req,totalReadN := AbstractGlobalEndRequestDecoder(in)
abstractGlobalEndRequest := req.(protocal.AbstractGlobalEndRequest)
msg := protocal.GlobalStatusRequest{AbstractGlobalEndRequest:abstractGlobalEndRequest}
return msg,totalReadN
}
func GlobalStatusResponseDecoder(in []byte) (interface{},int) {
resp,totalReadN := AbstractGlobalEndResponseDecoder(in)
abstractGlobalEndResponse := resp.(protocal.AbstractGlobalEndResponse)
msg := protocal.GlobalStatusResponse{AbstractGlobalEndResponse:abstractGlobalEndResponse}
return msg,totalReadN
}
func UndoLogDeleteRequestDecoder(in []byte) (interface{},int) {
var (
length16 uint16 = 0
readN = 0
totalReadN = 0
)
msg := protocal.UndoLogDeleteRequest{}
r := byteio.BigEndianReader{Reader:bytes.NewReader(in)}
branchType, _ := r.ReadByte()
totalReadN += 1
msg.BranchType = meta.BranchType(branchType)
length16, readN, _ = r.ReadUint16()
totalReadN += readN
if length16 > 0 {
msg.ResourceId, readN, _ = r.ReadString(int(length16))
totalReadN += readN
}
msg.SaveDays, readN, _ = r.ReadInt16()
totalReadN += readN
return msg,totalReadN
}