Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
neoppod
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
neoppod
Commits
c2a1b63a
Commit
c2a1b63a
authored
Jun 09, 2017
by
Kirill Smelkov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
X naming: Packet = raw data; Message = meaningful object
Message can be delivered encoded in a packet.
parent
b13e8150
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
552 additions
and
555 deletions
+552
-555
go/neo/cluster_test.go
go/neo/cluster_test.go
+6
-0
go/neo/connection.go
go/neo/connection.go
+8
-8
go/neo/connection_test.go
go/neo/connection_test.go
+59
-70
go/neo/pkt.go
go/neo/pkt.go
+3
-1
go/neo/proto-marshal.go
go/neo/proto-marshal.go
+367
-367
go/neo/proto.go
go/neo/proto.go
+15
-15
go/neo/proto_test.go
go/neo/proto_test.go
+27
-27
go/neo/protogen.go
go/neo/protogen.go
+36
-36
go/neo/server/master.go
go/neo/server/master.go
+5
-5
go/neo/server/storage.go
go/neo/server/storage.go
+2
-2
go/neo/x_connection.go
go/neo/x_connection.go
+24
-24
No files found.
go/neo/cluster_test.go
View file @
c2a1b63a
...
@@ -53,6 +53,9 @@ func xfs1stor(net Network, path string) (*server.Storage, *fs1.FileStorage) {
...
@@ -53,6 +53,9 @@ func xfs1stor(net Network, path string) (*server.Storage, *fs1.FileStorage) {
// M drives cluster with 1 S through recovery -> verification -> service -> shutdown
// M drives cluster with 1 S through recovery -> verification -> service -> shutdown
func
TestMasterStorage
(
t
*
testing
.
T
)
{
func
TestMasterStorage
(
t
*
testing
.
T
)
{
// XXX temp disabled
return
net
:=
NetPipe
(
""
)
// test network FIXME New registers to global table
net
:=
NetPipe
(
""
)
// test network FIXME New registers to global table
M
:=
server
.
NewMaster
(
"abc1"
)
M
:=
server
.
NewMaster
(
"abc1"
)
S
,
_
:=
xfs1stor
(
net
,
"../zodb/storage/fs1/testdata/1.fs"
)
// XXX +readonly
S
,
_
:=
xfs1stor
(
net
,
"../zodb/storage/fs1/testdata/1.fs"
)
// XXX +readonly
...
@@ -70,6 +73,9 @@ func TestMasterStorage(t *testing.T) {
...
@@ -70,6 +73,9 @@ func TestMasterStorage(t *testing.T) {
// basic interaction between Client -- Storage
// basic interaction between Client -- Storage
func
TestClientStorage
(
t
*
testing
.
T
)
{
func
TestClientStorage
(
t
*
testing
.
T
)
{
// XXX temp disabled
return
Cnl
,
Snl
:=
NodeLinkPipe
()
Cnl
,
Snl
:=
NodeLinkPipe
()
wg
:=
WorkGroup
()
wg
:=
WorkGroup
()
...
...
go/neo/connection.go
View file @
c2a1b63a
...
@@ -297,7 +297,7 @@ func (nl *NodeLink) Accept() (c *Conn, err error) {
...
@@ -297,7 +297,7 @@ func (nl *NodeLink) Accept() (c *Conn, err error) {
}
}
}
}
// errRecvShutdown returns appropriate error when c.down is found ready in
Recv
// errRecvShutdown returns appropriate error when c.down is found ready in
recvPkt
func
(
c
*
Conn
)
errRecvShutdown
()
error
{
func
(
c
*
Conn
)
errRecvShutdown
()
error
{
switch
{
switch
{
case
atomic
.
LoadUint32
(
&
c
.
closed
)
!=
0
:
case
atomic
.
LoadUint32
(
&
c
.
closed
)
!=
0
:
...
@@ -323,8 +323,8 @@ func (c *Conn) errRecvShutdown() error {
...
@@ -323,8 +323,8 @@ func (c *Conn) errRecvShutdown() error {
}
}
}
}
//
Recv receives
packet from connection
//
recvPkt receives raw
packet from connection
func
(
c
*
Conn
)
Recv
()
(
*
PktBuf
,
error
)
{
func
(
c
*
Conn
)
recvPkt
()
(
*
PktBuf
,
error
)
{
select
{
select
{
case
<-
c
.
down
:
case
<-
c
.
down
:
return
nil
,
c
.
err
(
"recv"
,
c
.
errRecvShutdown
())
return
nil
,
c
.
err
(
"recv"
,
c
.
errRecvShutdown
())
...
@@ -441,13 +441,13 @@ func (c *Conn) errSendShutdown() error {
...
@@ -441,13 +441,13 @@ func (c *Conn) errSendShutdown() error {
}
}
}
}
//
Send sends
packet via connection
//
sendPkt sends raw
packet via connection
func
(
c
*
Conn
)
Send
(
pkt
*
PktBuf
)
error
{
func
(
c
*
Conn
)
sendPkt
(
pkt
*
PktBuf
)
error
{
err
:=
c
.
send
(
pkt
)
err
:=
c
.
send
Pkt2
(
pkt
)
return
c
.
err
(
"send"
,
err
)
return
c
.
err
(
"send"
,
err
)
}
}
func
(
c
*
Conn
)
send
(
pkt
*
PktBuf
)
error
{
func
(
c
*
Conn
)
send
Pkt2
(
pkt
*
PktBuf
)
error
{
// set pkt connId associated with this connection
// set pkt connId associated with this connection
pkt
.
Header
()
.
ConnId
=
hton32
(
c
.
connId
)
pkt
.
Header
()
.
ConnId
=
hton32
(
c
.
connId
)
var
err
error
var
err
error
...
@@ -541,7 +541,7 @@ func (nl *NodeLink) recvPkt() (*PktBuf, error) {
...
@@ -541,7 +541,7 @@ func (nl *NodeLink) recvPkt() (*PktBuf, error) {
// first read to read pkt header and hopefully up to page of data in 1 syscall
// first read to read pkt header and hopefully up to page of data in 1 syscall
pkt
:=
&
PktBuf
{
make
([]
byte
,
4096
)}
pkt
:=
&
PktBuf
{
make
([]
byte
,
4096
)}
// TODO reenable, but NOTE next packet can be also prefetched here -> use buffering ?
// TODO reenable, but NOTE next packet can be also prefetched here -> use buffering ?
//n, err := io.ReadAtLeast(nl.peerLink, p
kt
.Data, PktHeadLen)
//n, err := io.ReadAtLeast(nl.peerLink, p
tb
.Data, PktHeadLen)
n
,
err
:=
io
.
ReadFull
(
nl
.
peerLink
,
pkt
.
Data
[
:
PktHeadLen
])
n
,
err
:=
io
.
ReadFull
(
nl
.
peerLink
,
pkt
.
Data
[
:
PktHeadLen
])
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
...
go/neo/connection_test.go
View file @
c2a1b63a
...
@@ -72,24 +72,13 @@ func xaccept(nl *NodeLink) *Conn {
...
@@ -72,24 +72,13 @@ func xaccept(nl *NodeLink) *Conn {
return
c
return
c
}
}
func
xsend
(
c
*
Conn
,
pkt
*
PktBuf
)
{
func
xsend
Pkt
(
c
interface
{
sendPkt
(
*
PktBuf
)
error
}
,
pkt
*
PktBuf
)
{
err
:=
c
.
Send
(
pkt
)
err
:=
c
.
sendPkt
(
pkt
)
exc
.
Raiseif
(
err
)
exc
.
Raiseif
(
err
)
}
}
func
xrecv
(
c
*
Conn
)
*
PktBuf
{
func
xrecvPkt
(
c
interface
{
recvPkt
()
(
*
PktBuf
,
error
)
})
*
PktBuf
{
pkt
,
err
:=
c
.
Recv
()
pkt
,
err
:=
c
.
recvPkt
()
exc
.
Raiseif
(
err
)
return
pkt
}
func
xsendPkt
(
nl
*
NodeLink
,
pkt
*
PktBuf
)
{
err
:=
nl
.
sendPkt
(
pkt
)
exc
.
Raiseif
(
err
)
}
func
xrecvPkt
(
nl
*
NodeLink
)
*
PktBuf
{
pkt
,
err
:=
nl
.
recvPkt
()
exc
.
Raiseif
(
err
)
exc
.
Raiseif
(
err
)
return
pkt
return
pkt
}
}
...
@@ -134,7 +123,7 @@ func _mkpkt(connid uint32, msgcode uint16, payload []byte) *PktBuf {
...
@@ -134,7 +123,7 @@ func _mkpkt(connid uint32, msgcode uint16, payload []byte) *PktBuf {
}
}
func
mkpkt
(
msgcode
uint16
,
payload
[]
byte
)
*
PktBuf
{
func
mkpkt
(
msgcode
uint16
,
payload
[]
byte
)
*
PktBuf
{
// in Conn exchange connid is automatically set by Conn.
Send
// in Conn exchange connid is automatically set by Conn.
sendPkt
return
_mkpkt
(
0
,
msgcode
,
payload
)
return
_mkpkt
(
0
,
msgcode
,
payload
)
}
}
...
@@ -300,7 +289,7 @@ func TestNodeLink(t *testing.T) {
...
@@ -300,7 +289,7 @@ func TestNodeLink(t *testing.T) {
// Test connections on top of nodelink
// Test connections on top of nodelink
// Close vs
Recv
// Close vs
recvPkt
nl1
,
nl2
=
_nodeLinkPipe
(
0
,
linkNoRecvSend
)
nl1
,
nl2
=
_nodeLinkPipe
(
0
,
linkNoRecvSend
)
c
=
xnewconn
(
nl1
)
c
=
xnewconn
(
nl1
)
wg
=
WorkGroup
()
wg
=
WorkGroup
()
...
@@ -308,15 +297,15 @@ func TestNodeLink(t *testing.T) {
...
@@ -308,15 +297,15 @@ func TestNodeLink(t *testing.T) {
tdelay
()
tdelay
()
xclose
(
c
)
xclose
(
c
)
})
})
pkt
,
err
=
c
.
Recv
()
pkt
,
err
=
c
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrClosedConn
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrClosedConn
)
{
t
.
Fatalf
(
"Conn.
Recv
() after close: pkt = %v err = %v"
,
pkt
,
err
)
t
.
Fatalf
(
"Conn.
recvPkt
() after close: pkt = %v err = %v"
,
pkt
,
err
)
}
}
xwait
(
wg
)
xwait
(
wg
)
xclose
(
nl1
)
xclose
(
nl1
)
xclose
(
nl2
)
xclose
(
nl2
)
// Close vs
Send
// Close vs
sendPkt
nl1
,
nl2
=
_nodeLinkPipe
(
0
,
linkNoRecvSend
)
nl1
,
nl2
=
_nodeLinkPipe
(
0
,
linkNoRecvSend
)
c
=
xnewconn
(
nl1
)
c
=
xnewconn
(
nl1
)
wg
=
WorkGroup
()
wg
=
WorkGroup
()
...
@@ -325,27 +314,27 @@ func TestNodeLink(t *testing.T) {
...
@@ -325,27 +314,27 @@ func TestNodeLink(t *testing.T) {
xclose
(
c
)
xclose
(
c
)
})
})
pkt
=
&
PktBuf
{[]
byte
(
"data"
)}
pkt
=
&
PktBuf
{[]
byte
(
"data"
)}
err
=
c
.
Send
(
pkt
)
err
=
c
.
sendPkt
(
pkt
)
if
xconnError
(
err
)
!=
ErrClosedConn
{
if
xconnError
(
err
)
!=
ErrClosedConn
{
t
.
Fatalf
(
"Conn.
Send
() after close: err = %v"
,
err
)
t
.
Fatalf
(
"Conn.
sendPkt
() after close: err = %v"
,
err
)
}
}
xwait
(
wg
)
xwait
(
wg
)
// NodeLink.Close vs Conn.
Send/Recv
// NodeLink.Close vs Conn.
sendPkt/recvPkt
c11
:=
xnewconn
(
nl1
)
c11
:=
xnewconn
(
nl1
)
c12
:=
xnewconn
(
nl1
)
c12
:=
xnewconn
(
nl1
)
wg
=
WorkGroup
()
wg
=
WorkGroup
()
wg
.
Gox
(
func
()
{
wg
.
Gox
(
func
()
{
pkt
,
err
:=
c11
.
Recv
()
pkt
,
err
:=
c11
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrLinkClosed
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrLinkClosed
)
{
exc
.
Raisef
(
"Conn.
Recv
() after NodeLink close: pkt = %v err = %v"
,
pkt
,
err
)
exc
.
Raisef
(
"Conn.
recvPkt
() after NodeLink close: pkt = %v err = %v"
,
pkt
,
err
)
}
}
})
})
wg
.
Gox
(
func
()
{
wg
.
Gox
(
func
()
{
pkt
:=
&
PktBuf
{[]
byte
(
"data"
)}
pkt
:=
&
PktBuf
{[]
byte
(
"data"
)}
err
:=
c12
.
Send
(
pkt
)
err
:=
c12
.
sendPkt
(
pkt
)
if
xconnError
(
err
)
!=
ErrLinkClosed
{
if
xconnError
(
err
)
!=
ErrLinkClosed
{
exc
.
Raisef
(
"Conn.
Send
() after NodeLink close: err = %v"
,
err
)
exc
.
Raisef
(
"Conn.
sendPkt
() after NodeLink close: err = %v"
,
err
)
}
}
})
})
tdelay
()
tdelay
()
...
@@ -355,7 +344,7 @@ func TestNodeLink(t *testing.T) {
...
@@ -355,7 +344,7 @@ func TestNodeLink(t *testing.T) {
xclose
(
c12
)
xclose
(
c12
)
xclose
(
nl2
)
xclose
(
nl2
)
// NodeLink.Close vs Conn.
Send/Recv
and Accept on another side
// NodeLink.Close vs Conn.
sendPkt/recvPkt
and Accept on another side
nl1
,
nl2
=
_nodeLinkPipe
(
linkNoRecvSend
,
0
)
nl1
,
nl2
=
_nodeLinkPipe
(
linkNoRecvSend
,
0
)
c21
:=
xnewconn
(
nl2
)
c21
:=
xnewconn
(
nl2
)
c22
:=
xnewconn
(
nl2
)
c22
:=
xnewconn
(
nl2
)
...
@@ -363,22 +352,22 @@ func TestNodeLink(t *testing.T) {
...
@@ -363,22 +352,22 @@ func TestNodeLink(t *testing.T) {
wg
=
WorkGroup
()
wg
=
WorkGroup
()
var
errRecv
error
var
errRecv
error
wg
.
Gox
(
func
()
{
wg
.
Gox
(
func
()
{
pkt
,
err
:=
c21
.
Recv
()
pkt
,
err
:=
c21
.
recvPkt
()
want1
:=
io
.
EOF
// if recvPkt wakes up due to peer close
want1
:=
io
.
EOF
// if recvPkt wakes up due to peer close
want2
:=
io
.
ErrClosedPipe
// if recvPkt wakes up due to sendPkt wakes up first and closes nl1
want2
:=
io
.
ErrClosedPipe
// if recvPkt wakes up due to sendPkt wakes up first and closes nl1
cerr
:=
xconnError
(
err
)
cerr
:=
xconnError
(
err
)
if
!
(
pkt
==
nil
&&
(
cerr
==
want1
||
cerr
==
want2
))
{
if
!
(
pkt
==
nil
&&
(
cerr
==
want1
||
cerr
==
want2
))
{
exc
.
Raisef
(
"Conn.
Recv
after peer NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
exc
.
Raisef
(
"Conn.
recvPkt
after peer NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
}
}
errRecv
=
cerr
errRecv
=
cerr
})
})
wg
.
Gox
(
func
()
{
wg
.
Gox
(
func
()
{
pkt
:=
&
PktBuf
{[]
byte
(
"data"
)}
pkt
:=
&
PktBuf
{[]
byte
(
"data"
)}
err
:=
c22
.
Send
(
pkt
)
err
:=
c22
.
sendPkt
(
pkt
)
want
:=
io
.
ErrClosedPipe
// always this in both due to peer close or recvPkt waking up and closing nl2
want
:=
io
.
ErrClosedPipe
// always this in both due to peer close or recvPkt waking up and closing nl2
if
xconnError
(
err
)
!=
want
{
if
xconnError
(
err
)
!=
want
{
exc
.
Raisef
(
"Conn.
Send
after peer NodeLink shutdown: %v"
,
err
)
exc
.
Raisef
(
"Conn.
sendPkt
after peer NodeLink shutdown: %v"
,
err
)
}
}
})
})
...
@@ -406,46 +395,46 @@ func TestNodeLink(t *testing.T) {
...
@@ -406,46 +395,46 @@ func TestNodeLink(t *testing.T) {
t
.
Fatalf
(
"Accept after NodeLink shutdown: conn = %v err = %v"
,
c
,
err
)
t
.
Fatalf
(
"Accept after NodeLink shutdown: conn = %v err = %v"
,
c
,
err
)
}
}
//
Recv/Send
on another Conn
//
recvPkt/sendPkt
on another Conn
pkt
,
err
=
c23
.
Recv
()
pkt
,
err
=
c23
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
errRecv
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
errRecv
)
{
t
.
Fatalf
(
"Conn.
Recv
2 after peer NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
t
.
Fatalf
(
"Conn.
recvPkt
2 after peer NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
}
}
err
=
c23
.
Send
(
&
PktBuf
{[]
byte
(
"data"
)})
err
=
c23
.
sendPkt
(
&
PktBuf
{[]
byte
(
"data"
)})
if
xconnError
(
err
)
!=
ErrLinkDown
{
if
xconnError
(
err
)
!=
ErrLinkDown
{
t
.
Fatalf
(
"Conn.
Send
2 after peer NodeLink shutdown: %v"
,
err
)
t
.
Fatalf
(
"Conn.
sendPkt
2 after peer NodeLink shutdown: %v"
,
err
)
}
}
//
Recv/Send
error on second call
//
recvPkt/sendPkt
error on second call
pkt
,
err
=
c21
.
Recv
()
pkt
,
err
=
c21
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrLinkDown
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrLinkDown
)
{
t
.
Fatalf
(
"Conn.
Recv
after NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
t
.
Fatalf
(
"Conn.
recvPkt
after NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
}
}
err
=
c22
.
Send
(
&
PktBuf
{[]
byte
(
"data"
)})
err
=
c22
.
sendPkt
(
&
PktBuf
{[]
byte
(
"data"
)})
if
xconnError
(
err
)
!=
ErrLinkDown
{
if
xconnError
(
err
)
!=
ErrLinkDown
{
t
.
Fatalf
(
"Conn.
Send
after NodeLink shutdown: %v"
,
err
)
t
.
Fatalf
(
"Conn.
sendPkt
after NodeLink shutdown: %v"
,
err
)
}
}
xclose
(
c23
)
xclose
(
c23
)
//
Recv/Send
on closed Conn but not closed NodeLink
//
recvPkt/sendPkt
on closed Conn but not closed NodeLink
pkt
,
err
=
c23
.
Recv
()
pkt
,
err
=
c23
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrClosedConn
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrClosedConn
)
{
t
.
Fatalf
(
"Conn.
Recv
after close but only stopped NodeLink: pkt = %v err = %v"
,
pkt
,
err
)
t
.
Fatalf
(
"Conn.
recvPkt
after close but only stopped NodeLink: pkt = %v err = %v"
,
pkt
,
err
)
}
}
err
=
c23
.
Send
(
&
PktBuf
{[]
byte
(
"data"
)})
err
=
c23
.
sendPkt
(
&
PktBuf
{[]
byte
(
"data"
)})
if
xconnError
(
err
)
!=
ErrClosedConn
{
if
xconnError
(
err
)
!=
ErrClosedConn
{
t
.
Fatalf
(
"Conn.
Send
after close but only stopped NodeLink: %v"
,
err
)
t
.
Fatalf
(
"Conn.
sendPkt
after close but only stopped NodeLink: %v"
,
err
)
}
}
xclose
(
nl2
)
xclose
(
nl2
)
//
Recv/Send
NewConn/Accept error after NodeLink close
//
recvPkt/sendPkt
NewConn/Accept error after NodeLink close
pkt
,
err
=
c21
.
Recv
()
pkt
,
err
=
c21
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrLinkClosed
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrLinkClosed
)
{
t
.
Fatalf
(
"Conn.
Recv
after NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
t
.
Fatalf
(
"Conn.
recvPkt
after NodeLink shutdown: pkt = %v err = %v"
,
pkt
,
err
)
}
}
err
=
c22
.
Send
(
&
PktBuf
{[]
byte
(
"data"
)})
err
=
c22
.
sendPkt
(
&
PktBuf
{[]
byte
(
"data"
)})
if
xconnError
(
err
)
!=
ErrLinkClosed
{
if
xconnError
(
err
)
!=
ErrLinkClosed
{
t
.
Fatalf
(
"Conn.
Send
after NodeLink shutdown: %v"
,
err
)
t
.
Fatalf
(
"Conn.
sendPkt
after NodeLink shutdown: %v"
,
err
)
}
}
c
,
err
=
nl2
.
NewConn
()
c
,
err
=
nl2
.
NewConn
()
...
@@ -460,14 +449,14 @@ func TestNodeLink(t *testing.T) {
...
@@ -460,14 +449,14 @@ func TestNodeLink(t *testing.T) {
xclose
(
c21
)
xclose
(
c21
)
xclose
(
c22
)
xclose
(
c22
)
//
Recv/Send
error after Close & NodeLink shutdown
//
recvPkt/sendPkt
error after Close & NodeLink shutdown
pkt
,
err
=
c21
.
Recv
()
pkt
,
err
=
c21
.
recvPkt
()
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrClosedConn
)
{
if
!
(
pkt
==
nil
&&
xconnError
(
err
)
==
ErrClosedConn
)
{
t
.
Fatalf
(
"Conn.
Recv
after close and NodeLink close: pkt = %v err = %v"
,
pkt
,
err
)
t
.
Fatalf
(
"Conn.
recvPkt
after close and NodeLink close: pkt = %v err = %v"
,
pkt
,
err
)
}
}
err
=
c22
.
Send
(
&
PktBuf
{[]
byte
(
"data"
)})
err
=
c22
.
sendPkt
(
&
PktBuf
{[]
byte
(
"data"
)})
if
xconnError
(
err
)
!=
ErrClosedConn
{
if
xconnError
(
err
)
!=
ErrClosedConn
{
t
.
Fatalf
(
"Conn.
Send
after close and NodeLink close: %v"
,
err
)
t
.
Fatalf
(
"Conn.
sendPkt
after close and NodeLink close: %v"
,
err
)
}
}
...
@@ -477,25 +466,25 @@ func TestNodeLink(t *testing.T) {
...
@@ -477,25 +466,25 @@ func TestNodeLink(t *testing.T) {
wg
.
Gox
(
func
()
{
wg
.
Gox
(
func
()
{
c
:=
xaccept
(
nl2
)
c
:=
xaccept
(
nl2
)
pkt
:=
xrecv
(
c
)
pkt
:=
xrecv
Pkt
(
c
)
xverifyPkt
(
pkt
,
c
.
connId
,
33
,
[]
byte
(
"ping"
))
xverifyPkt
(
pkt
,
c
.
connId
,
33
,
[]
byte
(
"ping"
))
// change pkt a bit and send it back
// change pkt a bit and send it back
xsend
(
c
,
mkpkt
(
34
,
[]
byte
(
"pong"
)))
xsend
Pkt
(
c
,
mkpkt
(
34
,
[]
byte
(
"pong"
)))
// one more time
// one more time
pkt
=
xrecv
(
c
)
pkt
=
xrecv
Pkt
(
c
)
xverifyPkt
(
pkt
,
c
.
connId
,
35
,
[]
byte
(
"ping2"
))
xverifyPkt
(
pkt
,
c
.
connId
,
35
,
[]
byte
(
"ping2"
))
xsend
(
c
,
mkpkt
(
36
,
[]
byte
(
"pong2"
)))
xsend
Pkt
(
c
,
mkpkt
(
36
,
[]
byte
(
"pong2"
)))
xclose
(
c
)
xclose
(
c
)
})
})
c
=
xnewconn
(
nl1
)
c
=
xnewconn
(
nl1
)
xsend
(
c
,
mkpkt
(
33
,
[]
byte
(
"ping"
)))
xsend
Pkt
(
c
,
mkpkt
(
33
,
[]
byte
(
"ping"
)))
pkt
=
xrecv
(
c
)
pkt
=
xrecv
Pkt
(
c
)
xverifyPkt
(
pkt
,
c
.
connId
,
34
,
[]
byte
(
"pong"
))
xverifyPkt
(
pkt
,
c
.
connId
,
34
,
[]
byte
(
"pong"
))
xsend
(
c
,
mkpkt
(
35
,
[]
byte
(
"ping2"
)))
xsend
Pkt
(
c
,
mkpkt
(
35
,
[]
byte
(
"ping2"
)))
pkt
=
xrecv
(
c
)
pkt
=
xrecv
Pkt
(
c
)
xverifyPkt
(
pkt
,
c
.
connId
,
36
,
[]
byte
(
"pong2"
))
xverifyPkt
(
pkt
,
c
.
connId
,
36
,
[]
byte
(
"pong2"
))
xwait
(
wg
)
xwait
(
wg
)
...
@@ -520,13 +509,13 @@ func TestNodeLink(t *testing.T) {
...
@@ -520,13 +509,13 @@ func TestNodeLink(t *testing.T) {
c
:=
xaccept
(
nl2
)
c
:=
xaccept
(
nl2
)
wg
.
Gox
(
func
()
{
wg
.
Gox
(
func
()
{
pkt
:=
xrecv
(
c
)
pkt
:=
xrecv
Pkt
(
c
)
n
:=
ntoh16
(
pkt
.
Header
()
.
MsgCode
)
n
:=
ntoh16
(
pkt
.
Header
()
.
MsgCode
)
x
:=
replyOrder
[
n
]
x
:=
replyOrder
[
n
]
// wait before it is our turn & echo pkt back
// wait before it is our turn & echo pkt back
<-
x
.
start
<-
x
.
start
xsend
(
c
,
pkt
)
xsend
Pkt
(
c
,
pkt
)
xclose
(
c
)
xclose
(
c
)
...
@@ -540,12 +529,12 @@ func TestNodeLink(t *testing.T) {
...
@@ -540,12 +529,12 @@ func TestNodeLink(t *testing.T) {
c1
:=
xnewconn
(
nl1
)
c1
:=
xnewconn
(
nl1
)
c2
:=
xnewconn
(
nl1
)
c2
:=
xnewconn
(
nl1
)
xsend
(
c1
,
mkpkt
(
1
,
[]
byte
(
""
)))
xsend
Pkt
(
c1
,
mkpkt
(
1
,
[]
byte
(
""
)))
xsend
(
c2
,
mkpkt
(
2
,
[]
byte
(
""
)))
xsend
Pkt
(
c2
,
mkpkt
(
2
,
[]
byte
(
""
)))
// replies must be coming in reverse order
// replies must be coming in reverse order
xechoWait
:=
func
(
c
*
Conn
,
msgCode
uint16
)
{
xechoWait
:=
func
(
c
*
Conn
,
msgCode
uint16
)
{
pkt
:=
xrecv
(
c
)
pkt
:=
xrecv
Pkt
(
c
)
xverifyPkt
(
pkt
,
c
.
connId
,
msgCode
,
[]
byte
(
""
))
xverifyPkt
(
pkt
,
c
.
connId
,
msgCode
,
[]
byte
(
""
))
}
}
xechoWait
(
c2
,
2
)
xechoWait
(
c2
,
2
)
...
...
go/neo/pkt.go
View file @
c2a1b63a
...
@@ -26,6 +26,8 @@ import (
...
@@ -26,6 +26,8 @@ import (
// TODO organize rx buffers management (freelist etc)
// TODO organize rx buffers management (freelist etc)
// PktBuf is a buffer with full raw packet (header + data)
// PktBuf is a buffer with full raw packet (header + data)
//
// variables of type PktBuf are usually named "pkb" (packet buffer), similar to "skb" in Linux
type
PktBuf
struct
{
type
PktBuf
struct
{
Data
[]
byte
// whole packet data including all headers XXX -> Buf ?
Data
[]
byte
// whole packet data including all headers XXX -> Buf ?
}
}
...
@@ -61,7 +63,7 @@ func (pkt *PktBuf) String() string {
...
@@ -61,7 +63,7 @@ func (pkt *PktBuf) String() string {
s
:=
fmt
.
Sprintf
(
".%d"
,
ntoh32
(
h
.
ConnId
))
s
:=
fmt
.
Sprintf
(
".%d"
,
ntoh32
(
h
.
ConnId
))
msgCode
:=
ntoh16
(
h
.
MsgCode
)
msgCode
:=
ntoh16
(
h
.
MsgCode
)
msgType
:=
pkt
TypeRegistry
[
msgCode
]
msgType
:=
msg
TypeRegistry
[
msgCode
]
if
msgType
==
nil
{
if
msgType
==
nil
{
s
+=
fmt
.
Sprintf
(
" ? (%d)"
,
msgCode
)
s
+=
fmt
.
Sprintf
(
" ? (%d)"
,
msgCode
)
}
else
{
}
else
{
...
...
go/neo/proto-marshal.go
View file @
c2a1b63a
...
@@ -10,19 +10,19 @@ import (
...
@@ -10,19 +10,19 @@ import (
"../zodb"
"../zodb"
)
)
//
packet
s marshalling
//
message
s marshalling
// 0. Address
// 0. Address
func
(
_
*
Address
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Address
)
NEOMsgCode
()
uint16
{
return
0
return
0
}
}
func
(
p
*
Address
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Address
)
NEO
Msg
EncodedLen
()
int
{
return
6
+
len
(
p
.
Host
)
return
6
+
len
(
p
.
Host
)
}
}
func
(
p
*
Address
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Address
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
Host
))
l
:=
uint32
(
len
(
p
.
Host
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -33,7 +33,7 @@ func (p *Address) NEOPktEncode(data []byte) {
...
@@ -33,7 +33,7 @@ func (p *Address) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint16
(
data
[
0
:
],
p
.
Port
)
binary
.
BigEndian
.
PutUint16
(
data
[
0
:
],
p
.
Port
)
}
}
func
(
p
*
Address
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Address
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -57,15 +57,15 @@ overflow:
...
@@ -57,15 +57,15 @@ overflow:
// 1. NodeInfo
// 1. NodeInfo
func
(
_
*
NodeInfo
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NodeInfo
)
NEOMsgCode
()
uint16
{
return
1
return
1
}
}
func
(
p
*
NodeInfo
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NodeInfo
)
NEO
Msg
EncodedLen
()
int
{
return
26
+
len
(
p
.
Address
.
Host
)
return
26
+
len
(
p
.
Address
.
Host
)
}
}
func
(
p
*
NodeInfo
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NodeInfo
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
{
{
l
:=
uint32
(
len
(
p
.
Address
.
Host
))
l
:=
uint32
(
len
(
p
.
Address
.
Host
))
...
@@ -80,7 +80,7 @@ func (p *NodeInfo) NEOPktEncode(data []byte) {
...
@@ -80,7 +80,7 @@ func (p *NodeInfo) NEOPktEncode(data []byte) {
float64_NEOEncode
(
data
[
10
:
],
p
.
IdTimestamp
)
float64_NEOEncode
(
data
[
10
:
],
p
.
IdTimestamp
)
}
}
func
(
p
*
NodeInfo
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NodeInfo
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
...
@@ -108,20 +108,20 @@ overflow:
...
@@ -108,20 +108,20 @@ overflow:
// 2. CellInfo
// 2. CellInfo
func
(
_
*
CellInfo
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CellInfo
)
NEOMsgCode
()
uint16
{
return
2
return
2
}
}
func
(
p
*
CellInfo
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CellInfo
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
CellInfo
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CellInfo
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
CellState
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
CellState
)))
}
}
func
(
p
*
CellInfo
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CellInfo
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -135,15 +135,15 @@ overflow:
...
@@ -135,15 +135,15 @@ overflow:
// 3. RowInfo
// 3. RowInfo
func
(
_
*
RowInfo
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
RowInfo
)
NEOMsgCode
()
uint16
{
return
3
return
3
}
}
func
(
p
*
RowInfo
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
RowInfo
)
NEO
Msg
EncodedLen
()
int
{
return
8
+
len
(
p
.
CellList
)
*
8
return
8
+
len
(
p
.
CellList
)
*
8
}
}
func
(
p
*
RowInfo
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
RowInfo
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Offset
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Offset
)
{
{
l
:=
uint32
(
len
(
p
.
CellList
))
l
:=
uint32
(
len
(
p
.
CellList
))
...
@@ -158,7 +158,7 @@ func (p *RowInfo) NEOPktEncode(data []byte) {
...
@@ -158,7 +158,7 @@ func (p *RowInfo) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
RowInfo
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
RowInfo
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
...
@@ -187,15 +187,15 @@ overflow:
...
@@ -187,15 +187,15 @@ overflow:
// 4. Error
// 4. Error
func
(
_
*
Error
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Error
)
NEOMsgCode
()
uint16
{
return
4
return
4
}
}
func
(
p
*
Error
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Error
)
NEO
Msg
EncodedLen
()
int
{
return
8
+
len
(
p
.
Message
)
return
8
+
len
(
p
.
Message
)
}
}
func
(
p
*
Error
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Error
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
p
.
Code
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
p
.
Code
))
{
{
l
:=
uint32
(
len
(
p
.
Message
))
l
:=
uint32
(
len
(
p
.
Message
))
...
@@ -206,7 +206,7 @@ func (p *Error) NEOPktEncode(data []byte) {
...
@@ -206,7 +206,7 @@ func (p *Error) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
Error
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Error
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
...
@@ -230,49 +230,49 @@ overflow:
...
@@ -230,49 +230,49 @@ overflow:
// 5. Ping
// 5. Ping
func
(
_
*
Ping
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Ping
)
NEOMsgCode
()
uint16
{
return
5
return
5
}
}
func
(
p
*
Ping
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Ping
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
Ping
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Ping
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
Ping
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Ping
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 6. CloseClient
// 6. CloseClient
func
(
_
*
CloseClient
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CloseClient
)
NEOMsgCode
()
uint16
{
return
6
return
6
}
}
func
(
p
*
CloseClient
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CloseClient
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
CloseClient
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CloseClient
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
CloseClient
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CloseClient
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 7. RequestIdentification
// 7. RequestIdentification
func
(
_
*
RequestIdentification
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
RequestIdentification
)
NEOMsgCode
()
uint16
{
return
7
return
7
}
}
func
(
p
*
RequestIdentification
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
RequestIdentification
)
NEO
Msg
EncodedLen
()
int
{
return
26
+
len
(
p
.
Address
.
Host
)
+
len
(
p
.
ClusterName
)
return
26
+
len
(
p
.
Address
.
Host
)
+
len
(
p
.
ClusterName
)
}
}
func
(
p
*
RequestIdentification
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
RequestIdentification
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
{
{
...
@@ -293,7 +293,7 @@ func (p *RequestIdentification) NEOPktEncode(data []byte) {
...
@@ -293,7 +293,7 @@ func (p *RequestIdentification) NEOPktEncode(data []byte) {
float64_NEOEncode
(
data
[
0
:
],
p
.
IdTimestamp
)
float64_NEOEncode
(
data
[
0
:
],
p
.
IdTimestamp
)
}
}
func
(
p
*
RequestIdentification
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
RequestIdentification
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -330,15 +330,15 @@ overflow:
...
@@ -330,15 +330,15 @@ overflow:
// 8. AcceptIdentification
// 8. AcceptIdentification
func
(
_
*
AcceptIdentification
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AcceptIdentification
)
NEOMsgCode
()
uint16
{
return
8
return
8
}
}
func
(
p
*
AcceptIdentification
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AcceptIdentification
)
NEO
Msg
EncodedLen
()
int
{
return
20
return
20
}
}
func
(
p
*
AcceptIdentification
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AcceptIdentification
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
MyNodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
MyNodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
8
:
],
p
.
NumPartitions
)
binary
.
BigEndian
.
PutUint32
(
data
[
8
:
],
p
.
NumPartitions
)
...
@@ -346,7 +346,7 @@ func (p *AcceptIdentification) NEOPktEncode(data []byte) {
...
@@ -346,7 +346,7 @@ func (p *AcceptIdentification) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint32
(
data
[
16
:
],
uint32
(
int32
(
p
.
YourNodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
16
:
],
uint32
(
int32
(
p
.
YourNodeUUID
)))
}
}
func
(
p
*
AcceptIdentification
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AcceptIdentification
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
20
{
if
uint32
(
len
(
data
))
<
20
{
goto
overflow
goto
overflow
}
}
...
@@ -363,36 +363,36 @@ overflow:
...
@@ -363,36 +363,36 @@ overflow:
// 9. PrimaryMaster
// 9. PrimaryMaster
func
(
_
*
PrimaryMaster
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
PrimaryMaster
)
NEOMsgCode
()
uint16
{
return
9
return
9
}
}
func
(
p
*
PrimaryMaster
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
PrimaryMaster
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
PrimaryMaster
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
PrimaryMaster
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
PrimaryMaster
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
PrimaryMaster
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 10. AnswerPrimary
// 10. AnswerPrimary
func
(
_
*
AnswerPrimary
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerPrimary
)
NEOMsgCode
()
uint16
{
return
10
return
10
}
}
func
(
p
*
AnswerPrimary
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerPrimary
)
NEO
Msg
EncodedLen
()
int
{
return
4
return
4
}
}
func
(
p
*
AnswerPrimary
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerPrimary
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
PrimaryNodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
PrimaryNodeUUID
)))
}
}
func
(
p
*
AnswerPrimary
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerPrimary
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
}
}
...
@@ -405,11 +405,11 @@ overflow:
...
@@ -405,11 +405,11 @@ overflow:
// 11. NotPrimaryMaster
// 11. NotPrimaryMaster
func
(
_
*
NotPrimaryMaster
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NotPrimaryMaster
)
NEOMsgCode
()
uint16
{
return
11
return
11
}
}
func
(
p
*
NotPrimaryMaster
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NotPrimaryMaster
)
NEO
Msg
EncodedLen
()
int
{
var
size
int
var
size
int
for
i
:=
0
;
i
<
len
(
p
.
KnownMasterList
);
i
++
{
for
i
:=
0
;
i
<
len
(
p
.
KnownMasterList
);
i
++
{
a
:=
&
p
.
KnownMasterList
[
i
]
a
:=
&
p
.
KnownMasterList
[
i
]
...
@@ -418,7 +418,7 @@ func (p *NotPrimaryMaster) NEOPktEncodedLen() int {
...
@@ -418,7 +418,7 @@ func (p *NotPrimaryMaster) NEOPktEncodedLen() int {
return
8
+
len
(
p
.
KnownMasterList
)
*
6
+
size
return
8
+
len
(
p
.
KnownMasterList
)
*
6
+
size
}
}
func
(
p
*
NotPrimaryMaster
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NotPrimaryMaster
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
Primary
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
Primary
)))
{
{
l
:=
uint32
(
len
(
p
.
KnownMasterList
))
l
:=
uint32
(
len
(
p
.
KnownMasterList
))
...
@@ -439,7 +439,7 @@ func (p *NotPrimaryMaster) NEOPktEncode(data []byte) {
...
@@ -439,7 +439,7 @@ func (p *NotPrimaryMaster) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
NotPrimaryMaster
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NotPrimaryMaster
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
...
@@ -477,38 +477,38 @@ overflow:
...
@@ -477,38 +477,38 @@ overflow:
// 12. Recovery
// 12. Recovery
func
(
_
*
Recovery
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Recovery
)
NEOMsgCode
()
uint16
{
return
12
return
12
}
}
func
(
p
*
Recovery
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Recovery
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
Recovery
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Recovery
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
Recovery
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Recovery
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 13. AnswerRecovery
// 13. AnswerRecovery
func
(
_
*
AnswerRecovery
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerRecovery
)
NEOMsgCode
()
uint16
{
return
13
return
13
}
}
func
(
p
*
AnswerRecovery
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerRecovery
)
NEO
Msg
EncodedLen
()
int
{
return
24
return
24
}
}
func
(
p
*
AnswerRecovery
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerRecovery
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
BackupTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
BackupTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
TruncateTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
TruncateTid
))
}
}
func
(
p
*
AnswerRecovery
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerRecovery
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
24
{
if
uint32
(
len
(
data
))
<
24
{
goto
overflow
goto
overflow
}
}
...
@@ -523,37 +523,37 @@ overflow:
...
@@ -523,37 +523,37 @@ overflow:
// 14. LastIDs
// 14. LastIDs
func
(
_
*
LastIDs
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
LastIDs
)
NEOMsgCode
()
uint16
{
return
14
return
14
}
}
func
(
p
*
LastIDs
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
LastIDs
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
LastIDs
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
LastIDs
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
LastIDs
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
LastIDs
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 15. AnswerLastIDs
// 15. AnswerLastIDs
func
(
_
*
AnswerLastIDs
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerLastIDs
)
NEOMsgCode
()
uint16
{
return
15
return
15
}
}
func
(
p
*
AnswerLastIDs
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerLastIDs
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
AnswerLastIDs
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerLastIDs
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
LastOid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
LastOid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LastTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LastTid
))
}
}
func
(
p
*
AnswerLastIDs
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerLastIDs
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -567,28 +567,28 @@ overflow:
...
@@ -567,28 +567,28 @@ overflow:
// 16. X_PartitionTable
// 16. X_PartitionTable
func
(
_
*
X_PartitionTable
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
X_PartitionTable
)
NEOMsgCode
()
uint16
{
return
16
return
16
}
}
func
(
p
*
X_PartitionTable
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
X_PartitionTable
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
X_PartitionTable
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
X_PartitionTable
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
X_PartitionTable
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
X_PartitionTable
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 17. AnswerPartitionTable
// 17. AnswerPartitionTable
func
(
_
*
AnswerPartitionTable
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerPartitionTable
)
NEOMsgCode
()
uint16
{
return
17
return
17
}
}
func
(
p
*
AnswerPartitionTable
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerPartitionTable
)
NEO
Msg
EncodedLen
()
int
{
var
size
int
var
size
int
for
i
:=
0
;
i
<
len
(
p
.
RowList
);
i
++
{
for
i
:=
0
;
i
<
len
(
p
.
RowList
);
i
++
{
a
:=
&
p
.
RowList
[
i
]
a
:=
&
p
.
RowList
[
i
]
...
@@ -597,7 +597,7 @@ func (p *AnswerPartitionTable) NEOPktEncodedLen() int {
...
@@ -597,7 +597,7 @@ func (p *AnswerPartitionTable) NEOPktEncodedLen() int {
return
12
+
len
(
p
.
RowList
)
*
8
+
size
return
12
+
len
(
p
.
RowList
)
*
8
+
size
}
}
func
(
p
*
AnswerPartitionTable
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerPartitionTable
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
{
{
l
:=
uint32
(
len
(
p
.
RowList
))
l
:=
uint32
(
len
(
p
.
RowList
))
...
@@ -622,7 +622,7 @@ func (p *AnswerPartitionTable) NEOPktEncode(data []byte) {
...
@@ -622,7 +622,7 @@ func (p *AnswerPartitionTable) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerPartitionTable
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerPartitionTable
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -664,11 +664,11 @@ overflow:
...
@@ -664,11 +664,11 @@ overflow:
// 18. NotifyPartitionTable
// 18. NotifyPartitionTable
func
(
_
*
NotifyPartitionTable
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NotifyPartitionTable
)
NEOMsgCode
()
uint16
{
return
18
return
18
}
}
func
(
p
*
NotifyPartitionTable
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NotifyPartitionTable
)
NEO
Msg
EncodedLen
()
int
{
var
size
int
var
size
int
for
i
:=
0
;
i
<
len
(
p
.
RowList
);
i
++
{
for
i
:=
0
;
i
<
len
(
p
.
RowList
);
i
++
{
a
:=
&
p
.
RowList
[
i
]
a
:=
&
p
.
RowList
[
i
]
...
@@ -677,7 +677,7 @@ func (p *NotifyPartitionTable) NEOPktEncodedLen() int {
...
@@ -677,7 +677,7 @@ func (p *NotifyPartitionTable) NEOPktEncodedLen() int {
return
12
+
len
(
p
.
RowList
)
*
8
+
size
return
12
+
len
(
p
.
RowList
)
*
8
+
size
}
}
func
(
p
*
NotifyPartitionTable
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NotifyPartitionTable
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
{
{
l
:=
uint32
(
len
(
p
.
RowList
))
l
:=
uint32
(
len
(
p
.
RowList
))
...
@@ -702,7 +702,7 @@ func (p *NotifyPartitionTable) NEOPktEncode(data []byte) {
...
@@ -702,7 +702,7 @@ func (p *NotifyPartitionTable) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
NotifyPartitionTable
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NotifyPartitionTable
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -744,15 +744,15 @@ overflow:
...
@@ -744,15 +744,15 @@ overflow:
// 19. PartitionChanges
// 19. PartitionChanges
func
(
_
*
PartitionChanges
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
PartitionChanges
)
NEOMsgCode
()
uint16
{
return
19
return
19
}
}
func
(
p
*
PartitionChanges
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
PartitionChanges
)
NEO
Msg
EncodedLen
()
int
{
return
12
+
len
(
p
.
CellList
)
*
12
return
12
+
len
(
p
.
CellList
)
*
12
}
}
func
(
p
*
PartitionChanges
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
PartitionChanges
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
{
{
l
:=
uint32
(
len
(
p
.
CellList
))
l
:=
uint32
(
len
(
p
.
CellList
))
...
@@ -768,7 +768,7 @@ func (p *PartitionChanges) NEOPktEncode(data []byte) {
...
@@ -768,7 +768,7 @@ func (p *PartitionChanges) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
PartitionChanges
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
PartitionChanges
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -802,19 +802,19 @@ overflow:
...
@@ -802,19 +802,19 @@ overflow:
// 20. StartOperation
// 20. StartOperation
func
(
_
*
StartOperation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
StartOperation
)
NEOMsgCode
()
uint16
{
return
20
return
20
}
}
func
(
p
*
StartOperation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
StartOperation
)
NEO
Msg
EncodedLen
()
int
{
return
1
return
1
}
}
func
(
p
*
StartOperation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
StartOperation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
Backup
)
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
Backup
)
}
}
func
(
p
*
StartOperation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
StartOperation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
1
{
if
uint32
(
len
(
data
))
<
1
{
goto
overflow
goto
overflow
}
}
...
@@ -827,32 +827,32 @@ overflow:
...
@@ -827,32 +827,32 @@ overflow:
// 21. StopOperation
// 21. StopOperation
func
(
_
*
StopOperation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
StopOperation
)
NEOMsgCode
()
uint16
{
return
21
return
21
}
}
func
(
p
*
StopOperation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
StopOperation
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
StopOperation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
StopOperation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
StopOperation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
StopOperation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 22. UnfinishedTransactions
// 22. UnfinishedTransactions
func
(
_
*
UnfinishedTransactions
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
UnfinishedTransactions
)
NEOMsgCode
()
uint16
{
return
22
return
22
}
}
func
(
p
*
UnfinishedTransactions
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
UnfinishedTransactions
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
RowList
)
*
4
return
4
+
len
(
p
.
RowList
)
*
4
}
}
func
(
p
*
UnfinishedTransactions
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
UnfinishedTransactions
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
RowList
))
l
:=
uint32
(
len
(
p
.
RowList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -865,7 +865,7 @@ func (p *UnfinishedTransactions) NEOPktEncode(data []byte) {
...
@@ -865,7 +865,7 @@ func (p *UnfinishedTransactions) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
UnfinishedTransactions
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
UnfinishedTransactions
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -892,15 +892,15 @@ overflow:
...
@@ -892,15 +892,15 @@ overflow:
// 23. AnswerUnfinishedTransactions
// 23. AnswerUnfinishedTransactions
func
(
_
*
AnswerUnfinishedTransactions
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerUnfinishedTransactions
)
NEOMsgCode
()
uint16
{
return
23
return
23
}
}
func
(
p
*
AnswerUnfinishedTransactions
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerUnfinishedTransactions
)
NEO
Msg
EncodedLen
()
int
{
return
12
+
len
(
p
.
TidList
)
*
8
return
12
+
len
(
p
.
TidList
)
*
8
}
}
func
(
p
*
AnswerUnfinishedTransactions
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerUnfinishedTransactions
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
MaxTID
))
{
{
l
:=
uint32
(
len
(
p
.
TidList
))
l
:=
uint32
(
len
(
p
.
TidList
))
...
@@ -914,7 +914,7 @@ func (p *AnswerUnfinishedTransactions) NEOPktEncode(data []byte) {
...
@@ -914,7 +914,7 @@ func (p *AnswerUnfinishedTransactions) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerUnfinishedTransactions
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerUnfinishedTransactions
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -942,32 +942,32 @@ overflow:
...
@@ -942,32 +942,32 @@ overflow:
// 24. LockedTransactions
// 24. LockedTransactions
func
(
_
*
LockedTransactions
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
LockedTransactions
)
NEOMsgCode
()
uint16
{
return
24
return
24
}
}
func
(
p
*
LockedTransactions
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
LockedTransactions
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
LockedTransactions
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
LockedTransactions
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
LockedTransactions
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
LockedTransactions
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 25. AnswerLockedTransactions
// 25. AnswerLockedTransactions
func
(
_
*
AnswerLockedTransactions
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerLockedTransactions
)
NEOMsgCode
()
uint16
{
return
25
return
25
}
}
func
(
p
*
AnswerLockedTransactions
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerLockedTransactions
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
TidDict
)
*
16
return
4
+
len
(
p
.
TidDict
)
*
16
}
}
func
(
p
*
AnswerLockedTransactions
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerLockedTransactions
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
TidDict
))
l
:=
uint32
(
len
(
p
.
TidDict
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -985,7 +985,7 @@ func (p *AnswerLockedTransactions) NEOPktEncode(data []byte) {
...
@@ -985,7 +985,7 @@ func (p *AnswerLockedTransactions) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerLockedTransactions
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerLockedTransactions
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -1013,19 +1013,19 @@ overflow:
...
@@ -1013,19 +1013,19 @@ overflow:
// 26. FinalTID
// 26. FinalTID
func
(
_
*
FinalTID
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
FinalTID
)
NEOMsgCode
()
uint16
{
return
26
return
26
}
}
func
(
p
*
FinalTID
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
FinalTID
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
FinalTID
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
FinalTID
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
}
}
func
(
p
*
FinalTID
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
FinalTID
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1038,19 +1038,19 @@ overflow:
...
@@ -1038,19 +1038,19 @@ overflow:
// 27. AnswerFinalTID
// 27. AnswerFinalTID
func
(
_
*
AnswerFinalTID
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerFinalTID
)
NEOMsgCode
()
uint16
{
return
27
return
27
}
}
func
(
p
*
AnswerFinalTID
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerFinalTID
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
AnswerFinalTID
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerFinalTID
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
AnswerFinalTID
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerFinalTID
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1063,20 +1063,20 @@ overflow:
...
@@ -1063,20 +1063,20 @@ overflow:
// 28. ValidateTransaction
// 28. ValidateTransaction
func
(
_
*
ValidateTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
ValidateTransaction
)
NEOMsgCode
()
uint16
{
return
28
return
28
}
}
func
(
p
*
ValidateTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
ValidateTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
ValidateTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
ValidateTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
ValidateTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
ValidateTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1090,19 +1090,19 @@ overflow:
...
@@ -1090,19 +1090,19 @@ overflow:
// 29. BeginTransaction
// 29. BeginTransaction
func
(
_
*
BeginTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
BeginTransaction
)
NEOMsgCode
()
uint16
{
return
29
return
29
}
}
func
(
p
*
BeginTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
BeginTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
BeginTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
BeginTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
BeginTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
BeginTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1115,19 +1115,19 @@ overflow:
...
@@ -1115,19 +1115,19 @@ overflow:
// 30. AnswerBeginTransaction
// 30. AnswerBeginTransaction
func
(
_
*
AnswerBeginTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerBeginTransaction
)
NEOMsgCode
()
uint16
{
return
30
return
30
}
}
func
(
p
*
AnswerBeginTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerBeginTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
AnswerBeginTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerBeginTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
AnswerBeginTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerBeginTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1140,15 +1140,15 @@ overflow:
...
@@ -1140,15 +1140,15 @@ overflow:
// 31. FailedVote
// 31. FailedVote
func
(
_
*
FailedVote
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
FailedVote
)
NEOMsgCode
()
uint16
{
return
31
return
31
}
}
func
(
p
*
FailedVote
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
FailedVote
)
NEO
Msg
EncodedLen
()
int
{
return
12
+
len
(
p
.
NodeList
)
*
4
return
12
+
len
(
p
.
NodeList
)
*
4
}
}
func
(
p
*
FailedVote
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
FailedVote
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
...
@@ -1162,7 +1162,7 @@ func (p *FailedVote) NEOPktEncode(data []byte) {
...
@@ -1162,7 +1162,7 @@ func (p *FailedVote) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
FailedVote
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
FailedVote
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -1190,15 +1190,15 @@ overflow:
...
@@ -1190,15 +1190,15 @@ overflow:
// 32. FinishTransaction
// 32. FinishTransaction
func
(
_
*
FinishTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
FinishTransaction
)
NEOMsgCode
()
uint16
{
return
32
return
32
}
}
func
(
p
*
FinishTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
FinishTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
16
+
len
(
p
.
OIDList
)
*
8
+
len
(
p
.
CheckedList
)
*
8
return
16
+
len
(
p
.
OIDList
)
*
8
+
len
(
p
.
CheckedList
)
*
8
}
}
func
(
p
*
FinishTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
FinishTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
{
{
l
:=
uint32
(
len
(
p
.
OIDList
))
l
:=
uint32
(
len
(
p
.
OIDList
))
...
@@ -1222,7 +1222,7 @@ func (p *FinishTransaction) NEOPktEncode(data []byte) {
...
@@ -1222,7 +1222,7 @@ func (p *FinishTransaction) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
FinishTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
FinishTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -1264,20 +1264,20 @@ overflow:
...
@@ -1264,20 +1264,20 @@ overflow:
// 33. AnswerFinishTransaction
// 33. AnswerFinishTransaction
func
(
_
*
AnswerFinishTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerFinishTransaction
)
NEOMsgCode
()
uint16
{
return
33
return
33
}
}
func
(
p
*
AnswerFinishTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerFinishTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
AnswerFinishTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerFinishTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
AnswerFinishTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerFinishTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1291,20 +1291,20 @@ overflow:
...
@@ -1291,20 +1291,20 @@ overflow:
// 34. NotifyTransactionFinished
// 34. NotifyTransactionFinished
func
(
_
*
NotifyTransactionFinished
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NotifyTransactionFinished
)
NEOMsgCode
()
uint16
{
return
34
return
34
}
}
func
(
p
*
NotifyTransactionFinished
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NotifyTransactionFinished
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
NotifyTransactionFinished
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NotifyTransactionFinished
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MaxTID
))
}
}
func
(
p
*
NotifyTransactionFinished
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NotifyTransactionFinished
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1318,20 +1318,20 @@ overflow:
...
@@ -1318,20 +1318,20 @@ overflow:
// 35. LockInformation
// 35. LockInformation
func
(
_
*
LockInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
LockInformation
)
NEOMsgCode
()
uint16
{
return
35
return
35
}
}
func
(
p
*
LockInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
LockInformation
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
LockInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
LockInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Ttid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Ttid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
LockInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
LockInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1345,19 +1345,19 @@ overflow:
...
@@ -1345,19 +1345,19 @@ overflow:
// 36. AnswerLockInformation
// 36. AnswerLockInformation
func
(
_
*
AnswerLockInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerLockInformation
)
NEOMsgCode
()
uint16
{
return
36
return
36
}
}
func
(
p
*
AnswerLockInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerLockInformation
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
AnswerLockInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerLockInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Ttid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Ttid
))
}
}
func
(
p
*
AnswerLockInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerLockInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1370,15 +1370,15 @@ overflow:
...
@@ -1370,15 +1370,15 @@ overflow:
// 37. InvalidateObjects
// 37. InvalidateObjects
func
(
_
*
InvalidateObjects
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
InvalidateObjects
)
NEOMsgCode
()
uint16
{
return
37
return
37
}
}
func
(
p
*
InvalidateObjects
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
InvalidateObjects
)
NEO
Msg
EncodedLen
()
int
{
return
12
+
len
(
p
.
OidList
)
*
8
return
12
+
len
(
p
.
OidList
)
*
8
}
}
func
(
p
*
InvalidateObjects
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
InvalidateObjects
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
{
{
l
:=
uint32
(
len
(
p
.
OidList
))
l
:=
uint32
(
len
(
p
.
OidList
))
...
@@ -1392,7 +1392,7 @@ func (p *InvalidateObjects) NEOPktEncode(data []byte) {
...
@@ -1392,7 +1392,7 @@ func (p *InvalidateObjects) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
InvalidateObjects
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
InvalidateObjects
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -1420,19 +1420,19 @@ overflow:
...
@@ -1420,19 +1420,19 @@ overflow:
// 38. UnlockInformation
// 38. UnlockInformation
func
(
_
*
UnlockInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
UnlockInformation
)
NEOMsgCode
()
uint16
{
return
38
return
38
}
}
func
(
p
*
UnlockInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
UnlockInformation
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
UnlockInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
UnlockInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTID
))
}
}
func
(
p
*
UnlockInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
UnlockInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1445,19 +1445,19 @@ overflow:
...
@@ -1445,19 +1445,19 @@ overflow:
// 39. GenerateOIDs
// 39. GenerateOIDs
func
(
_
*
GenerateOIDs
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
GenerateOIDs
)
NEOMsgCode
()
uint16
{
return
39
return
39
}
}
func
(
p
*
GenerateOIDs
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
GenerateOIDs
)
NEO
Msg
EncodedLen
()
int
{
return
4
return
4
}
}
func
(
p
*
GenerateOIDs
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
GenerateOIDs
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
NumOIDs
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
NumOIDs
)
}
}
func
(
p
*
GenerateOIDs
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
GenerateOIDs
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
}
}
...
@@ -1470,15 +1470,15 @@ overflow:
...
@@ -1470,15 +1470,15 @@ overflow:
// 40. AnswerGenerateOIDs
// 40. AnswerGenerateOIDs
func
(
_
*
AnswerGenerateOIDs
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerGenerateOIDs
)
NEOMsgCode
()
uint16
{
return
40
return
40
}
}
func
(
p
*
AnswerGenerateOIDs
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerGenerateOIDs
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
OidList
)
*
8
return
4
+
len
(
p
.
OidList
)
*
8
}
}
func
(
p
*
AnswerGenerateOIDs
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerGenerateOIDs
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
OidList
))
l
:=
uint32
(
len
(
p
.
OidList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -1491,7 +1491,7 @@ func (p *AnswerGenerateOIDs) NEOPktEncode(data []byte) {
...
@@ -1491,7 +1491,7 @@ func (p *AnswerGenerateOIDs) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerGenerateOIDs
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerGenerateOIDs
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -1518,20 +1518,20 @@ overflow:
...
@@ -1518,20 +1518,20 @@ overflow:
// 41. Deadlock
// 41. Deadlock
func
(
_
*
Deadlock
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Deadlock
)
NEOMsgCode
()
uint16
{
return
41
return
41
}
}
func
(
p
*
Deadlock
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Deadlock
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
Deadlock
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Deadlock
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LockingTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LockingTid
))
}
}
func
(
p
*
Deadlock
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Deadlock
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1545,20 +1545,20 @@ overflow:
...
@@ -1545,20 +1545,20 @@ overflow:
// 42. RebaseTransaction
// 42. RebaseTransaction
func
(
_
*
RebaseTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
RebaseTransaction
)
NEOMsgCode
()
uint16
{
return
42
return
42
}
}
func
(
p
*
RebaseTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
RebaseTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
RebaseTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
RebaseTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LockingTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LockingTid
))
}
}
func
(
p
*
RebaseTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
RebaseTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1572,15 +1572,15 @@ overflow:
...
@@ -1572,15 +1572,15 @@ overflow:
// 43. AnswerRebaseTransaction
// 43. AnswerRebaseTransaction
func
(
_
*
AnswerRebaseTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerRebaseTransaction
)
NEOMsgCode
()
uint16
{
return
43
return
43
}
}
func
(
p
*
AnswerRebaseTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerRebaseTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
OidList
)
*
8
return
4
+
len
(
p
.
OidList
)
*
8
}
}
func
(
p
*
AnswerRebaseTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerRebaseTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
OidList
))
l
:=
uint32
(
len
(
p
.
OidList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -1593,7 +1593,7 @@ func (p *AnswerRebaseTransaction) NEOPktEncode(data []byte) {
...
@@ -1593,7 +1593,7 @@ func (p *AnswerRebaseTransaction) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerRebaseTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerRebaseTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -1620,20 +1620,20 @@ overflow:
...
@@ -1620,20 +1620,20 @@ overflow:
// 44. RebaseObject
// 44. RebaseObject
func
(
_
*
RebaseObject
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
RebaseObject
)
NEOMsgCode
()
uint16
{
return
44
return
44
}
}
func
(
p
*
RebaseObject
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
RebaseObject
)
NEO
Msg
EncodedLen
()
int
{
return
16
return
16
}
}
func
(
p
*
RebaseObject
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
RebaseObject
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
TTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Oid
))
}
}
func
(
p
*
RebaseObject
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
RebaseObject
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
16
{
if
uint32
(
len
(
data
))
<
16
{
goto
overflow
goto
overflow
}
}
...
@@ -1647,15 +1647,15 @@ overflow:
...
@@ -1647,15 +1647,15 @@ overflow:
// 45. AnswerRebaseObject
// 45. AnswerRebaseObject
func
(
_
*
AnswerRebaseObject
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerRebaseObject
)
NEOMsgCode
()
uint16
{
return
45
return
45
}
}
func
(
p
*
AnswerRebaseObject
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerRebaseObject
)
NEO
Msg
EncodedLen
()
int
{
return
41
+
len
(
p
.
Data
)
return
41
+
len
(
p
.
Data
)
}
}
func
(
p
*
AnswerRebaseObject
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerRebaseObject
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
ConflictSerial
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
ConflictSerial
))
(
data
[
16
:
])[
0
]
=
bool2byte
(
p
.
Compression
)
(
data
[
16
:
])[
0
]
=
bool2byte
(
p
.
Compression
)
...
@@ -1669,7 +1669,7 @@ func (p *AnswerRebaseObject) NEOPktEncode(data []byte) {
...
@@ -1669,7 +1669,7 @@ func (p *AnswerRebaseObject) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerRebaseObject
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerRebaseObject
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
41
{
if
uint32
(
len
(
data
))
<
41
{
goto
overflow
goto
overflow
...
@@ -1697,15 +1697,15 @@ overflow:
...
@@ -1697,15 +1697,15 @@ overflow:
// 46. StoreObject
// 46. StoreObject
func
(
_
*
StoreObject
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
StoreObject
)
NEOMsgCode
()
uint16
{
return
46
return
46
}
}
func
(
p
*
StoreObject
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
StoreObject
)
NEO
Msg
EncodedLen
()
int
{
return
57
+
len
(
p
.
Data
)
return
57
+
len
(
p
.
Data
)
}
}
func
(
p
*
StoreObject
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
StoreObject
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Serial
))
(
data
[
16
:
])[
0
]
=
bool2byte
(
p
.
Compression
)
(
data
[
16
:
])[
0
]
=
bool2byte
(
p
.
Compression
)
...
@@ -1721,7 +1721,7 @@ func (p *StoreObject) NEOPktEncode(data []byte) {
...
@@ -1721,7 +1721,7 @@ func (p *StoreObject) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
StoreObject
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
StoreObject
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
41
{
if
uint32
(
len
(
data
))
<
41
{
goto
overflow
goto
overflow
...
@@ -1751,19 +1751,19 @@ overflow:
...
@@ -1751,19 +1751,19 @@ overflow:
// 47. AnswerStoreObject
// 47. AnswerStoreObject
func
(
_
*
AnswerStoreObject
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerStoreObject
)
NEOMsgCode
()
uint16
{
return
47
return
47
}
}
func
(
p
*
AnswerStoreObject
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerStoreObject
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
AnswerStoreObject
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerStoreObject
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Conflict
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Conflict
))
}
}
func
(
p
*
AnswerStoreObject
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerStoreObject
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1776,15 +1776,15 @@ overflow:
...
@@ -1776,15 +1776,15 @@ overflow:
// 48. AbortTransaction
// 48. AbortTransaction
func
(
_
*
AbortTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AbortTransaction
)
NEOMsgCode
()
uint16
{
return
48
return
48
}
}
func
(
p
*
AbortTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AbortTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
12
+
len
(
p
.
NodeList
)
*
4
return
12
+
len
(
p
.
NodeList
)
*
4
}
}
func
(
p
*
AbortTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AbortTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
...
@@ -1798,7 +1798,7 @@ func (p *AbortTransaction) NEOPktEncode(data []byte) {
...
@@ -1798,7 +1798,7 @@ func (p *AbortTransaction) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AbortTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AbortTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -1826,15 +1826,15 @@ overflow:
...
@@ -1826,15 +1826,15 @@ overflow:
// 49. StoreTransaction
// 49. StoreTransaction
func
(
_
*
StoreTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
StoreTransaction
)
NEOMsgCode
()
uint16
{
return
49
return
49
}
}
func
(
p
*
StoreTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
StoreTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
24
+
len
(
p
.
User
)
+
len
(
p
.
Description
)
+
len
(
p
.
Extension
)
+
len
(
p
.
OidList
)
*
8
return
24
+
len
(
p
.
User
)
+
len
(
p
.
Description
)
+
len
(
p
.
Extension
)
+
len
(
p
.
OidList
)
*
8
}
}
func
(
p
*
StoreTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
StoreTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
{
{
l
:=
uint32
(
len
(
p
.
User
))
l
:=
uint32
(
len
(
p
.
User
))
...
@@ -1869,7 +1869,7 @@ func (p *StoreTransaction) NEOPktEncode(data []byte) {
...
@@ -1869,7 +1869,7 @@ func (p *StoreTransaction) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
StoreTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
StoreTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -1927,19 +1927,19 @@ overflow:
...
@@ -1927,19 +1927,19 @@ overflow:
// 50. VoteTransaction
// 50. VoteTransaction
func
(
_
*
VoteTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
VoteTransaction
)
NEOMsgCode
()
uint16
{
return
50
return
50
}
}
func
(
p
*
VoteTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
VoteTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
VoteTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
VoteTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
VoteTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
VoteTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -1952,21 +1952,21 @@ overflow:
...
@@ -1952,21 +1952,21 @@ overflow:
// 51. GetObject
// 51. GetObject
func
(
_
*
GetObject
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
GetObject
)
NEOMsgCode
()
uint16
{
return
51
return
51
}
}
func
(
p
*
GetObject
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
GetObject
)
NEO
Msg
EncodedLen
()
int
{
return
24
return
24
}
}
func
(
p
*
GetObject
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
GetObject
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
GetObject
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
GetObject
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
24
{
if
uint32
(
len
(
data
))
<
24
{
goto
overflow
goto
overflow
}
}
...
@@ -1981,15 +1981,15 @@ overflow:
...
@@ -1981,15 +1981,15 @@ overflow:
// 52. AnswerGetObject
// 52. AnswerGetObject
func
(
_
*
AnswerGetObject
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerGetObject
)
NEOMsgCode
()
uint16
{
return
52
return
52
}
}
func
(
p
*
AnswerGetObject
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerGetObject
)
NEO
Msg
EncodedLen
()
int
{
return
57
+
len
(
p
.
Data
)
return
57
+
len
(
p
.
Data
)
}
}
func
(
p
*
AnswerGetObject
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerGetObject
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
NextSerial
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
NextSerial
))
...
@@ -2005,7 +2005,7 @@ func (p *AnswerGetObject) NEOPktEncode(data []byte) {
...
@@ -2005,7 +2005,7 @@ func (p *AnswerGetObject) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
DataSerial
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
DataSerial
))
}
}
func
(
p
*
AnswerGetObject
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerGetObject
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
49
{
if
uint32
(
len
(
data
))
<
49
{
goto
overflow
goto
overflow
...
@@ -2035,21 +2035,21 @@ overflow:
...
@@ -2035,21 +2035,21 @@ overflow:
// 53. TIDList
// 53. TIDList
func
(
_
*
TIDList
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
TIDList
)
NEOMsgCode
()
uint16
{
return
53
return
53
}
}
func
(
p
*
TIDList
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
TIDList
)
NEO
Msg
EncodedLen
()
int
{
return
20
return
20
}
}
func
(
p
*
TIDList
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
TIDList
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
p
.
First
)
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
p
.
First
)
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
p
.
Last
)
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
p
.
Last
)
binary
.
BigEndian
.
PutUint32
(
data
[
16
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
16
:
],
p
.
Partition
)
}
}
func
(
p
*
TIDList
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
TIDList
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
20
{
if
uint32
(
len
(
data
))
<
20
{
goto
overflow
goto
overflow
}
}
...
@@ -2064,15 +2064,15 @@ overflow:
...
@@ -2064,15 +2064,15 @@ overflow:
// 54. AnswerTIDList
// 54. AnswerTIDList
func
(
_
*
AnswerTIDList
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerTIDList
)
NEOMsgCode
()
uint16
{
return
54
return
54
}
}
func
(
p
*
AnswerTIDList
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerTIDList
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
TIDList
)
*
8
return
4
+
len
(
p
.
TIDList
)
*
8
}
}
func
(
p
*
AnswerTIDList
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerTIDList
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
TIDList
))
l
:=
uint32
(
len
(
p
.
TIDList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -2085,7 +2085,7 @@ func (p *AnswerTIDList) NEOPktEncode(data []byte) {
...
@@ -2085,7 +2085,7 @@ func (p *AnswerTIDList) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerTIDList
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerTIDList
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -2112,22 +2112,22 @@ overflow:
...
@@ -2112,22 +2112,22 @@ overflow:
// 55. TIDListFrom
// 55. TIDListFrom
func
(
_
*
TIDListFrom
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
TIDListFrom
)
NEOMsgCode
()
uint16
{
return
55
return
55
}
}
func
(
p
*
TIDListFrom
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
TIDListFrom
)
NEO
Msg
EncodedLen
()
int
{
return
24
return
24
}
}
func
(
p
*
TIDListFrom
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
TIDListFrom
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
MinTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
MinTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint32
(
data
[
16
:
],
p
.
Length
)
binary
.
BigEndian
.
PutUint32
(
data
[
16
:
],
p
.
Length
)
binary
.
BigEndian
.
PutUint32
(
data
[
20
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
20
:
],
p
.
Partition
)
}
}
func
(
p
*
TIDListFrom
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
TIDListFrom
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
24
{
if
uint32
(
len
(
data
))
<
24
{
goto
overflow
goto
overflow
}
}
...
@@ -2143,15 +2143,15 @@ overflow:
...
@@ -2143,15 +2143,15 @@ overflow:
// 56. AnswerTIDListFrom
// 56. AnswerTIDListFrom
func
(
_
*
AnswerTIDListFrom
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerTIDListFrom
)
NEOMsgCode
()
uint16
{
return
56
return
56
}
}
func
(
p
*
AnswerTIDListFrom
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerTIDListFrom
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
TidList
)
*
8
return
4
+
len
(
p
.
TidList
)
*
8
}
}
func
(
p
*
AnswerTIDListFrom
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerTIDListFrom
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
TidList
))
l
:=
uint32
(
len
(
p
.
TidList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -2164,7 +2164,7 @@ func (p *AnswerTIDListFrom) NEOPktEncode(data []byte) {
...
@@ -2164,7 +2164,7 @@ func (p *AnswerTIDListFrom) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerTIDListFrom
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerTIDListFrom
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -2191,19 +2191,19 @@ overflow:
...
@@ -2191,19 +2191,19 @@ overflow:
// 57. TransactionInformation
// 57. TransactionInformation
func
(
_
*
TransactionInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
TransactionInformation
)
NEOMsgCode
()
uint16
{
return
57
return
57
}
}
func
(
p
*
TransactionInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
TransactionInformation
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
TransactionInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
TransactionInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
TransactionInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
TransactionInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -2216,15 +2216,15 @@ overflow:
...
@@ -2216,15 +2216,15 @@ overflow:
// 58. AnswerTransactionInformation
// 58. AnswerTransactionInformation
func
(
_
*
AnswerTransactionInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerTransactionInformation
)
NEOMsgCode
()
uint16
{
return
58
return
58
}
}
func
(
p
*
AnswerTransactionInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerTransactionInformation
)
NEO
Msg
EncodedLen
()
int
{
return
25
+
len
(
p
.
User
)
+
len
(
p
.
Description
)
+
len
(
p
.
Extension
)
+
len
(
p
.
OidList
)
*
8
return
25
+
len
(
p
.
User
)
+
len
(
p
.
Description
)
+
len
(
p
.
Extension
)
+
len
(
p
.
OidList
)
*
8
}
}
func
(
p
*
AnswerTransactionInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerTransactionInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
{
{
l
:=
uint32
(
len
(
p
.
User
))
l
:=
uint32
(
len
(
p
.
User
))
...
@@ -2260,7 +2260,7 @@ func (p *AnswerTransactionInformation) NEOPktEncode(data []byte) {
...
@@ -2260,7 +2260,7 @@ func (p *AnswerTransactionInformation) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerTransactionInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerTransactionInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -2319,21 +2319,21 @@ overflow:
...
@@ -2319,21 +2319,21 @@ overflow:
// 59. ObjectHistory
// 59. ObjectHistory
func
(
_
*
ObjectHistory
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
ObjectHistory
)
NEOMsgCode
()
uint16
{
return
59
return
59
}
}
func
(
p
*
ObjectHistory
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
ObjectHistory
)
NEO
Msg
EncodedLen
()
int
{
return
24
return
24
}
}
func
(
p
*
ObjectHistory
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
ObjectHistory
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
p
.
First
)
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
p
.
First
)
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
p
.
Last
)
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
p
.
Last
)
}
}
func
(
p
*
ObjectHistory
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
ObjectHistory
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
24
{
if
uint32
(
len
(
data
))
<
24
{
goto
overflow
goto
overflow
}
}
...
@@ -2348,15 +2348,15 @@ overflow:
...
@@ -2348,15 +2348,15 @@ overflow:
// 60. AnswerObjectHistory
// 60. AnswerObjectHistory
func
(
_
*
AnswerObjectHistory
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerObjectHistory
)
NEOMsgCode
()
uint16
{
return
60
return
60
}
}
func
(
p
*
AnswerObjectHistory
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerObjectHistory
)
NEO
Msg
EncodedLen
()
int
{
return
12
+
len
(
p
.
HistoryList
)
*
12
return
12
+
len
(
p
.
HistoryList
)
*
12
}
}
func
(
p
*
AnswerObjectHistory
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerObjectHistory
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Oid
))
{
{
l
:=
uint32
(
len
(
p
.
HistoryList
))
l
:=
uint32
(
len
(
p
.
HistoryList
))
...
@@ -2371,7 +2371,7 @@ func (p *AnswerObjectHistory) NEOPktEncode(data []byte) {
...
@@ -2371,7 +2371,7 @@ func (p *AnswerObjectHistory) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerObjectHistory
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerObjectHistory
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -2403,21 +2403,21 @@ overflow:
...
@@ -2403,21 +2403,21 @@ overflow:
// 61. PartitionList
// 61. PartitionList
func
(
_
*
PartitionList
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
PartitionList
)
NEOMsgCode
()
uint16
{
return
61
return
61
}
}
func
(
p
*
PartitionList
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
PartitionList
)
NEO
Msg
EncodedLen
()
int
{
return
12
return
12
}
}
func
(
p
*
PartitionList
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
PartitionList
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
MinOffset
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
MinOffset
)
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
p
.
MaxOffset
)
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
p
.
MaxOffset
)
binary
.
BigEndian
.
PutUint32
(
data
[
8
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
8
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
}
}
func
(
p
*
PartitionList
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
PartitionList
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
}
}
...
@@ -2432,11 +2432,11 @@ overflow:
...
@@ -2432,11 +2432,11 @@ overflow:
// 62. AnswerPartitionList
// 62. AnswerPartitionList
func
(
_
*
AnswerPartitionList
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerPartitionList
)
NEOMsgCode
()
uint16
{
return
62
return
62
}
}
func
(
p
*
AnswerPartitionList
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerPartitionList
)
NEO
Msg
EncodedLen
()
int
{
var
size
int
var
size
int
for
i
:=
0
;
i
<
len
(
p
.
RowList
);
i
++
{
for
i
:=
0
;
i
<
len
(
p
.
RowList
);
i
++
{
a
:=
&
p
.
RowList
[
i
]
a
:=
&
p
.
RowList
[
i
]
...
@@ -2445,7 +2445,7 @@ func (p *AnswerPartitionList) NEOPktEncodedLen() int {
...
@@ -2445,7 +2445,7 @@ func (p *AnswerPartitionList) NEOPktEncodedLen() int {
return
12
+
len
(
p
.
RowList
)
*
8
+
size
return
12
+
len
(
p
.
RowList
)
*
8
+
size
}
}
func
(
p
*
AnswerPartitionList
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerPartitionList
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
PTid
))
{
{
l
:=
uint32
(
len
(
p
.
RowList
))
l
:=
uint32
(
len
(
p
.
RowList
))
...
@@ -2470,7 +2470,7 @@ func (p *AnswerPartitionList) NEOPktEncode(data []byte) {
...
@@ -2470,7 +2470,7 @@ func (p *AnswerPartitionList) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerPartitionList
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerPartitionList
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -2512,19 +2512,19 @@ overflow:
...
@@ -2512,19 +2512,19 @@ overflow:
// 63. NodeList
// 63. NodeList
func
(
_
*
NodeList
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NodeList
)
NEOMsgCode
()
uint16
{
return
63
return
63
}
}
func
(
p
*
NodeList
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NodeList
)
NEO
Msg
EncodedLen
()
int
{
return
4
return
4
}
}
func
(
p
*
NodeList
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NodeList
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeType
)))
}
}
func
(
p
*
NodeList
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NodeList
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
}
}
...
@@ -2537,11 +2537,11 @@ overflow:
...
@@ -2537,11 +2537,11 @@ overflow:
// 64. AnswerNodeList
// 64. AnswerNodeList
func
(
_
*
AnswerNodeList
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerNodeList
)
NEOMsgCode
()
uint16
{
return
64
return
64
}
}
func
(
p
*
AnswerNodeList
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerNodeList
)
NEO
Msg
EncodedLen
()
int
{
var
size
int
var
size
int
for
i
:=
0
;
i
<
len
(
p
.
NodeList
);
i
++
{
for
i
:=
0
;
i
<
len
(
p
.
NodeList
);
i
++
{
a
:=
&
p
.
NodeList
[
i
]
a
:=
&
p
.
NodeList
[
i
]
...
@@ -2550,7 +2550,7 @@ func (p *AnswerNodeList) NEOPktEncodedLen() int {
...
@@ -2550,7 +2550,7 @@ func (p *AnswerNodeList) NEOPktEncodedLen() int {
return
4
+
len
(
p
.
NodeList
)
*
26
+
size
return
4
+
len
(
p
.
NodeList
)
*
26
+
size
}
}
func
(
p
*
AnswerNodeList
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerNodeList
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -2574,7 +2574,7 @@ func (p *AnswerNodeList) NEOPktEncode(data []byte) {
...
@@ -2574,7 +2574,7 @@ func (p *AnswerNodeList) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerNodeList
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerNodeList
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -2615,20 +2615,20 @@ overflow:
...
@@ -2615,20 +2615,20 @@ overflow:
// 65. SetNodeState
// 65. SetNodeState
func
(
_
*
SetNodeState
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
SetNodeState
)
NEOMsgCode
()
uint16
{
return
65
return
65
}
}
func
(
p
*
SetNodeState
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
SetNodeState
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
SetNodeState
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
SetNodeState
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
NodeUUID
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
NodeState
)))
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
uint32
(
int32
(
p
.
NodeState
)))
}
}
func
(
p
*
SetNodeState
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
SetNodeState
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -2642,15 +2642,15 @@ overflow:
...
@@ -2642,15 +2642,15 @@ overflow:
// 66. AddPendingNodes
// 66. AddPendingNodes
func
(
_
*
AddPendingNodes
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AddPendingNodes
)
NEOMsgCode
()
uint16
{
return
66
return
66
}
}
func
(
p
*
AddPendingNodes
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AddPendingNodes
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
NodeList
)
*
4
return
4
+
len
(
p
.
NodeList
)
*
4
}
}
func
(
p
*
AddPendingNodes
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AddPendingNodes
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -2663,7 +2663,7 @@ func (p *AddPendingNodes) NEOPktEncode(data []byte) {
...
@@ -2663,7 +2663,7 @@ func (p *AddPendingNodes) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AddPendingNodes
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AddPendingNodes
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -2690,15 +2690,15 @@ overflow:
...
@@ -2690,15 +2690,15 @@ overflow:
// 67. TweakPartitionTable
// 67. TweakPartitionTable
func
(
_
*
TweakPartitionTable
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
TweakPartitionTable
)
NEOMsgCode
()
uint16
{
return
67
return
67
}
}
func
(
p
*
TweakPartitionTable
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
TweakPartitionTable
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
NodeList
)
*
4
return
4
+
len
(
p
.
NodeList
)
*
4
}
}
func
(
p
*
TweakPartitionTable
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
TweakPartitionTable
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -2711,7 +2711,7 @@ func (p *TweakPartitionTable) NEOPktEncode(data []byte) {
...
@@ -2711,7 +2711,7 @@ func (p *TweakPartitionTable) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
TweakPartitionTable
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
TweakPartitionTable
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -2738,11 +2738,11 @@ overflow:
...
@@ -2738,11 +2738,11 @@ overflow:
// 68. NotifyNodeInformation
// 68. NotifyNodeInformation
func
(
_
*
NotifyNodeInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NotifyNodeInformation
)
NEOMsgCode
()
uint16
{
return
68
return
68
}
}
func
(
p
*
NotifyNodeInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NotifyNodeInformation
)
NEO
Msg
EncodedLen
()
int
{
var
size
int
var
size
int
for
i
:=
0
;
i
<
len
(
p
.
NodeList
);
i
++
{
for
i
:=
0
;
i
<
len
(
p
.
NodeList
);
i
++
{
a
:=
&
p
.
NodeList
[
i
]
a
:=
&
p
.
NodeList
[
i
]
...
@@ -2751,7 +2751,7 @@ func (p *NotifyNodeInformation) NEOPktEncodedLen() int {
...
@@ -2751,7 +2751,7 @@ func (p *NotifyNodeInformation) NEOPktEncodedLen() int {
return
12
+
len
(
p
.
NodeList
)
*
26
+
size
return
12
+
len
(
p
.
NodeList
)
*
26
+
size
}
}
func
(
p
*
NotifyNodeInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NotifyNodeInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
float64_NEOEncode
(
data
[
0
:
],
p
.
IdTimestamp
)
float64_NEOEncode
(
data
[
0
:
],
p
.
IdTimestamp
)
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
...
@@ -2776,7 +2776,7 @@ func (p *NotifyNodeInformation) NEOPktEncode(data []byte) {
...
@@ -2776,7 +2776,7 @@ func (p *NotifyNodeInformation) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
NotifyNodeInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NotifyNodeInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
12
{
if
uint32
(
len
(
data
))
<
12
{
goto
overflow
goto
overflow
...
@@ -2818,36 +2818,36 @@ overflow:
...
@@ -2818,36 +2818,36 @@ overflow:
// 69. NodeInformation
// 69. NodeInformation
func
(
_
*
NodeInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NodeInformation
)
NEOMsgCode
()
uint16
{
return
69
return
69
}
}
func
(
p
*
NodeInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NodeInformation
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
NodeInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NodeInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
NodeInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NodeInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 70. SetClusterState
// 70. SetClusterState
func
(
_
*
SetClusterState
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
SetClusterState
)
NEOMsgCode
()
uint16
{
return
70
return
70
}
}
func
(
p
*
SetClusterState
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
SetClusterState
)
NEO
Msg
EncodedLen
()
int
{
return
4
return
4
}
}
func
(
p
*
SetClusterState
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
SetClusterState
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
State
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
State
)))
}
}
func
(
p
*
SetClusterState
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
SetClusterState
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
}
}
...
@@ -2860,19 +2860,19 @@ overflow:
...
@@ -2860,19 +2860,19 @@ overflow:
// 71. repairFlags
// 71. repairFlags
func
(
_
*
repairFlags
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
repairFlags
)
NEOMsgCode
()
uint16
{
return
71
return
71
}
}
func
(
p
*
repairFlags
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
repairFlags
)
NEO
Msg
EncodedLen
()
int
{
return
1
return
1
}
}
func
(
p
*
repairFlags
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
repairFlags
)
NEO
Msg
Encode
(
data
[]
byte
)
{
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
DryRun
)
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
DryRun
)
}
}
func
(
p
*
repairFlags
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
repairFlags
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
1
{
if
uint32
(
len
(
data
))
<
1
{
goto
overflow
goto
overflow
}
}
...
@@ -2885,15 +2885,15 @@ overflow:
...
@@ -2885,15 +2885,15 @@ overflow:
// 72. Repair
// 72. Repair
func
(
_
*
Repair
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Repair
)
NEOMsgCode
()
uint16
{
return
72
return
72
}
}
func
(
p
*
Repair
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Repair
)
NEO
Msg
EncodedLen
()
int
{
return
5
+
len
(
p
.
NodeList
)
*
4
return
5
+
len
(
p
.
NodeList
)
*
4
}
}
func
(
p
*
Repair
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Repair
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
NodeList
))
l
:=
uint32
(
len
(
p
.
NodeList
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -2907,7 +2907,7 @@ func (p *Repair) NEOPktEncode(data []byte) {
...
@@ -2907,7 +2907,7 @@ func (p *Repair) NEOPktEncode(data []byte) {
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
repairFlags
.
DryRun
)
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
repairFlags
.
DryRun
)
}
}
func
(
p
*
Repair
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Repair
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -2935,19 +2935,19 @@ overflow:
...
@@ -2935,19 +2935,19 @@ overflow:
// 73. RepairOne
// 73. RepairOne
func
(
_
*
RepairOne
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
RepairOne
)
NEOMsgCode
()
uint16
{
return
73
return
73
}
}
func
(
p
*
RepairOne
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
RepairOne
)
NEO
Msg
EncodedLen
()
int
{
return
1
return
1
}
}
func
(
p
*
RepairOne
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
RepairOne
)
NEO
Msg
Encode
(
data
[]
byte
)
{
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
repairFlags
.
DryRun
)
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
repairFlags
.
DryRun
)
}
}
func
(
p
*
RepairOne
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
RepairOne
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
1
{
if
uint32
(
len
(
data
))
<
1
{
goto
overflow
goto
overflow
}
}
...
@@ -2960,19 +2960,19 @@ overflow:
...
@@ -2960,19 +2960,19 @@ overflow:
// 74. ClusterInformation
// 74. ClusterInformation
func
(
_
*
ClusterInformation
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
ClusterInformation
)
NEOMsgCode
()
uint16
{
return
74
return
74
}
}
func
(
p
*
ClusterInformation
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
ClusterInformation
)
NEO
Msg
EncodedLen
()
int
{
return
4
return
4
}
}
func
(
p
*
ClusterInformation
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
ClusterInformation
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
State
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
State
)))
}
}
func
(
p
*
ClusterInformation
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
ClusterInformation
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
}
}
...
@@ -2985,19 +2985,19 @@ overflow:
...
@@ -2985,19 +2985,19 @@ overflow:
// 75. X_ClusterState
// 75. X_ClusterState
func
(
_
*
X_ClusterState
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
X_ClusterState
)
NEOMsgCode
()
uint16
{
return
75
return
75
}
}
func
(
p
*
X_ClusterState
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
X_ClusterState
)
NEO
Msg
EncodedLen
()
int
{
return
4
return
4
}
}
func
(
p
*
X_ClusterState
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
X_ClusterState
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
State
)))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
uint32
(
int32
(
p
.
State
)))
}
}
func
(
p
*
X_ClusterState
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
X_ClusterState
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
}
}
...
@@ -3010,15 +3010,15 @@ overflow:
...
@@ -3010,15 +3010,15 @@ overflow:
// 76. ObjectUndoSerial
// 76. ObjectUndoSerial
func
(
_
*
ObjectUndoSerial
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
ObjectUndoSerial
)
NEOMsgCode
()
uint16
{
return
76
return
76
}
}
func
(
p
*
ObjectUndoSerial
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
ObjectUndoSerial
)
NEO
Msg
EncodedLen
()
int
{
return
28
+
len
(
p
.
OidList
)
*
8
return
28
+
len
(
p
.
OidList
)
*
8
}
}
func
(
p
*
ObjectUndoSerial
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
ObjectUndoSerial
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
LTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
UndoneTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
UndoneTID
))
...
@@ -3034,7 +3034,7 @@ func (p *ObjectUndoSerial) NEOPktEncode(data []byte) {
...
@@ -3034,7 +3034,7 @@ func (p *ObjectUndoSerial) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
ObjectUndoSerial
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
ObjectUndoSerial
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
28
{
if
uint32
(
len
(
data
))
<
28
{
goto
overflow
goto
overflow
...
@@ -3064,15 +3064,15 @@ overflow:
...
@@ -3064,15 +3064,15 @@ overflow:
// 77. AnswerObjectUndoSerial
// 77. AnswerObjectUndoSerial
func
(
_
*
AnswerObjectUndoSerial
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerObjectUndoSerial
)
NEOMsgCode
()
uint16
{
return
77
return
77
}
}
func
(
p
*
AnswerObjectUndoSerial
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerObjectUndoSerial
)
NEO
Msg
EncodedLen
()
int
{
return
4
+
len
(
p
.
ObjectTIDDict
)
*
25
return
4
+
len
(
p
.
ObjectTIDDict
)
*
25
}
}
func
(
p
*
AnswerObjectUndoSerial
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerObjectUndoSerial
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
ObjectTIDDict
))
l
:=
uint32
(
len
(
p
.
ObjectTIDDict
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -3092,7 +3092,7 @@ func (p *AnswerObjectUndoSerial) NEOPktEncode(data []byte) {
...
@@ -3092,7 +3092,7 @@ func (p *AnswerObjectUndoSerial) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
AnswerObjectUndoSerial
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerObjectUndoSerial
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -3132,21 +3132,21 @@ overflow:
...
@@ -3132,21 +3132,21 @@ overflow:
// 78. CheckCurrentSerial
// 78. CheckCurrentSerial
func
(
_
*
CheckCurrentSerial
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CheckCurrentSerial
)
NEOMsgCode
()
uint16
{
return
78
return
78
}
}
func
(
p
*
CheckCurrentSerial
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CheckCurrentSerial
)
NEO
Msg
EncodedLen
()
int
{
return
24
return
24
}
}
func
(
p
*
CheckCurrentSerial
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CheckCurrentSerial
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
Oid
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
Serial
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
Serial
))
}
}
func
(
p
*
CheckCurrentSerial
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CheckCurrentSerial
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
24
{
if
uint32
(
len
(
data
))
<
24
{
goto
overflow
goto
overflow
}
}
...
@@ -3161,19 +3161,19 @@ overflow:
...
@@ -3161,19 +3161,19 @@ overflow:
// 79. Pack
// 79. Pack
func
(
_
*
Pack
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
Pack
)
NEOMsgCode
()
uint16
{
return
79
return
79
}
}
func
(
p
*
Pack
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
Pack
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
Pack
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
Pack
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
Pack
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
Pack
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -3186,19 +3186,19 @@ overflow:
...
@@ -3186,19 +3186,19 @@ overflow:
// 80. AnswerPack
// 80. AnswerPack
func
(
_
*
AnswerPack
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerPack
)
NEOMsgCode
()
uint16
{
return
80
return
80
}
}
func
(
p
*
AnswerPack
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerPack
)
NEO
Msg
EncodedLen
()
int
{
return
1
return
1
}
}
func
(
p
*
AnswerPack
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerPack
)
NEO
Msg
Encode
(
data
[]
byte
)
{
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
Status
)
(
data
[
0
:
])[
0
]
=
bool2byte
(
p
.
Status
)
}
}
func
(
p
*
AnswerPack
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerPack
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
1
{
if
uint32
(
len
(
data
))
<
1
{
goto
overflow
goto
overflow
}
}
...
@@ -3211,15 +3211,15 @@ overflow:
...
@@ -3211,15 +3211,15 @@ overflow:
// 81. CheckReplicas
// 81. CheckReplicas
func
(
_
*
CheckReplicas
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CheckReplicas
)
NEOMsgCode
()
uint16
{
return
81
return
81
}
}
func
(
p
*
CheckReplicas
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CheckReplicas
)
NEO
Msg
EncodedLen
()
int
{
return
20
+
len
(
p
.
PartitionDict
)
*
8
return
20
+
len
(
p
.
PartitionDict
)
*
8
}
}
func
(
p
*
CheckReplicas
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CheckReplicas
)
NEO
Msg
Encode
(
data
[]
byte
)
{
{
{
l
:=
uint32
(
len
(
p
.
PartitionDict
))
l
:=
uint32
(
len
(
p
.
PartitionDict
))
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
l
)
...
@@ -3239,7 +3239,7 @@ func (p *CheckReplicas) NEOPktEncode(data []byte) {
...
@@ -3239,7 +3239,7 @@ func (p *CheckReplicas) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MaxTID
))
}
}
func
(
p
*
CheckReplicas
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CheckReplicas
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
4
{
if
uint32
(
len
(
data
))
<
4
{
goto
overflow
goto
overflow
...
@@ -3269,15 +3269,15 @@ overflow:
...
@@ -3269,15 +3269,15 @@ overflow:
// 82. CheckPartition
// 82. CheckPartition
func
(
_
*
CheckPartition
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CheckPartition
)
NEOMsgCode
()
uint16
{
return
82
return
82
}
}
func
(
p
*
CheckPartition
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CheckPartition
)
NEO
Msg
EncodedLen
()
int
{
return
30
+
len
(
p
.
Source
.
UpstreamName
)
+
len
(
p
.
Source
.
Address
.
Host
)
return
30
+
len
(
p
.
Source
.
UpstreamName
)
+
len
(
p
.
Source
.
Address
.
Host
)
}
}
func
(
p
*
CheckPartition
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CheckPartition
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
{
{
l
:=
uint32
(
len
(
p
.
Source
.
UpstreamName
))
l
:=
uint32
(
len
(
p
.
Source
.
UpstreamName
))
...
@@ -3298,7 +3298,7 @@ func (p *CheckPartition) NEOPktEncode(data []byte) {
...
@@ -3298,7 +3298,7 @@ func (p *CheckPartition) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint64
(
data
[
10
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
10
:
],
uint64
(
p
.
MaxTID
))
}
}
func
(
p
*
CheckPartition
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CheckPartition
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
...
@@ -3335,22 +3335,22 @@ overflow:
...
@@ -3335,22 +3335,22 @@ overflow:
// 83. CheckTIDRange
// 83. CheckTIDRange
func
(
_
*
CheckTIDRange
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CheckTIDRange
)
NEOMsgCode
()
uint16
{
return
83
return
83
}
}
func
(
p
*
CheckTIDRange
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CheckTIDRange
)
NEO
Msg
EncodedLen
()
int
{
return
24
return
24
}
}
func
(
p
*
CheckTIDRange
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CheckTIDRange
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
p
.
Length
)
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
p
.
Length
)
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MinTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MinTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
16
:
],
uint64
(
p
.
MaxTID
))
}
}
func
(
p
*
CheckTIDRange
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CheckTIDRange
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
24
{
if
uint32
(
len
(
data
))
<
24
{
goto
overflow
goto
overflow
}
}
...
@@ -3366,21 +3366,21 @@ overflow:
...
@@ -3366,21 +3366,21 @@ overflow:
// 84. AnswerCheckTIDRange
// 84. AnswerCheckTIDRange
func
(
_
*
AnswerCheckTIDRange
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerCheckTIDRange
)
NEOMsgCode
()
uint16
{
return
84
return
84
}
}
func
(
p
*
AnswerCheckTIDRange
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerCheckTIDRange
)
NEO
Msg
EncodedLen
()
int
{
return
32
return
32
}
}
func
(
p
*
AnswerCheckTIDRange
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerCheckTIDRange
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Count
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Count
)
copy
(
data
[
4
:
],
p
.
Checksum
[
:
])
copy
(
data
[
4
:
],
p
.
Checksum
[
:
])
binary
.
BigEndian
.
PutUint64
(
data
[
24
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
24
:
],
uint64
(
p
.
MaxTID
))
}
}
func
(
p
*
AnswerCheckTIDRange
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerCheckTIDRange
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
32
{
if
uint32
(
len
(
data
))
<
32
{
goto
overflow
goto
overflow
}
}
...
@@ -3395,15 +3395,15 @@ overflow:
...
@@ -3395,15 +3395,15 @@ overflow:
// 85. CheckSerialRange
// 85. CheckSerialRange
func
(
_
*
CheckSerialRange
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
CheckSerialRange
)
NEOMsgCode
()
uint16
{
return
85
return
85
}
}
func
(
p
*
CheckSerialRange
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
CheckSerialRange
)
NEO
Msg
EncodedLen
()
int
{
return
32
return
32
}
}
func
(
p
*
CheckSerialRange
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
CheckSerialRange
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
p
.
Length
)
binary
.
BigEndian
.
PutUint32
(
data
[
4
:
],
p
.
Length
)
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MinTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
8
:
],
uint64
(
p
.
MinTID
))
...
@@ -3411,7 +3411,7 @@ func (p *CheckSerialRange) NEOPktEncode(data []byte) {
...
@@ -3411,7 +3411,7 @@ func (p *CheckSerialRange) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint64
(
data
[
24
:
],
uint64
(
p
.
MinOID
))
binary
.
BigEndian
.
PutUint64
(
data
[
24
:
],
uint64
(
p
.
MinOID
))
}
}
func
(
p
*
CheckSerialRange
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
CheckSerialRange
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
32
{
if
uint32
(
len
(
data
))
<
32
{
goto
overflow
goto
overflow
}
}
...
@@ -3428,15 +3428,15 @@ overflow:
...
@@ -3428,15 +3428,15 @@ overflow:
// 86. AnswerCheckSerialRange
// 86. AnswerCheckSerialRange
func
(
_
*
AnswerCheckSerialRange
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerCheckSerialRange
)
NEOMsgCode
()
uint16
{
return
86
return
86
}
}
func
(
p
*
AnswerCheckSerialRange
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerCheckSerialRange
)
NEO
Msg
EncodedLen
()
int
{
return
60
return
60
}
}
func
(
p
*
AnswerCheckSerialRange
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerCheckSerialRange
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Count
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Count
)
copy
(
data
[
4
:
],
p
.
TidChecksum
[
:
])
copy
(
data
[
4
:
],
p
.
TidChecksum
[
:
])
binary
.
BigEndian
.
PutUint64
(
data
[
24
:
],
uint64
(
p
.
MaxTID
))
binary
.
BigEndian
.
PutUint64
(
data
[
24
:
],
uint64
(
p
.
MaxTID
))
...
@@ -3444,7 +3444,7 @@ func (p *AnswerCheckSerialRange) NEOPktEncode(data []byte) {
...
@@ -3444,7 +3444,7 @@ func (p *AnswerCheckSerialRange) NEOPktEncode(data []byte) {
binary
.
BigEndian
.
PutUint64
(
data
[
52
:
],
uint64
(
p
.
MaxOID
))
binary
.
BigEndian
.
PutUint64
(
data
[
52
:
],
uint64
(
p
.
MaxOID
))
}
}
func
(
p
*
AnswerCheckSerialRange
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerCheckSerialRange
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
60
{
if
uint32
(
len
(
data
))
<
60
{
goto
overflow
goto
overflow
}
}
...
@@ -3461,15 +3461,15 @@ overflow:
...
@@ -3461,15 +3461,15 @@ overflow:
// 87. PartitionCorrupted
// 87. PartitionCorrupted
func
(
_
*
PartitionCorrupted
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
PartitionCorrupted
)
NEOMsgCode
()
uint16
{
return
87
return
87
}
}
func
(
p
*
PartitionCorrupted
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
PartitionCorrupted
)
NEO
Msg
EncodedLen
()
int
{
return
8
+
len
(
p
.
CellList
)
*
4
return
8
+
len
(
p
.
CellList
)
*
4
}
}
func
(
p
*
PartitionCorrupted
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
PartitionCorrupted
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
binary
.
BigEndian
.
PutUint32
(
data
[
0
:
],
p
.
Partition
)
{
{
l
:=
uint32
(
len
(
p
.
CellList
))
l
:=
uint32
(
len
(
p
.
CellList
))
...
@@ -3483,7 +3483,7 @@ func (p *PartitionCorrupted) NEOPktEncode(data []byte) {
...
@@ -3483,7 +3483,7 @@ func (p *PartitionCorrupted) NEOPktEncode(data []byte) {
}
}
}
}
func
(
p
*
PartitionCorrupted
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
PartitionCorrupted
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
var
nread
uint32
var
nread
uint32
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
...
@@ -3511,36 +3511,36 @@ overflow:
...
@@ -3511,36 +3511,36 @@ overflow:
// 88. LastTransaction
// 88. LastTransaction
func
(
_
*
LastTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
LastTransaction
)
NEOMsgCode
()
uint16
{
return
88
return
88
}
}
func
(
p
*
LastTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
LastTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
LastTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
LastTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
LastTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
LastTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// 89. AnswerLastTransaction
// 89. AnswerLastTransaction
func
(
_
*
AnswerLastTransaction
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
AnswerLastTransaction
)
NEOMsgCode
()
uint16
{
return
89
return
89
}
}
func
(
p
*
AnswerLastTransaction
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
AnswerLastTransaction
)
NEO
Msg
EncodedLen
()
int
{
return
8
return
8
}
}
func
(
p
*
AnswerLastTransaction
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
AnswerLastTransaction
)
NEO
Msg
Encode
(
data
[]
byte
)
{
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
binary
.
BigEndian
.
PutUint64
(
data
[
0
:
],
uint64
(
p
.
Tid
))
}
}
func
(
p
*
AnswerLastTransaction
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
AnswerLastTransaction
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
if
uint32
(
len
(
data
))
<
8
{
if
uint32
(
len
(
data
))
<
8
{
goto
overflow
goto
overflow
}
}
...
@@ -3553,23 +3553,23 @@ overflow:
...
@@ -3553,23 +3553,23 @@ overflow:
// 90. NotifyReady
// 90. NotifyReady
func
(
_
*
NotifyReady
)
NEO
Pkt
MsgCode
()
uint16
{
func
(
_
*
NotifyReady
)
NEOMsgCode
()
uint16
{
return
90
return
90
}
}
func
(
p
*
NotifyReady
)
NEO
Pkt
EncodedLen
()
int
{
func
(
p
*
NotifyReady
)
NEO
Msg
EncodedLen
()
int
{
return
0
return
0
}
}
func
(
p
*
NotifyReady
)
NEO
Pkt
Encode
(
data
[]
byte
)
{
func
(
p
*
NotifyReady
)
NEO
Msg
Encode
(
data
[]
byte
)
{
}
}
func
(
p
*
NotifyReady
)
NEO
Pkt
Decode
(
data
[]
byte
)
(
int
,
error
)
{
func
(
p
*
NotifyReady
)
NEO
Msg
Decode
(
data
[]
byte
)
(
int
,
error
)
{
return
0
,
nil
return
0
,
nil
}
}
// registry of
packet
types
// registry of
message
types
var
pkt
TypeRegistry
=
map
[
uint16
]
reflect
.
Type
{
var
msg
TypeRegistry
=
map
[
uint16
]
reflect
.
Type
{
0
:
reflect
.
TypeOf
(
Address
{}),
0
:
reflect
.
TypeOf
(
Address
{}),
1
:
reflect
.
TypeOf
(
NodeInfo
{}),
1
:
reflect
.
TypeOf
(
NodeInfo
{}),
2
:
reflect
.
TypeOf
(
CellInfo
{}),
2
:
reflect
.
TypeOf
(
CellInfo
{}),
...
...
go/neo/proto.go
View file @
c2a1b63a
...
@@ -110,7 +110,7 @@ const (
...
@@ -110,7 +110,7 @@ const (
// node finishes to replicate it. It means a partition is moved from 1 node
// node finishes to replicate it. It means a partition is moved from 1 node
// to another.
// to another.
FEEDING
//short: F
FEEDING
//short: F
// Not really a state: only used in network
packet
s to tell storages to drop
// Not really a state: only used in network
message
s to tell storages to drop
// partitions.
// partitions.
DISCARDED
//short: D
DISCARDED
//short: D
// A check revealed that data differs from other replicas. Cell is neither
// A check revealed that data differs from other replicas. Cell is neither
...
@@ -136,24 +136,24 @@ type NodeUUID int32
...
@@ -136,24 +136,24 @@ type NodeUUID int32
// TODO NodeType -> base NodeUUID
// TODO NodeType -> base NodeUUID
// ErrDecodeOverflow is the error returned by NEO
Pkt
Decode when decoding hit buffer overflow
// ErrDecodeOverflow is the error returned by NEO
Msg
Decode when decoding hit buffer overflow
var
ErrDecodeOverflow
=
errors
.
New
(
"decode: bufer overflow"
)
var
ErrDecodeOverflow
=
errors
.
New
(
"decode: bufer overflow"
)
//
Pkt is the interface implemented by NEO packet
s to marshal/unmarshal them into/from wire format
//
Msg is the interface implemented by NEO message
s to marshal/unmarshal them into/from wire format
type
Pkt
interface
{
type
Msg
interface
{
// NEO
PktMsgCode returns message code needed to be used for particular packet
type
// NEO
MsgCode returns message code needed to be used for particular message
type
// on the wire
// on the wire
NEO
Pkt
MsgCode
()
uint16
NEOMsgCode
()
uint16
// NEO
PktEncodedLen returns how much space is needed to encode current state
// NEO
MsgEncodedLen returns how much space is needed to encode current message payload
NEO
Pkt
EncodedLen
()
int
NEO
Msg
EncodedLen
()
int
// NEO
PktEncode encodes current
state into buf.
// NEO
MsgEncode encodes current message
state into buf.
// len(buf) must be >= NEO
Pkt
EncodedLen()
// len(buf) must be >= NEO
Msg
EncodedLen()
NEO
Pkt
Encode
(
buf
[]
byte
)
NEO
Msg
Encode
(
buf
[]
byte
)
// NEO
PktDecode decodes data into current packet stat
e.
// NEO
MsgDecode decodes data into message in-plac
e.
NEO
Pkt
Decode
(
data
[]
byte
)
(
nread
int
,
err
error
)
NEO
Msg
Decode
(
data
[]
byte
)
(
nread
int
,
err
error
)
}
}
...
@@ -163,7 +163,7 @@ type Address struct {
...
@@ -163,7 +163,7 @@ type Address struct {
}
}
// NOTE if Host == "" -> Port not added to wire (see py.PAddress):
// NOTE if Host == "" -> Port not added to wire (see py.PAddress):
// func (a *Address) NEO
Pkt
Encode(b []byte) int {
// func (a *Address) NEO
Msg
Encode(b []byte) int {
// n := string_NEOEncode(a.Host, b[0:])
// n := string_NEOEncode(a.Host, b[0:])
// if a.Host != "" {
// if a.Host != "" {
// BigEndian.PutUint16(b[n:], a.Port)
// BigEndian.PutUint16(b[n:], a.Port)
...
@@ -263,7 +263,7 @@ type Ping struct {
...
@@ -263,7 +263,7 @@ type Ping struct {
type
CloseClient
struct
{
type
CloseClient
struct
{
}
}
// Request a node identification. This must be the first
packet
for any
// Request a node identification. This must be the first
message
for any
// connection. Any -> Any.
// connection. Any -> Any.
type
RequestIdentification
struct
{
type
RequestIdentification
struct
{
NodeType
NodeType
// XXX name
NodeType
NodeType
// XXX name
...
...
go/neo/proto_test.go
View file @
c2a1b63a
...
@@ -68,10 +68,10 @@ func TestPktHeader(t *testing.T) {
...
@@ -68,10 +68,10 @@ func TestPktHeader(t *testing.T) {
}
}
}
}
// test marshalling for one
packet
type
// test marshalling for one
message
type
func
test
PktMarshal
(
t
*
testing
.
T
,
pkt
Pkt
,
encoded
string
)
{
func
test
MsgMarshal
(
t
*
testing
.
T
,
msg
Msg
,
encoded
string
)
{
typ
:=
reflect
.
TypeOf
(
pkt
)
.
Elem
()
// type of *pkt
typ
:=
reflect
.
TypeOf
(
msg
)
.
Elem
()
// type of *msg
pkt2
:=
reflect
.
New
(
typ
)
.
Interface
()
.
(
Pkt
)
msg2
:=
reflect
.
New
(
typ
)
.
Interface
()
.
(
Msg
)
defer
func
()
{
defer
func
()
{
if
e
:=
recover
();
e
!=
nil
{
if
e
:=
recover
();
e
!=
nil
{
t
.
Errorf
(
"%v: panic ↓↓↓:"
,
typ
)
t
.
Errorf
(
"%v: panic ↓↓↓:"
,
typ
)
...
@@ -79,10 +79,10 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
...
@@ -79,10 +79,10 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
}
}
}()
}()
//
pkt
.encode() == expected
//
msg
.encode() == expected
msgCode
:=
pkt
.
NEOPkt
MsgCode
()
msgCode
:=
msg
.
NEO
MsgCode
()
n
:=
pkt
.
NEOPkt
EncodedLen
()
n
:=
msg
.
NEOMsg
EncodedLen
()
msgType
:=
pkt
TypeRegistry
[
msgCode
]
msgType
:=
msg
TypeRegistry
[
msgCode
]
if
msgType
!=
typ
{
if
msgType
!=
typ
{
t
.
Errorf
(
"%v: msgCode = %v which corresponds to %v"
,
typ
,
msgCode
,
msgType
)
t
.
Errorf
(
"%v: msgCode = %v which corresponds to %v"
,
typ
,
msgCode
,
msgType
)
}
}
...
@@ -91,7 +91,7 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
...
@@ -91,7 +91,7 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
}
}
buf
:=
make
([]
byte
,
n
)
buf
:=
make
([]
byte
,
n
)
pkt
.
NEOPkt
Encode
(
buf
)
msg
.
NEOMsg
Encode
(
buf
)
if
string
(
buf
)
!=
encoded
{
if
string
(
buf
)
!=
encoded
{
t
.
Errorf
(
"%v: encode result unexpected:"
,
typ
)
t
.
Errorf
(
"%v: encode result unexpected:"
,
typ
)
t
.
Errorf
(
"
\t
have: %s"
,
hexpkg
.
EncodeToString
(
buf
))
t
.
Errorf
(
"
\t
have: %s"
,
hexpkg
.
EncodeToString
(
buf
))
...
@@ -121,13 +121,13 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
...
@@ -121,13 +121,13 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
}
}
}()
}()
pkt
.
NEOPkt
Encode
(
buf
[
:
l
])
msg
.
NEOMsg
Encode
(
buf
[
:
l
])
}()
}()
}
}
//
pkt
.decode() == expected
//
msg
.decode() == expected
data
:=
[]
byte
(
encoded
+
"noise"
)
data
:=
[]
byte
(
encoded
+
"noise"
)
n
,
err
:=
pkt2
.
NEOPkt
Decode
(
data
)
n
,
err
:=
msg2
.
NEOMsg
Decode
(
data
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Errorf
(
"%v: decode error %v"
,
typ
,
err
)
t
.
Errorf
(
"%v: decode error %v"
,
typ
,
err
)
}
}
...
@@ -135,13 +135,13 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
...
@@ -135,13 +135,13 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
t
.
Errorf
(
"%v: nread = %v ; want %v"
,
typ
,
n
,
len
(
encoded
))
t
.
Errorf
(
"%v: nread = %v ; want %v"
,
typ
,
n
,
len
(
encoded
))
}
}
if
!
reflect
.
DeepEqual
(
pkt2
,
pkt
)
{
if
!
reflect
.
DeepEqual
(
msg2
,
msg
)
{
t
.
Errorf
(
"%v: decode result unexpected: %v ; want %v"
,
typ
,
pkt2
,
pkt
)
t
.
Errorf
(
"%v: decode result unexpected: %v ; want %v"
,
typ
,
msg2
,
msg
)
}
}
// decode must detect buffer overflow
// decode must detect buffer overflow
for
l
:=
len
(
encoded
)
-
1
;
l
>=
0
;
l
--
{
for
l
:=
len
(
encoded
)
-
1
;
l
>=
0
;
l
--
{
n
,
err
=
pkt2
.
NEOPkt
Decode
(
data
[
:
l
])
n
,
err
=
msg2
.
NEOMsg
Decode
(
data
[
:
l
])
if
!
(
n
==
0
&&
err
==
ErrDecodeOverflow
)
{
if
!
(
n
==
0
&&
err
==
ErrDecodeOverflow
)
{
t
.
Errorf
(
"%v: decode overflow not detected on [:%v]"
,
typ
,
l
)
t
.
Errorf
(
"%v: decode overflow not detected on [:%v]"
,
typ
,
l
)
}
}
...
@@ -149,10 +149,10 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
...
@@ -149,10 +149,10 @@ func testPktMarshal(t *testing.T, pkt Pkt, encoded string) {
}
}
}
}
// test encoding/decoding of
packet
s
// test encoding/decoding of
message
s
func
Test
Pkt
Marshal
(
t
*
testing
.
T
)
{
func
Test
Msg
Marshal
(
t
*
testing
.
T
)
{
var
testv
=
[]
struct
{
var
testv
=
[]
struct
{
pkt
Pkt
msg
Msg
encoded
string
// []byte
encoded
string
// []byte
}
{
}
{
// empty
// empty
...
@@ -259,25 +259,25 @@ func TestPktMarshal(t *testing.T) {
...
@@ -259,25 +259,25 @@ func TestPktMarshal(t *testing.T) {
}
}
for
_
,
tt
:=
range
testv
{
for
_
,
tt
:=
range
testv
{
test
PktMarshal
(
t
,
tt
.
pkt
,
tt
.
encoded
)
test
MsgMarshal
(
t
,
tt
.
msg
,
tt
.
encoded
)
}
}
}
}
// For all
packet types: same as testPkt
Marshal but zero-values only
// For all
message types: same as testMsg
Marshal but zero-values only
// this way we additionally lightly check encode / decode overflow behaviour for all types.
// this way we additionally lightly check encode / decode overflow behaviour for all types.
func
Test
Pkt
MarshalAllOverflowLightly
(
t
*
testing
.
T
)
{
func
Test
Msg
MarshalAllOverflowLightly
(
t
*
testing
.
T
)
{
for
_
,
typ
:=
range
pkt
TypeRegistry
{
for
_
,
typ
:=
range
msg
TypeRegistry
{
// zero-value for a type
// zero-value for a type
pkt
:=
reflect
.
New
(
typ
)
.
Interface
()
.
(
Pkt
)
msg
:=
reflect
.
New
(
typ
)
.
Interface
()
.
(
Msg
)
l
:=
pkt
.
NEOPkt
EncodedLen
()
l
:=
msg
.
NEOMsg
EncodedLen
()
zerol
:=
make
([]
byte
,
l
)
zerol
:=
make
([]
byte
,
l
)
// decoding will turn nil slice & map into empty allocated ones.
// decoding will turn nil slice & map into empty allocated ones.
// we need it so that reflect.DeepEqual works for
pkt
encode/decode comparison
// we need it so that reflect.DeepEqual works for
msg
encode/decode comparison
n
,
err
:=
pkt
.
NEOPkt
Decode
(
zerol
)
n
,
err
:=
msg
.
NEOMsg
Decode
(
zerol
)
if
!
(
n
==
l
&&
err
==
nil
)
{
if
!
(
n
==
l
&&
err
==
nil
)
{
t
.
Errorf
(
"%v: zero-decode unexpected: %v, %v ; want %v, nil"
,
typ
,
n
,
err
,
l
)
t
.
Errorf
(
"%v: zero-decode unexpected: %v, %v ; want %v, nil"
,
typ
,
n
,
err
,
l
)
}
}
test
PktMarshal
(
t
,
pkt
,
string
(
zerol
))
test
MsgMarshal
(
t
,
msg
,
string
(
zerol
))
}
}
}
}
go/neo/protogen.go
View file @
c2a1b63a
...
@@ -20,15 +20,15 @@
...
@@ -20,15 +20,15 @@
/*
/*
NEO. Protocol module. Code generator
NEO. Protocol module. Code generator
This program generates marshalling code for
packet
types defined in proto.go .
This program generates marshalling code for
message
types defined in proto.go .
For every type 4 methods are generated in accordance with neo.
Pkt
interface:
For every type 4 methods are generated in accordance with neo.
Msg
interface:
NEO
Pkt
MsgCode() uint16
NEOMsgCode() uint16
NEO
Pkt
EncodedLen() int
NEO
Msg
EncodedLen() int
NEO
Pkt
Encode(buf []byte)
NEO
Msg
Encode(buf []byte)
NEO
Pkt
Decode(data []byte) (nread int, err error)
NEO
Msg
Decode(data []byte) (nread int, err error)
List of
packet
types is obtained via searching through proto.go AST - looking
List of
message
types is obtained via searching through proto.go AST - looking
for appropriate struct declarations there.
for appropriate struct declarations there.
Code generation for a type is organized via recursively walking through type's
Code generation for a type is organized via recursively walking through type's
...
@@ -169,11 +169,11 @@ import (
...
@@ -169,11 +169,11 @@ import (
"../zodb"
"../zodb"
)`
)
)`
)
pktTypeRegistry
:=
map
[
int
]
string
{}
// pkt
Code -> typename
msgTypeRegistry
:=
map
[
int
]
string
{}
// msg
Code -> typename
// go over
packet
types declaration and generate marshal code for them
// go over
message
types declaration and generate marshal code for them
buf
.
emit
(
"//
packet
s marshalling
\n
"
)
buf
.
emit
(
"//
message
s marshalling
\n
"
)
pkt
Code
:=
0
msg
Code
:=
0
for
_
,
decl
:=
range
f
.
Decls
{
for
_
,
decl
:=
range
f
.
Decls
{
// we look for types (which can be only under GenDecl)
// we look for types (which can be only under GenDecl)
gendecl
,
ok
:=
decl
.
(
*
ast
.
GenDecl
)
gendecl
,
ok
:=
decl
.
(
*
ast
.
GenDecl
)
...
@@ -195,35 +195,35 @@ import (
...
@@ -195,35 +195,35 @@ import (
continue
continue
case
*
ast
.
StructType
:
case
*
ast
.
StructType
:
fmt
.
Fprintf
(
&
buf
,
"// %d. %s
\n\n
"
,
pkt
Code
,
typename
)
fmt
.
Fprintf
(
&
buf
,
"// %d. %s
\n\n
"
,
msg
Code
,
typename
)
buf
.
emit
(
"func (_ *%s) NEO
Pkt
MsgCode() uint16 {"
,
typename
)
buf
.
emit
(
"func (_ *%s) NEOMsgCode() uint16 {"
,
typename
)
buf
.
emit
(
"return %d"
,
pkt
Code
)
buf
.
emit
(
"return %d"
,
msg
Code
)
buf
.
emit
(
"}
\n
"
)
buf
.
emit
(
"}
\n
"
)
buf
.
WriteString
(
generateCodecCode
(
typespec
,
&
sizer
{}))
buf
.
WriteString
(
generateCodecCode
(
typespec
,
&
sizer
{}))
buf
.
WriteString
(
generateCodecCode
(
typespec
,
&
encoder
{}))
buf
.
WriteString
(
generateCodecCode
(
typespec
,
&
encoder
{}))
buf
.
WriteString
(
generateCodecCode
(
typespec
,
&
decoder
{}))
buf
.
WriteString
(
generateCodecCode
(
typespec
,
&
decoder
{}))
pktTypeRegistry
[
pkt
Code
]
=
typename
msgTypeRegistry
[
msg
Code
]
=
typename
pkt
Code
++
msg
Code
++
}
}
}
}
}
}
// now generate
packet
types registry
// now generate
message
types registry
buf
.
emit
(
"
\n
// registry of
packet
types"
)
buf
.
emit
(
"
\n
// registry of
message
types"
)
buf
.
emit
(
"var
pktTypeRegistry = map[uint16]reflect.Type {"
)
// XXX key -> Pkt
Code ?
buf
.
emit
(
"var
msgTypeRegistry = map[uint16]reflect.Type {"
)
// XXX key -> Msg
Code ?
// ordered by
pkt
Code
// ordered by
msg
Code
pkt
CodeV
:=
[]
int
{}
msg
CodeV
:=
[]
int
{}
for
pktCode
:=
range
pkt
TypeRegistry
{
for
msgCode
:=
range
msg
TypeRegistry
{
pktCodeV
=
append
(
pktCodeV
,
pkt
Code
)
msgCodeV
=
append
(
msgCodeV
,
msg
Code
)
}
}
sort
.
Ints
(
pkt
CodeV
)
sort
.
Ints
(
msg
CodeV
)
for
_
,
pktCode
:=
range
pkt
CodeV
{
for
_
,
msgCode
:=
range
msg
CodeV
{
buf
.
emit
(
"%v: reflect.TypeOf(%v{}),"
,
pktCode
,
pktTypeRegistry
[
pkt
Code
])
buf
.
emit
(
"%v: reflect.TypeOf(%v{}),"
,
msgCode
,
msgTypeRegistry
[
msg
Code
])
}
}
buf
.
emit
(
"}"
)
buf
.
emit
(
"}"
)
...
@@ -456,21 +456,21 @@ func (o *OverflowCheck) AddExpr(format string, a ...interface{}) {
...
@@ -456,21 +456,21 @@ func (o *OverflowCheck) AddExpr(format string, a ...interface{}) {
}
}
// sizer generates code to compute encoded size of a
packet
// sizer generates code to compute encoded size of a
message
//
//
// when type is recursively walked, for every case symbolic size is added appropriately.
// when type is recursively walked, for every case symbolic size is added appropriately.
// in case when it was needed to generate loops, runtime accumulator variable is additionally used.
// in case when it was needed to generate loops, runtime accumulator variable is additionally used.
// result is: symbolic size + (optionally) runtime accumulator.
// result is: symbolic size + (optionally) runtime accumulator.
type
sizer
struct
{
type
sizer
struct
{
commonCodeGen
commonCodeGen
size
SymSize
// currently accumulated
packet
size
size
SymSize
// currently accumulated size
}
}
// encoder generates code to encode a
packet
// encoder generates code to encode a
message
//
//
// when type is recursively walked, for every case code to update `data[n:]` is generated.
// when type is recursively walked, for every case code to update `data[n:]` is generated.
// no overflow checks are generated as by neo.
Pkt
interface provided data
// no overflow checks are generated as by neo.
Msg
interface provided data
// buffer should have at least payloadLen length returned by NEO
Pkt
EncodedInfo()
// buffer should have at least payloadLen length returned by NEO
Msg
EncodedInfo()
// (the size computed by sizer).
// (the size computed by sizer).
//
//
// the code emitted looks like:
// the code emitted looks like:
...
@@ -479,14 +479,14 @@ type sizer struct {
...
@@ -479,14 +479,14 @@ type sizer struct {
// encode<typ2>(data[n2:], path2)
// encode<typ2>(data[n2:], path2)
// ...
// ...
//
//
// TODO encode have to care in NEO
Pkt
Encode to emit preambule such that bound
// TODO encode have to care in NEO
Msg
Encode to emit preambule such that bound
// checking is performed only once (currenty compiler emits many of them)
// checking is performed only once (currenty compiler emits many of them)
type
encoder
struct
{
type
encoder
struct
{
commonCodeGen
commonCodeGen
n
int
// current write position in data
n
int
// current write position in data
}
}
// decoder generates code to decode a
packet
// decoder generates code to decode a
message
//
//
// when type is recursively walked, for every case code to decode next item from
// when type is recursively walked, for every case code to decode next item from
// `data[n:]` is generated.
// `data[n:]` is generated.
...
@@ -527,7 +527,7 @@ var _ CodeGenerator = (*decoder)(nil)
...
@@ -527,7 +527,7 @@ var _ CodeGenerator = (*decoder)(nil)
func
(
s
*
sizer
)
generatedCode
()
string
{
func
(
s
*
sizer
)
generatedCode
()
string
{
code
:=
Buffer
{}
code
:=
Buffer
{}
// prologue
// prologue
code
.
emit
(
"func (%s *%s) NEO
Pkt
EncodedLen() int {"
,
s
.
recvName
,
s
.
typeName
)
code
.
emit
(
"func (%s *%s) NEO
Msg
EncodedLen() int {"
,
s
.
recvName
,
s
.
typeName
)
if
s
.
varUsed
[
"size"
]
{
if
s
.
varUsed
[
"size"
]
{
code
.
emit
(
"var %s int"
,
s
.
var_
(
"size"
))
code
.
emit
(
"var %s int"
,
s
.
var_
(
"size"
))
}
}
...
@@ -548,7 +548,7 @@ func (s *sizer) generatedCode() string {
...
@@ -548,7 +548,7 @@ func (s *sizer) generatedCode() string {
func
(
e
*
encoder
)
generatedCode
()
string
{
func
(
e
*
encoder
)
generatedCode
()
string
{
code
:=
Buffer
{}
code
:=
Buffer
{}
// prologue
// prologue
code
.
emit
(
"func (%s *%s) NEO
Pkt
Encode(data []byte) {"
,
e
.
recvName
,
e
.
typeName
)
code
.
emit
(
"func (%s *%s) NEO
Msg
Encode(data []byte) {"
,
e
.
recvName
,
e
.
typeName
)
code
.
Write
(
e
.
buf
.
Bytes
())
code
.
Write
(
e
.
buf
.
Bytes
())
...
@@ -655,7 +655,7 @@ func (d *decoder) generatedCode() string {
...
@@ -655,7 +655,7 @@ func (d *decoder) generatedCode() string {
code
:=
Buffer
{}
code
:=
Buffer
{}
// prologue
// prologue
code
.
emit
(
"func (%s *%s) NEO
Pkt
Decode(data []byte) (int, error) {"
,
d
.
recvName
,
d
.
typeName
)
code
.
emit
(
"func (%s *%s) NEO
Msg
Decode(data []byte) (int, error) {"
,
d
.
recvName
,
d
.
typeName
)
if
d
.
varUsed
[
"nread"
]
{
if
d
.
varUsed
[
"nread"
]
{
code
.
emit
(
"var %v uint32"
,
d
.
var_
(
"nread"
))
code
.
emit
(
"var %v uint32"
,
d
.
var_
(
"nread"
))
}
}
...
...
go/neo/server/master.go
View file @
c2a1b63a
...
@@ -64,7 +64,7 @@ type Master struct {
...
@@ -64,7 +64,7 @@ type Master struct {
type
nodeCome
struct
{
type
nodeCome
struct
{
link
*
neo
.
NodeLink
link
*
neo
.
NodeLink
idReq
neo
.
RequestIdentification
// we received this identification request
idReq
neo
.
RequestIdentification
// we received this identification request
idResp
chan
neo
.
Pkt
// what we reply (AcceptIdentification | Error)
idResp
chan
neo
.
Msg
// what we reply (AcceptIdentification | Error)
}
}
// node disconnects
// node disconnects
...
@@ -701,7 +701,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
...
@@ -701,7 +701,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
}
}
// convey identification request to master
// convey identification request to master
idRespCh
:=
make
(
chan
neo
.
Pkt
)
idRespCh
:=
make
(
chan
neo
.
Msg
)
m
.
nodeCome
<-
nodeCome
{
link
,
idReq
,
idRespCh
}
m
.
nodeCome
<-
nodeCome
{
link
,
idReq
,
idRespCh
}
idResp
:=
<-
idRespCh
idResp
:=
<-
idRespCh
...
@@ -757,7 +757,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
...
@@ -757,7 +757,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
m
.
stateMu
.
Unlock
()
m
.
stateMu
.
Unlock
()
go
func
()
{
go
func
()
{
var
pkt
neo
.
Pkt
var
msg
neo
.
Msg
for
{
for
{
select
{
select
{
...
@@ -767,7 +767,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
...
@@ -767,7 +767,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
return
return
case
nodeUpdateV
:=
<-
nodeCh
:
case
nodeUpdateV
:=
<-
nodeCh
:
pkt
=
&
neo
.
NotifyNodeInformation
{
msg
=
&
neo
.
NotifyNodeInformation
{
IdTimestamp
:
math
.
NaN
(),
// XXX
IdTimestamp
:
math
.
NaN
(),
// XXX
NodeList
:
nodeUpdateV
,
NodeList
:
nodeUpdateV
,
}
}
...
@@ -776,7 +776,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
...
@@ -776,7 +776,7 @@ func (m *Master) ServeLink(ctx context.Context, link *neo.NodeLink) {
// changed = true
// changed = true
}
}
err
=
neo
.
EncodeAndSend
(
connNotify
,
pkt
)
err
=
neo
.
EncodeAndSend
(
connNotify
,
msg
)
if
err
!=
nil
{
if
err
!=
nil
{
// XXX err
// XXX err
}
}
...
...
go/neo/server/storage.go
View file @
c2a1b63a
...
@@ -277,7 +277,7 @@ func (stor *Storage) ServeClient(ctx context.Context, conn *neo.Conn) {
...
@@ -277,7 +277,7 @@ func (stor *Storage) ServeClient(ctx context.Context, conn *neo.Conn) {
xid
.
TidBefore
=
true
xid
.
TidBefore
=
true
}
}
var
reply
neo
.
Pkt
var
reply
neo
.
Msg
data
,
tid
,
err
:=
stor
.
zstor
.
Load
(
xid
)
data
,
tid
,
err
:=
stor
.
zstor
.
Load
(
xid
)
if
err
!=
nil
{
if
err
!=
nil
{
// TODO translate err to NEO protocol error codes
// TODO translate err to NEO protocol error codes
...
@@ -299,7 +299,7 @@ func (stor *Storage) ServeClient(ctx context.Context, conn *neo.Conn) {
...
@@ -299,7 +299,7 @@ func (stor *Storage) ServeClient(ctx context.Context, conn *neo.Conn) {
neo
.
EncodeAndSend
(
conn
,
reply
)
// XXX err
neo
.
EncodeAndSend
(
conn
,
reply
)
// XXX err
case
*
neo
.
LastTransaction
:
case
*
neo
.
LastTransaction
:
var
reply
neo
.
Pkt
var
reply
neo
.
Msg
lastTid
,
err
:=
stor
.
zstor
.
LastTid
()
lastTid
,
err
:=
stor
.
zstor
.
LastTid
()
if
err
!=
nil
{
if
err
!=
nil
{
...
...
go/neo/x_connection.go
View file @
c2a1b63a
...
@@ -10,9 +10,9 @@ import (
...
@@ -10,9 +10,9 @@ import (
"lab.nexedi.com/kirr/go123/xerr"
"lab.nexedi.com/kirr/go123/xerr"
)
)
// Recv
AndDecode receives packet from conn and decodes
it
// Recv
receives packet and decodes message from
it
func
RecvAndDecode
(
conn
*
Conn
)
(
Pkt
,
error
)
{
func
RecvAndDecode
(
conn
*
Conn
)
(
Msg
,
error
)
{
pkt
,
err
:=
conn
.
Recv
()
pkt
,
err
:=
conn
.
recvPkt
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -20,7 +20,7 @@ func RecvAndDecode(conn *Conn) (Pkt, error) {
...
@@ -20,7 +20,7 @@ func RecvAndDecode(conn *Conn) (Pkt, error) {
// decode packet
// decode packet
pkth
:=
pkt
.
Header
()
pkth
:=
pkt
.
Header
()
msgCode
:=
ntoh16
(
pkth
.
MsgCode
)
msgCode
:=
ntoh16
(
pkth
.
MsgCode
)
msgType
:=
pkt
TypeRegistry
[
msgCode
]
msgType
:=
msg
TypeRegistry
[
msgCode
]
if
msgType
==
nil
{
if
msgType
==
nil
{
err
=
fmt
.
Errorf
(
"invalid msgCode (%d)"
,
msgCode
)
err
=
fmt
.
Errorf
(
"invalid msgCode (%d)"
,
msgCode
)
// XXX -> ProtoError ?
// XXX -> ProtoError ?
...
@@ -28,47 +28,47 @@ func RecvAndDecode(conn *Conn) (Pkt, error) {
...
@@ -28,47 +28,47 @@ func RecvAndDecode(conn *Conn) (Pkt, error) {
}
}
// TODO use free-list for decoded packets + when possible decode in-place
// TODO use free-list for decoded packets + when possible decode in-place
pktObj
:=
reflect
.
New
(
msgType
)
.
Interface
()
.
(
Pkt
)
msg
:=
reflect
.
New
(
msgType
)
.
Interface
()
.
(
Msg
)
_
,
err
=
pktObj
.
NEOPkt
Decode
(
pkt
.
Payload
())
_
,
err
=
msg
.
NEOMsg
Decode
(
pkt
.
Payload
())
if
err
!=
nil
{
if
err
!=
nil
{
// XXX -> ProtoError ?
// XXX -> ProtoError ?
return
nil
,
&
ConnError
{
Conn
:
conn
,
Op
:
"decode"
,
Err
:
err
}
return
nil
,
&
ConnError
{
Conn
:
conn
,
Op
:
"decode"
,
Err
:
err
}
}
}
return
pktObj
,
nil
return
msg
,
nil
}
}
// EncodeAndSend encodes
pkt and sends it to conn
// EncodeAndSend encodes
message into packet and sends it
func
EncodeAndSend
(
conn
*
Conn
,
pkt
Pkt
)
error
{
func
EncodeAndSend
(
conn
*
Conn
,
msg
Msg
)
error
{
l
:=
pkt
.
NEOPkt
EncodedLen
()
l
:=
msg
.
NEOMsg
EncodedLen
()
buf
:=
PktBuf
{
make
([]
byte
,
PktHeadLen
+
l
)}
// XXX -> freelist
buf
:=
PktBuf
{
make
([]
byte
,
PktHeadLen
+
l
)}
// XXX -> freelist
h
:=
buf
.
Header
()
h
:=
buf
.
Header
()
// h.ConnId will be set by conn.Send
// h.ConnId will be set by conn.Send
h
.
MsgCode
=
hton16
(
pkt
.
NEOPkt
MsgCode
())
h
.
MsgCode
=
hton16
(
msg
.
NEO
MsgCode
())
h
.
MsgLen
=
hton32
(
uint32
(
l
))
// XXX casting: think again
h
.
MsgLen
=
hton32
(
uint32
(
l
))
// XXX casting: think again
pkt
.
NEOPkt
Encode
(
buf
.
Payload
())
msg
.
NEOMsg
Encode
(
buf
.
Payload
())
return
conn
.
Send
(
&
buf
)
// XXX why pointer?
return
conn
.
sendPkt
(
&
buf
)
// XXX why pointer?
}
}
// Ask does simple request/response protocol exchange
// Ask does simple request/response protocol exchange
// It expects the answer to be exactly of resp type and errors otherwise
// It expects the answer to be exactly of resp type and errors otherwise
func
Ask
(
conn
*
Conn
,
req
Pkt
,
resp
Pkt
)
error
{
func
Ask
(
conn
*
Conn
,
req
Msg
,
resp
Msg
)
error
{
err
:=
EncodeAndSend
(
conn
,
req
)
err
:=
EncodeAndSend
(
conn
,
req
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
err
=
Expect
(
conn
,
resp
)
err
=
Expect
(
conn
,
resp
)
// XXX +Error
return
err
return
err
}
}
// ProtoError is returned when there wa
a
a protocol error, like receiving
// ProtoError is returned when there wa
s
a protocol error, like receiving
// unexpected packet or packet with wrong header
// unexpected packet or packet with wrong header
//
XXX -> ConnError{Op: "decode"} ?
//
FIXME -> ConnError{Op: "decode"}
type
ProtoError
struct
{
type
ProtoError
struct
{
Conn
*
Conn
Conn
*
Conn
Err
error
Err
error
...
@@ -80,8 +80,8 @@ func (e *ProtoError) Error() string {
...
@@ -80,8 +80,8 @@ func (e *ProtoError) Error() string {
// Expect receives 1 packet and expects it to be exactly of msg type
// Expect receives 1 packet and expects it to be exactly of msg type
// XXX naming (-> Recv1 ?)
// XXX naming (-> Recv1 ?)
func
Expect
(
conn
*
Conn
,
msg
Pkt
)
(
err
error
)
{
func
Expect
(
conn
*
Conn
,
msg
Msg
)
(
err
error
)
{
pkt
,
err
:=
conn
.
Recv
()
pkt
,
err
:=
conn
.
recvPkt
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -92,11 +92,11 @@ func Expect(conn *Conn, msg Pkt) (err error) {
...
@@ -92,11 +92,11 @@ func Expect(conn *Conn, msg Pkt) (err error) {
pkth
:=
pkt
.
Header
()
pkth
:=
pkt
.
Header
()
msgCode
:=
ntoh16
(
pkth
.
MsgCode
)
msgCode
:=
ntoh16
(
pkth
.
MsgCode
)
if
msgCode
!=
msg
.
NEO
Pkt
MsgCode
()
{
if
msgCode
!=
msg
.
NEOMsgCode
()
{
// unexpected Error response
// unexpected Error response
if
msgCode
==
(
&
Error
{})
.
NEO
Pkt
MsgCode
()
{
if
msgCode
==
(
&
Error
{})
.
NEOMsgCode
()
{
errResp
:=
Error
{}
errResp
:=
Error
{}
_
,
err
=
errResp
.
NEO
Pkt
Decode
(
pkt
.
Payload
())
_
,
err
=
errResp
.
NEO
Msg
Decode
(
pkt
.
Payload
())
if
err
!=
nil
{
if
err
!=
nil
{
return
&
ProtoError
{
conn
,
err
}
return
&
ProtoError
{
conn
,
err
}
}
}
...
@@ -108,7 +108,7 @@ func Expect(conn *Conn, msg Pkt) (err error) {
...
@@ -108,7 +108,7 @@ func Expect(conn *Conn, msg Pkt) (err error) {
return
ErrDecode
(
&
errResp
)
// XXX err ctx vs ^^^ errcontextf ?
return
ErrDecode
(
&
errResp
)
// XXX err ctx vs ^^^ errcontextf ?
}
}
msgType
:=
pkt
TypeRegistry
[
msgCode
]
msgType
:=
msg
TypeRegistry
[
msgCode
]
if
msgType
==
nil
{
if
msgType
==
nil
{
return
&
ProtoError
{
conn
,
fmt
.
Errorf
(
"invalid msgCode (%d)"
,
msgCode
)}
return
&
ProtoError
{
conn
,
fmt
.
Errorf
(
"invalid msgCode (%d)"
,
msgCode
)}
}
}
...
@@ -116,7 +116,7 @@ func Expect(conn *Conn, msg Pkt) (err error) {
...
@@ -116,7 +116,7 @@ func Expect(conn *Conn, msg Pkt) (err error) {
return
&
ProtoError
{
conn
,
fmt
.
Errorf
(
"unexpected packet: %v"
,
msgType
)}
return
&
ProtoError
{
conn
,
fmt
.
Errorf
(
"unexpected packet: %v"
,
msgType
)}
}
}
_
,
err
=
msg
.
NEO
Pkt
Decode
(
pkt
.
Payload
())
_
,
err
=
msg
.
NEO
Msg
Decode
(
pkt
.
Payload
())
if
err
!=
nil
{
if
err
!=
nil
{
return
&
ProtoError
{
conn
,
err
}
return
&
ProtoError
{
conn
,
err
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment