@@ -6,15 +6,17 @@ require ( | |||||
github.com/BurntSushi/toml v1.1.0 // indirect | github.com/BurntSushi/toml v1.1.0 // indirect | ||||
github.com/apache/dubbo-getty v1.4.8 | github.com/apache/dubbo-getty v1.4.8 | ||||
github.com/dubbogo/gost v1.11.23 | github.com/dubbogo/gost v1.11.23 | ||||
github.com/dubbogo/tools v1.0.9 // indirect | |||||
github.com/fagongzi/goetty v1.3.1 | github.com/fagongzi/goetty v1.3.1 | ||||
github.com/fagongzi/log v0.0.0-20170831135209-9a647df25e0e | |||||
github.com/fagongzi/util v0.0.0-20181102105153-fd38e0f42a4f | github.com/fagongzi/util v0.0.0-20181102105153-fd38e0f42a4f | ||||
github.com/golang/snappy v0.0.4 // indirect | github.com/golang/snappy v0.0.4 // indirect | ||||
github.com/kr/pretty v0.3.0 // indirect | |||||
github.com/natefinch/lumberjack v2.0.0+incompatible | github.com/natefinch/lumberjack v2.0.0+incompatible | ||||
github.com/pkg/errors v0.9.1 | github.com/pkg/errors v0.9.1 | ||||
github.com/rogpeppe/go-internal v1.8.0 // indirect | |||||
github.com/stretchr/testify v1.7.0 | |||||
go.uber.org/atomic v1.9.0 | go.uber.org/atomic v1.9.0 | ||||
go.uber.org/zap v1.19.1 | go.uber.org/zap v1.19.1 | ||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect | |||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect | gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect | ||||
vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10 | vimagination.zapto.org/byteio v0.0.0-20200222190125-d27cba0f0b10 | ||||
vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d // indirect | vimagination.zapto.org/memio v0.0.0-20200222190306-588ebc67b97d // indirect | ||||
@@ -64,7 +64,7 @@ type GettySessionParam struct { | |||||
TCPNoDelay bool `default:"true" yaml:"tcp_no_delay" json:"tcp_no_delay,omitempty"` | TCPNoDelay bool `default:"true" yaml:"tcp_no_delay" json:"tcp_no_delay,omitempty"` | ||||
TCPKeepAlive bool `default:"true" yaml:"tcp_keep_alive" json:"tcp_keep_alive,omitempty"` | TCPKeepAlive bool `default:"true" yaml:"tcp_keep_alive" json:"tcp_keep_alive,omitempty"` | ||||
KeepAlivePeriod time.Duration `default:"180" yaml:"keep_alive_period" json:"keep_alive_period,omitempty"` | KeepAlivePeriod time.Duration `default:"180" yaml:"keep_alive_period" json:"keep_alive_period,omitempty"` | ||||
CronPeriod time.Duration `default:"1" yaml:"keep_alive_period" json:"keep_alive_period,omitempty"` | |||||
CronPeriod time.Duration `default:"1" yaml:"cron_period" json:"cron_period,omitempty"` | |||||
TCPRBufSize int `default:"262144" yaml:"tcp_r_buf_size" json:"tcp_r_buf_size,omitempty"` | TCPRBufSize int `default:"262144" yaml:"tcp_r_buf_size" json:"tcp_r_buf_size,omitempty"` | ||||
TCPWBufSize int `default:"65536" yaml:"tcp_w_buf_size" json:"tcp_w_buf_size,omitempty"` | TCPWBufSize int `default:"65536" yaml:"tcp_w_buf_size" json:"tcp_w_buf_size,omitempty"` | ||||
TCPReadTimeout time.Duration `default:"1" yaml:"tcp_read_timeout" json:"tcp_read_timeout,omitempty"` | TCPReadTimeout time.Duration `default:"1" yaml:"tcp_read_timeout" json:"tcp_read_timeout,omitempty"` | ||||
@@ -27,7 +27,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &BranchRegisterRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &BranchRegisterRequestCodec{}) | |||||
} | } | ||||
type BranchRegisterRequestCodec struct { | type BranchRegisterRequestCodec struct { | ||||
@@ -0,0 +1,41 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/branch" | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestBranchRegisterRequestCodec(t *testing.T) { | |||||
msg := message.BranchRegisterRequest{ | |||||
Xid: "abc134", | |||||
ResourceId: "124", | |||||
LockKey: "a:1,b:2", | |||||
ApplicationData: []byte("abc"), | |||||
BranchType: branch.BranchTypeTCC, | |||||
} | |||||
codec := BranchRegisterRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -27,7 +27,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &BranchRegisterResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &BranchRegisterResponseCodec{}) | |||||
} | } | ||||
type BranchRegisterResponseCodec struct { | type BranchRegisterResponseCodec struct { | ||||
@@ -59,8 +59,8 @@ func (c *BranchRegisterResponseCodec) Encode(in interface{}) []byte { | |||||
buf := goetty.NewByteBuf(0) | buf := goetty.NewByteBuf(0) | ||||
resp, _ := in.(message.BranchRegisterResponse) | resp, _ := in.(message.BranchRegisterResponse) | ||||
resultCode := ReadByte(buf) | |||||
if resultCode == byte(message.ResultCodeFailed) { | |||||
buf.WriteByte(byte(resp.ResultCode)) | |||||
if resp.ResultCode == message.ResultCodeFailed { | |||||
var msg string | var msg string | ||||
if len(resp.Msg) > 128 { | if len(resp.Msg) > 128 { | ||||
msg = resp.Msg[:128] | msg = resp.Msg[:128] | ||||
@@ -72,17 +72,17 @@ func (c *BranchRegisterResponseCodec) Encode(in interface{}) []byte { | |||||
buf.WriteByte(byte(resp.TransactionExceptionCode)) | buf.WriteByte(byte(resp.TransactionExceptionCode)) | ||||
branchID := uint64(resp.BranchId) | branchID := uint64(resp.BranchId) | ||||
branchIdBytes := []byte{ | |||||
byte(branchID >> 56), | |||||
byte(branchID >> 48), | |||||
byte(branchID >> 40), | |||||
byte(branchID >> 32), | |||||
byte(branchID >> 24), | |||||
byte(branchID >> 16), | |||||
byte(branchID >> 8), | |||||
byte(branchID), | |||||
} | |||||
buf.Write(branchIdBytes) | |||||
//branchIdBytes := []byte{ | |||||
// byte(branchID >> 56), | |||||
// byte(branchID >> 48), | |||||
// byte(branchID >> 40), | |||||
// byte(branchID >> 32), | |||||
// byte(branchID >> 24), | |||||
// byte(branchID >> 16), | |||||
// byte(branchID >> 8), | |||||
// byte(branchID), | |||||
//} | |||||
buf.WriteUInt64(branchID) | |||||
return buf.RawBuf() | return buf.RawBuf() | ||||
} | } | ||||
@@ -0,0 +1,44 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/seata/seata-go/pkg/protocol/transaction" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestBranchRegisterResponseCodec(t *testing.T) { | |||||
msg := message.BranchRegisterResponse{ | |||||
AbstractTransactionResponse: message.AbstractTransactionResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "FAILED", | |||||
}, | |||||
TransactionExceptionCode: transaction.TransactionExceptionCodeUnknown, | |||||
}, | |||||
BranchId: 124356567, | |||||
} | |||||
codec := BranchRegisterResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -33,12 +33,11 @@ import ( | |||||
type CodecType byte | type CodecType byte | ||||
// TODO 待重构 | |||||
const ( | const ( | ||||
CodeTypeSeata = CodecType(0x1) | |||||
CodeTypeProtobuf = CodecType(0x2) | |||||
CodeTypeKRYO = CodecType(0x4) | |||||
CodeTypeFST = CodecType(0x8) | |||||
CodecTypeSeata = CodecType(0x1) | |||||
CodecTypeProtobuf = CodecType(0x2) | |||||
CodecTypeKRYO = CodecType(0x4) | |||||
CodecTypeFST = CodecType(0x8) | |||||
) | ) | ||||
type Codec interface { | type Codec interface { | ||||
@@ -43,25 +43,17 @@ func (c *CommonGlobalEndRequestCodec) Decode(in []byte) interface{} { | |||||
buf := goetty.NewByteBuf(len(in)) | buf := goetty.NewByteBuf(len(in)) | ||||
buf.Write(in) | buf.Write(in) | ||||
var length uint16 | |||||
var xidLen int | |||||
if buf.Readable() >= 2 { | |||||
xidLen = int(ReadUInt16(buf)) | |||||
length = ReadUInt16(buf) | |||||
if length > 0 { | |||||
bytes := make([]byte, length) | |||||
res.Xid = string(Read(buf, bytes)) | |||||
} | } | ||||
if buf.Readable() >= xidLen { | |||||
xidBytes := make([]byte, xidLen) | |||||
xidBytes = Read(buf, xidBytes) | |||||
res.Xid = string(xidBytes) | |||||
} | |||||
var extraDataLen int | |||||
if buf.Readable() >= 2 { | |||||
extraDataLen = int(ReadUInt16(buf)) | |||||
} | |||||
if buf.Readable() >= extraDataLen { | |||||
extraDataBytes := make([]byte, xidLen) | |||||
extraDataBytes = Read(buf, extraDataBytes) | |||||
res.ExtraData = extraDataBytes | |||||
length = ReadUInt16(buf) | |||||
if length > 0 { | |||||
bytes := make([]byte, length) | |||||
res.ExtraData = Read(buf, bytes) | |||||
} | } | ||||
return res | return res | ||||
@@ -80,7 +80,7 @@ func (c *AbstractIdentifyRequestCodec) Decode(in []byte) interface{} { | |||||
return msg | return msg | ||||
} | } | ||||
len = ReadUInt16(buf) | len = ReadUInt16(buf) | ||||
if len > 0 && uint16(buf.Readable()) > len { | |||||
if len > 0 && uint16(buf.Readable()) >= len { | |||||
extraDataBytes := make([]byte, len) | extraDataBytes := make([]byte, len) | ||||
msg.ExtraData = Read(buf, extraDataBytes) | msg.ExtraData = Read(buf, extraDataBytes) | ||||
} | } | ||||
@@ -26,7 +26,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalBeginRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalBeginRequestCodec{}) | |||||
} | } | ||||
type GlobalBeginRequestCodec struct { | type GlobalBeginRequestCodec struct { | ||||
@@ -0,0 +1,37 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalBeginRequestCodec(t *testing.T) { | |||||
msg := message.GlobalBeginRequest{ | |||||
Timeout: 100, | |||||
TransactionName: "SeataGoTransaction", | |||||
} | |||||
codec := GlobalBeginRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -27,7 +27,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalBeginResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalBeginResponseCodec{}) | |||||
} | } | ||||
type GlobalBeginResponseCodec struct { | type GlobalBeginResponseCodec struct { | ||||
@@ -0,0 +1,46 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/seata/seata-go/pkg/protocol/transaction" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalBeginResponseCodec(t *testing.T) { | |||||
msg := message.GlobalBeginResponse{ | |||||
AbstractTransactionResponse: message.AbstractTransactionResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "FAILED", | |||||
}, | |||||
TransactionExceptionCode: transaction.TransactionExceptionCodeBeginFailed, | |||||
}, | |||||
Xid: "test-transaction-id", | |||||
ExtraData: []byte("TestExtraData"), | |||||
} | |||||
codec := GlobalBeginResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalCommitRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalCommitRequestCodec{}) | |||||
} | } | ||||
type GlobalCommitRequestCodec struct { | type GlobalCommitRequestCodec struct { | ||||
@@ -0,0 +1,39 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalCommitRequestCodec(t *testing.T) { | |||||
msg := message.GlobalCommitRequest{ | |||||
AbstractGlobalEndRequest: message.AbstractGlobalEndRequest{ | |||||
Xid: "test-transaction-id", | |||||
ExtraData: []byte("TestExtraData"), | |||||
}, | |||||
} | |||||
codec := GlobalCommitRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalCommitResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalCommitResponseCodec{}) | |||||
} | } | ||||
type GlobalCommitResponseCodec struct { | type GlobalCommitResponseCodec struct { | ||||
@@ -37,6 +37,11 @@ func (g *GlobalCommitResponseCodec) Decode(in []byte) interface{} { | |||||
} | } | ||||
} | } | ||||
func (g *GlobalCommitResponseCodec) Encode(in interface{}) []byte { | |||||
req := in.(message.GlobalCommitResponse) | |||||
return g.CommonGlobalEndResponseCodec.Encode(req.AbstractGlobalEndResponse) | |||||
} | |||||
func (g *GlobalCommitResponseCodec) GetMessageType() message.MessageType { | func (g *GlobalCommitResponseCodec) GetMessageType() message.MessageType { | ||||
return message.MessageType_GlobalCommitResult | return message.MessageType_GlobalCommitResult | ||||
} | } |
@@ -0,0 +1,45 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/seata/seata-go/pkg/protocol/transaction" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalCommitResponseCodec(t *testing.T) { | |||||
msg := message.GlobalCommitResponse{ | |||||
AbstractGlobalEndResponse: message.AbstractGlobalEndResponse{ | |||||
AbstractTransactionResponse: message.AbstractTransactionResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "ResultCodeFailed message", | |||||
}, | |||||
}, | |||||
GlobalStatus: transaction.GlobalStatusCommitted, | |||||
}, | |||||
} | |||||
codec := GlobalCommitResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -18,7 +18,7 @@ | |||||
package codec | package codec | ||||
//func init() { | //func init() { | ||||
// GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalReportRequestCodec{}) | |||||
// GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalReportRequestCodec{}) | |||||
//} | //} | ||||
// | // | ||||
//type GlobalReportRequestCodec struct { | //type GlobalReportRequestCodec struct { |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalReportResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalReportResponseCodec{}) | |||||
} | } | ||||
type GlobalReportResponseCodec struct { | type GlobalReportResponseCodec struct { | ||||
@@ -37,6 +37,11 @@ func (g *GlobalReportResponseCodec) Decode(in []byte) interface{} { | |||||
} | } | ||||
} | } | ||||
func (g *GlobalReportResponseCodec) Encode(in interface{}) []byte { | |||||
req := in.(message.GlobalReportResponse) | |||||
return g.CommonGlobalEndResponseCodec.Encode(req.AbstractGlobalEndResponse) | |||||
} | |||||
func (g *GlobalReportResponseCodec) GetMessageType() message.MessageType { | func (g *GlobalReportResponseCodec) GetMessageType() message.MessageType { | ||||
return message.MessageType_GlobalReportResult | return message.MessageType_GlobalReportResult | ||||
} | } |
@@ -0,0 +1,45 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/seata/seata-go/pkg/protocol/transaction" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalReportResponseCodec(t *testing.T) { | |||||
msg := message.GlobalReportResponse{ | |||||
AbstractGlobalEndResponse: message.AbstractGlobalEndResponse{ | |||||
AbstractTransactionResponse: message.AbstractTransactionResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "ResultCodeFailed message", | |||||
}, | |||||
}, | |||||
GlobalStatus: transaction.GlobalStatusCommitted, | |||||
}, | |||||
} | |||||
codec := GlobalReportResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalRollbackRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalRollbackRequestCodec{}) | |||||
} | } | ||||
type GlobalRollbackRequestCodec struct { | type GlobalRollbackRequestCodec struct { | ||||
@@ -32,7 +32,7 @@ type GlobalRollbackRequestCodec struct { | |||||
func (g *GlobalRollbackRequestCodec) Decode(in []byte) interface{} { | func (g *GlobalRollbackRequestCodec) Decode(in []byte) interface{} { | ||||
req := g.CommonGlobalEndRequestCodec.Decode(in) | req := g.CommonGlobalEndRequestCodec.Decode(in) | ||||
abstractGlobalEndRequest := req.(message.AbstractGlobalEndRequest) | abstractGlobalEndRequest := req.(message.AbstractGlobalEndRequest) | ||||
return message.GlobalCommitRequest{ | |||||
return message.GlobalRollbackRequest{ | |||||
AbstractGlobalEndRequest: abstractGlobalEndRequest, | AbstractGlobalEndRequest: abstractGlobalEndRequest, | ||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,39 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalRollbackRequestCodec(t *testing.T) { | |||||
msg := message.GlobalRollbackRequest{ | |||||
AbstractGlobalEndRequest: message.AbstractGlobalEndRequest{ | |||||
Xid: "test-transaction-id", | |||||
ExtraData: []byte("TestExtraData"), | |||||
}, | |||||
} | |||||
codec := GlobalRollbackRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalRollbackResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalRollbackResponseCodec{}) | |||||
} | } | ||||
type GlobalRollbackResponseCodec struct { | type GlobalRollbackResponseCodec struct { | ||||
@@ -37,6 +37,11 @@ func (g *GlobalRollbackResponseCodec) Decode(in []byte) interface{} { | |||||
} | } | ||||
} | } | ||||
func (g *GlobalRollbackResponseCodec) Encode(in interface{}) []byte { | |||||
req := in.(message.GlobalRollbackResponse) | |||||
return g.CommonGlobalEndResponseCodec.Encode(req.AbstractGlobalEndResponse) | |||||
} | |||||
func (g *GlobalRollbackResponseCodec) GetMessageType() message.MessageType { | func (g *GlobalRollbackResponseCodec) GetMessageType() message.MessageType { | ||||
return message.MessageType_GlobalRollbackResult | return message.MessageType_GlobalRollbackResult | ||||
} | } |
@@ -0,0 +1,45 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/seata/seata-go/pkg/protocol/transaction" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalRollbackResponseCodec(t *testing.T) { | |||||
msg := message.GlobalRollbackResponse{ | |||||
AbstractGlobalEndResponse: message.AbstractGlobalEndResponse{ | |||||
AbstractTransactionResponse: message.AbstractTransactionResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "ResultCodeFailed message", | |||||
}, | |||||
}, | |||||
GlobalStatus: transaction.GlobalStatusCommitted, | |||||
}, | |||||
} | |||||
codec := GlobalRollbackResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalStatusRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalStatusRequestCodec{}) | |||||
} | } | ||||
type GlobalStatusRequestCodec struct { | type GlobalStatusRequestCodec struct { | ||||
@@ -0,0 +1,39 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalStatusRequestCodec(t *testing.T) { | |||||
msg := message.GlobalStatusRequest{ | |||||
AbstractGlobalEndRequest: message.AbstractGlobalEndRequest{ | |||||
Xid: "test-transaction-id", | |||||
ExtraData: []byte("TestExtraData"), | |||||
}, | |||||
} | |||||
codec := GlobalStatusRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &GlobalStatusResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &GlobalStatusResponseCodec{}) | |||||
} | } | ||||
type GlobalStatusResponseCodec struct { | type GlobalStatusResponseCodec struct { | ||||
@@ -37,6 +37,11 @@ func (g *GlobalStatusResponseCodec) Decode(in []byte) interface{} { | |||||
} | } | ||||
} | } | ||||
func (g *GlobalStatusResponseCodec) Encode(in interface{}) []byte { | |||||
req := in.(message.GlobalStatusResponse) | |||||
return g.CommonGlobalEndResponseCodec.Encode(req.AbstractGlobalEndResponse) | |||||
} | |||||
func (g *GlobalStatusResponseCodec) GetMessageType() message.MessageType { | func (g *GlobalStatusResponseCodec) GetMessageType() message.MessageType { | ||||
return message.MessageType_GlobalStatusResult | return message.MessageType_GlobalStatusResult | ||||
} | } |
@@ -0,0 +1,45 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/seata/seata-go/pkg/protocol/transaction" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestGlobalStatusResponseCodec(t *testing.T) { | |||||
msg := message.GlobalStatusResponse{ | |||||
AbstractGlobalEndResponse: message.AbstractGlobalEndResponse{ | |||||
AbstractTransactionResponse: message.AbstractTransactionResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "ResultCodeFailed message", | |||||
}, | |||||
}, | |||||
GlobalStatus: transaction.GlobalStatusCommitted, | |||||
}, | |||||
} | |||||
codec := GlobalStatusResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -26,7 +26,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &RegisterRMRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &RegisterRMRequestCodec{}) | |||||
} | } | ||||
type RegisterRMRequestCodec struct { | type RegisterRMRequestCodec struct { | ||||
@@ -78,7 +78,7 @@ func (c *RegisterRMRequestCodec) Encode(in interface{}) []byte { | |||||
Write16String(req.ApplicationId, buf) | Write16String(req.ApplicationId, buf) | ||||
Write16String(req.TransactionServiceGroup, buf) | Write16String(req.TransactionServiceGroup, buf) | ||||
Write16String(string(req.ExtraData), buf) | Write16String(string(req.ExtraData), buf) | ||||
Write16String(req.ResourceIds, buf) | |||||
Write32String(req.ResourceIds, buf) | |||||
return buf.RawBuf() | return buf.RawBuf() | ||||
} | } | ||||
@@ -0,0 +1,42 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestRegisterRMRequestCodec(t *testing.T) { | |||||
msg := message.RegisterRMRequest{ | |||||
AbstractIdentifyRequest: message.AbstractIdentifyRequest{ | |||||
Version: "V1,0", | |||||
ApplicationId: "TestApplicationId", | |||||
TransactionServiceGroup: "TestTransactionServiceGroup", | |||||
ExtraData: []byte("TestExtraData"), | |||||
}, | |||||
ResourceIds: "TestResourceIds", | |||||
} | |||||
codec := RegisterRMRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &RegisterRMResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &RegisterRMResponseCodec{}) | |||||
} | } | ||||
type RegisterRMResponseCodec struct { | type RegisterRMResponseCodec struct { | ||||
@@ -37,6 +37,11 @@ func (g *RegisterRMResponseCodec) Decode(in []byte) interface{} { | |||||
} | } | ||||
} | } | ||||
func (c *RegisterRMResponseCodec) Encode(in interface{}) []byte { | |||||
resp := in.(message.RegisterRMResponse) | |||||
return c.AbstractIdentifyResponseCodec.Encode(resp.AbstractIdentifyResponse) | |||||
} | |||||
func (g *RegisterRMResponseCodec) GetMessageType() message.MessageType { | func (g *RegisterRMResponseCodec) GetMessageType() message.MessageType { | ||||
return message.MessageType_RegRmResult | return message.MessageType_RegRmResult | ||||
} | } |
@@ -0,0 +1,44 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestRegisterRMResponseCodec(t *testing.T) { | |||||
msg := message.RegisterRMResponse{ | |||||
AbstractIdentifyResponse: message.AbstractIdentifyResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
//Msg: "TestMsg", | |||||
}, | |||||
Version: "V1,0", | |||||
Identified: false, | |||||
}, | |||||
} | |||||
codec := RegisterRMResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg.Identified, msg2.(message.RegisterRMResponse).Identified) | |||||
assert.Equal(t, msg.Version, msg2.(message.RegisterRMResponse).Version) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &RegisterTMRequestCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &RegisterTMRequestCodec{}) | |||||
} | } | ||||
type RegisterTMRequestCodec struct { | type RegisterTMRequestCodec struct { | ||||
@@ -0,0 +1,41 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestRegisterTMRequestCodec(t *testing.T) { | |||||
msg := message.RegisterTMRequest{ | |||||
AbstractIdentifyRequest: message.AbstractIdentifyRequest{ | |||||
Version: "V1,0", | |||||
ApplicationId: "TestApplicationId", | |||||
TransactionServiceGroup: "TestTransactionServiceGroup", | |||||
ExtraData: []byte("TestExtraData"), | |||||
}, | |||||
} | |||||
codec := RegisterTMRequestCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -22,7 +22,7 @@ import ( | |||||
) | ) | ||||
func init() { | func init() { | ||||
GetCodecManager().RegisterCodec(CodeTypeSeata, &RegisterTMResponseCodec{}) | |||||
GetCodecManager().RegisterCodec(CodecTypeSeata, &RegisterTMResponseCodec{}) | |||||
} | } | ||||
type RegisterTMResponseCodec struct { | type RegisterTMResponseCodec struct { | ||||
@@ -0,0 +1,45 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package codec | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestRegisterTMResponseCodec(t *testing.T) { | |||||
msg := message.RegisterTMResponse{ | |||||
AbstractIdentifyResponse: message.AbstractIdentifyResponse{ | |||||
AbstractResultMessage: message.AbstractResultMessage{ | |||||
ResultCode: message.ResultCodeFailed, | |||||
Msg: "TestMsg", | |||||
}, | |||||
ExtraData: []byte("TestExtraData"), | |||||
Version: "V1,0", | |||||
Identified: false, | |||||
}, | |||||
} | |||||
codec := RegisterTMResponseCodec{} | |||||
bytes := codec.Encode(msg) | |||||
msg2 := codec.Decode(bytes) | |||||
assert.Equal(t, msg.Identified, msg2.(message.RegisterTMResponse).Identified) | |||||
assert.Equal(t, msg.Version, msg2.(message.RegisterTMResponse).Version) | |||||
} |
@@ -61,7 +61,7 @@ type ResourceManager interface { | |||||
// Unregister a Resource from the Resource Manager | // Unregister a Resource from the Resource Manager | ||||
UnregisterResource(resource Resource) error | UnregisterResource(resource Resource) error | ||||
// Get all resources managed by this manager | // Get all resources managed by this manager | ||||
GetManagedResources() sync.Map | |||||
GetManagedResources() *sync.Map | |||||
// Get the BranchType | // Get the BranchType | ||||
GetBranchType() branch.BranchType | GetBranchType() branch.BranchType | ||||
} | } | ||||
@@ -61,7 +61,7 @@ func (client *GettyRemotingClient) SendAsyncRequest(msg interface{}) error { | |||||
rpcMessage := message.RpcMessage{ | rpcMessage := message.RpcMessage{ | ||||
ID: int32(client.idGenerator.Inc()), | ID: int32(client.idGenerator.Inc()), | ||||
Type: msgType, | Type: msgType, | ||||
Codec: byte(codec.CodeTypeSeata), | |||||
Codec: byte(codec.CodecTypeSeata), | |||||
Compressor: 0, | Compressor: 0, | ||||
Body: msg, | Body: msg, | ||||
} | } | ||||
@@ -72,7 +72,7 @@ func (client *GettyRemotingClient) SendAsyncResponse(msg interface{}) error { | |||||
rpcMessage := message.RpcMessage{ | rpcMessage := message.RpcMessage{ | ||||
ID: int32(client.idGenerator.Inc()), | ID: int32(client.idGenerator.Inc()), | ||||
Type: message.GettyRequestType_Response, | Type: message.GettyRequestType_Response, | ||||
Codec: byte(codec.CodeTypeSeata), | |||||
Codec: byte(codec.CodecTypeSeata), | |||||
Compressor: 0, | Compressor: 0, | ||||
Body: msg, | Body: msg, | ||||
} | } | ||||
@@ -83,7 +83,7 @@ func (client *GettyRemotingClient) SendSyncRequest(msg interface{}) (interface{} | |||||
rpcMessage := message.RpcMessage{ | rpcMessage := message.RpcMessage{ | ||||
ID: int32(client.idGenerator.Inc()), | ID: int32(client.idGenerator.Inc()), | ||||
Type: message.GettyRequestType_RequestSync, | Type: message.GettyRequestType_RequestSync, | ||||
Codec: byte(codec.CodeTypeSeata), | |||||
Codec: byte(codec.CodecTypeSeata), | |||||
Compressor: 0, | Compressor: 0, | ||||
Body: msg, | Body: msg, | ||||
} | } | ||||
@@ -94,7 +94,7 @@ func (client *GettyRemotingClient) SendSyncRequestWithTimeout(msg interface{}, t | |||||
rpcMessage := message.RpcMessage{ | rpcMessage := message.RpcMessage{ | ||||
ID: int32(client.idGenerator.Inc()), | ID: int32(client.idGenerator.Inc()), | ||||
Type: message.GettyRequestType_RequestSync, | Type: message.GettyRequestType_RequestSync, | ||||
Codec: byte(codec.CodeTypeSeata), | |||||
Codec: byte(codec.CodecTypeSeata), | |||||
Compressor: 0, | Compressor: 0, | ||||
Body: msg, | Body: msg, | ||||
} | } | ||||
@@ -0,0 +1,50 @@ | |||||
/* | |||||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||||
* contributor license agreements. See the NOTICE file distributed with | |||||
* this work for additional information regarding copyright ownership. | |||||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
* (the "License"); you may not use this file except in compliance with | |||||
* the License. You may obtain a copy of the License at | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* Unless required by applicable law or agreed to in writing, software | |||||
* distributed under the License is distributed on an "AS IS" BASIS, | |||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
* See the License for the specific language governing permissions and | |||||
* limitations under the License. | |||||
*/ | |||||
package getty | |||||
import ( | |||||
"github.com/seata/seata-go/pkg/protocol/codec" | |||||
"github.com/seata/seata-go/pkg/protocol/message" | |||||
"github.com/stretchr/testify/assert" | |||||
"testing" | |||||
) | |||||
func TestRpcPackageHandler(t *testing.T) { | |||||
msg := message.RpcMessage{ | |||||
ID: 1123, | |||||
Type: message.GettyRequestType_RequestSync, | |||||
Codec: byte(codec.CodecTypeSeata), | |||||
Compressor: byte(1), | |||||
HeadMap: map[string]string{ | |||||
"name": " Jack", | |||||
"age": "12", | |||||
"address": "Beijing", | |||||
}, | |||||
Body: message.GlobalBeginRequest{ | |||||
Timeout: 100, | |||||
TransactionName: "SeataGoTransaction", | |||||
}, | |||||
} | |||||
codec := RpcPackageHandler{} | |||||
bytes, err := codec.Write(nil, msg) | |||||
assert.Nil(t, err) | |||||
msg2, _, _ := codec.Read(nil, bytes) | |||||
assert.Equal(t, msg, msg2) | |||||
} |
@@ -97,8 +97,8 @@ func (d *ResourceManager) UnregisterResource(resource resource.Resource) error { | |||||
} | } | ||||
// Get all resources managed by this manager | // Get all resources managed by this manager | ||||
func (d *ResourceManager) GetManagedResources() sync.Map { | |||||
return resourceManagerMap | |||||
func (d *ResourceManager) GetManagedResources() *sync.Map { | |||||
return &resourceManagerMap | |||||
} | } | ||||
// Get the model.BranchType | // Get the model.BranchType | ||||
@@ -120,8 +120,8 @@ func (t *TCCResourceManager) RegisterResource(resource resource.Resource) error | |||||
return t.rmRemoting.RegisterResource(resource) | return t.rmRemoting.RegisterResource(resource) | ||||
} | } | ||||
func (t *TCCResourceManager) GetManagedResources() sync.Map { | |||||
return t.resourceManagerMap | |||||
func (t *TCCResourceManager) GetManagedResources() *sync.Map { | |||||
return &t.resourceManagerMap | |||||
} | } | ||||
// Commit a branch transaction | // Commit a branch transaction | ||||