Skip to content

Commit

Permalink
feat: add some message type
Browse files Browse the repository at this point in the history
Signed-off-by: ZhangJian He <shoothzj@gmail.com>
  • Loading branch information
shoothzj committed Sep 16, 2024
1 parent 67b45e4 commit 754974c
Show file tree
Hide file tree
Showing 27 changed files with 584 additions and 25 deletions.
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/shoothzj/gox v0.0.4-0.20240916070027-2e4a2098d749 h1:yytTUCM7e17ADriGwcEaWdQ63ocmsdDGH+Qj979gNF8=
github.com/shoothzj/gox v0.0.4-0.20240916070027-2e4a2098d749/go.mod h1:JrD7u6Tem/9Ut4o0kQNK+aZkMWCba/d9VeabBZSEDT4=
github.com/shoothzj/gox v0.0.4-0.20240916105254-02a0a7039d5d h1:oUVTx1ezGfBFkfRb192K+FFRAjjBX5u58qkbXEHfTdo=
github.com/shoothzj/gox v0.0.4-0.20240916105254-02a0a7039d5d/go.mod h1:JrD7u6Tem/9Ut4o0kQNK+aZkMWCba/d9VeabBZSEDT4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
Expand Down
3 changes: 2 additions & 1 deletion opcua/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ const (
LenMessageSize = 4
LenMessageType = 3
LenReceiveBufferSize = 4
LenRequestId = 4
LenSendBufferSize = 4
LenStringLen = 4
LenSequenceNumber = 4
LenVersion = 4
)
16 changes: 8 additions & 8 deletions opcua/message_acknowledge.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,29 @@ type MessageAcknowledge struct {
MaxChunkCount uint32
}

func DecodeMessageAcknowledge(buf *buffer.Buffer) (resp *MessageAcknowledge, err error) {
resp = &MessageAcknowledge{}
resp.Version, err = buf.ReadUInt32Le()
func DecodeMessageAcknowledge(buf *buffer.Buffer) (msg *MessageAcknowledge, err error) {
msg = &MessageAcknowledge{}
msg.Version, err = buf.ReadUInt32Le()
if err != nil {
return nil, err
}
resp.ReceiveBufferSize, err = buf.ReadUInt32Le()
msg.ReceiveBufferSize, err = buf.ReadUInt32Le()
if err != nil {
return nil, err
}
resp.SendBufferSize, err = buf.ReadUInt32Le()
msg.SendBufferSize, err = buf.ReadUInt32Le()
if err != nil {
return nil, err
}
resp.MaxMessageSize, err = buf.ReadUInt32Le()
msg.MaxMessageSize, err = buf.ReadUInt32Le()
if err != nil {
return nil, err
}
resp.MaxChunkCount, err = buf.ReadUInt32Le()
msg.MaxChunkCount, err = buf.ReadUInt32Le()
if err != nil {
return nil, err
}
return resp, nil
return msg, nil
}

func (m *MessageAcknowledge) Length() int {
Expand Down
30 changes: 30 additions & 0 deletions opcua/message_browse_req.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageBrowseReq struct {
}

func DecodeMessageBrowseReq(buf *buffer.Buffer) (msg *MessageBrowseReq, err error) {
msg = &MessageBrowseReq{}
return msg, nil
}

func (m *MessageBrowseReq) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageBrowseReq) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'M', 'S', 'G'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
return buf, nil
}
19 changes: 19 additions & 0 deletions opcua/message_browse_req_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package opcua

import (
"github.com/shoothzj/gox/testx"
"github.com/stretchr/testify/require"
"testing"
)

func TestDecodeMessageBrowseReq(t *testing.T) {
buffer := testx.Hex2Buffer(t, "4d534746870000000200000001000000c8000000c800000001000f020500002000000048cce1823313199f88bb583a480954a576d4fae160deef9bf25daa6e50bfbc39f6c9be3815fcda01c800000000000000ffffffffa00f00000000000000000000000000000000000000000000000100000001000f3d00000000002d01000000003f000000")
err := buffer.Skip(8)
require.Nil(t, err)
}

func TestEncodeMessageBrowseReq(t *testing.T) {
msg := &MessageBrowseReq{}
_, err := msg.Buffer()
require.Nil(t, err)
}
30 changes: 30 additions & 0 deletions opcua/message_browse_resp.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageBrowseResp struct {
}

func DecodeMessageBrowseResp(buf *buffer.Buffer) (msg *MessageBrowseResp, err error) {
msg = &MessageBrowseResp{}
return msg, nil
}

func (m *MessageBrowseResp) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageBrowseResp) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'M', 'S', 'G'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
return buf, nil
}
19 changes: 19 additions & 0 deletions opcua/message_browse_resp_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package opcua

import (
"github.com/shoothzj/gox/testx"
"github.com/stretchr/testify/require"
"testing"
)

func TestDecodeMessageBrowseResp(t *testing.T) {
buffer := testx.Hex2Buffer(t, "4d534746480000000200000001000000fb030000c500000001001202b0c4be3815fcda01c50000000000000000ffffffff0000000100000000000000ffffffff00000000ffffffff")
err := buffer.Skip(8)
require.Nil(t, err)
}

func TestEncodeMessageBrowseResp(t *testing.T) {
msg := &MessageBrowseResp{}
_, err := msg.Buffer()
require.Nil(t, err)
}
34 changes: 34 additions & 0 deletions opcua/message_close_secure_channel.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageCloseSecureChannel struct {
SecureChannelId uint32
}

func DecodeMessageCloseSecureChannel(buf *buffer.Buffer) (msg *MessageCloseSecureChannel, err error) {
msg = &MessageCloseSecureChannel{}
return msg, nil
}

func (m *MessageCloseSecureChannel) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageCloseSecureChannel) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'C', 'L', 'O'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
if err := buf.PutUInt32Le(uint32(m.Length())); err != nil {
return nil, err
}
return buf, nil
}
19 changes: 19 additions & 0 deletions opcua/message_close_secure_channel_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package opcua

import (
"github.com/shoothzj/gox/testx"
"github.com/stretchr/testify/require"
"testing"
)

func TestDecodeMessageCloseSecureChannel(t *testing.T) {
buffer := testx.Hex2Buffer(t, "4d5347465f0000000200000001000000e6000000e60000000100d9010500002000000048cce1823313199f88bb583a480954a576d4fae160deef9bf25daa6e50bfbc396ee1343d15fcda01e600000000000000ffffffffa00f000000000001")
err := buffer.Skip(8)
require.Nil(t, err)
}

func TestEncodeMessageCloseSecureChannel(t *testing.T) {
msg := &MessageCloseSecureChannel{}
_, err := msg.Buffer()
require.Nil(t, err)
}
30 changes: 30 additions & 0 deletions opcua/message_close_session_req.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageCloseSessionReq struct {
}

func DecodeMessageCloseSessionReq(buf *buffer.Buffer) (msg *MessageCloseSessionReq, err error) {
msg = &MessageCloseSessionReq{}
return msg, nil
}

func (m *MessageCloseSessionReq) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageCloseSessionReq) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'M', 'S', 'G'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
return buf, nil
}
19 changes: 19 additions & 0 deletions opcua/message_close_session_req_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package opcua

import (
"github.com/shoothzj/gox/testx"
"github.com/stretchr/testify/require"
"testing"
)

func TestDecodeMessageCloseSessionReq(t *testing.T) {
buffer := testx.Hex2Buffer(t, "4d5347465f0000000200000001000000e6000000e60000000100d9010500002000000048cce1823313199f88bb583a480954a576d4fae160deef9bf25daa6e50bfbc396ee1343d15fcda01e600000000000000ffffffffa00f000000000001")
err := buffer.Skip(8)
require.Nil(t, err)
}

func TestEncodeMessageCloseSessionReq(t *testing.T) {
msg := &MessageCloseSessionReq{}
_, err := msg.Buffer()
require.Nil(t, err)
}
30 changes: 30 additions & 0 deletions opcua/message_close_session_resp.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageCloseSessionResp struct {
}

func DecodeMessageCloseSessionResp(buf *buffer.Buffer) (msg *MessageCloseSessionResp, err error) {
msg = &MessageCloseSessionResp{}
return msg, nil
}

func (m *MessageCloseSessionResp) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageCloseSessionResp) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'M', 'S', 'G'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
return buf, nil
}
19 changes: 19 additions & 0 deletions opcua/message_close_session_resp_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package opcua

import (
"github.com/shoothzj/gox/testx"
"github.com/stretchr/testify/require"
"testing"
)

func TestDecodeMessageCloseSessionResp(t *testing.T) {
buffer := testx.Hex2Buffer(t, "1e00000060090900005406400000000000000000000000000000000100000000000000000000000000000001d11afd7da59b38d0e146c88b801816eb005c00000101080a1f86fec7f584f6454d5347463400000002000000010000001c040000e60000000100dc01c07f353d15fcda01e60000000000000000ffffffff000000")
err := buffer.Skip(8)
require.Nil(t, err)
}

func TestEncodeMessageCloseSessionResp(t *testing.T) {
msg := &MessageCloseSessionResp{}
_, err := msg.Buffer()
require.Nil(t, err)
}
30 changes: 30 additions & 0 deletions opcua/message_create_session_req.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageCreateSessionReq struct {
}

func DecodeMessageCreateSessionReq(buf *buffer.Buffer) (msg *MessageCreateSessionReq, err error) {
msg = &MessageCreateSessionReq{}
return msg, nil
}

func (m *MessageCreateSessionReq) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageCreateSessionReq) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'M', 'S', 'G'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
return buf, nil
}
19 changes: 19 additions & 0 deletions opcua/message_create_session_req_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package opcua

import (
"github.com/shoothzj/gox/testx"
"github.com/stretchr/testify/require"
"testing"
)

func TestDecodeMessageCreateSessionReq(t *testing.T) {
buffer := testx.Hex2Buffer(t, "4d5347464c010000020000000100000002000000020000000100cd010000700fb43815fcda010200000000000000ffffffffa00f00000000001800000075726e3a667265656f706375613a636c69656e742d6775691e00000075726e3a667265656f706375612e6769746875622e696f3a636c69656e7402190000005075726520507974686f6e204173796e632e20436c69656e7401000000ffffffffffffffff00000000ffffffff450000006f70632e7463703a2f2f68657a68616e676a69616e64654d6163426f6f6b2d50726f2e6c6f63616c3a35333533302f4f504355412f53696d756c6174696f6e536572766572220000005075726520507974686f6e204173796e632e20436c69656e742053657373696f6e3120000000a06ee593955cb82598cb5e9950a3f7634642941823761b762323ef23f9cc805effffffff0000000040774b4100000000")
err := buffer.Skip(8)
require.Nil(t, err)
}

func TestEncodeMessageCreateSessionReq(t *testing.T) {
msg := &MessageCreateSessionReq{}
_, err := msg.Buffer()
require.Nil(t, err)
}
30 changes: 30 additions & 0 deletions opcua/message_get_endpoints_req.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package opcua

import "github.com/shoothzj/gox/buffer"

type MessageGetEndpointsReq struct {
}

func DecodeMessageGetEndpointsReq(buf *buffer.Buffer) (msg *MessageGetEndpointsReq, err error) {
msg = &MessageGetEndpointsReq{}
return msg, nil
}

func (m *MessageGetEndpointsReq) Length() int {
length := 0
length += LenMessageType
length += LenChunkType
length += LenMessageSize
return length
}

func (m *MessageGetEndpointsReq) Buffer() (*buffer.Buffer, error) {
buf := buffer.NewBuffer(m.Length())
if _, err := buf.Write([]byte{'M', 'S', 'G'}); err != nil {
return nil, err
}
if _, err := buf.Write([]byte{'F'}); err != nil {
return nil, err
}
return buf, nil
}
Loading

0 comments on commit 754974c

Please sign in to comment.