Commit c5278b55 authored by Kirill Smelkov's avatar Kirill Smelkov

X sync proto.go to recent py changes; Pkt.Len now describes only payload len (see a60e36e8)

TODO handshake for NodeLink to first check protocol versions
parent f873e151
...@@ -502,7 +502,6 @@ var ErrPktTooBig = errors.New("packet too big") ...@@ -502,7 +502,6 @@ var ErrPktTooBig = errors.New("packet too big")
// rx error, if any, is returned as is and is analyzed in serveRecv // rx error, if any, is returned as is and is analyzed in serveRecv
func (nl *NodeLink) recvPkt() (*PktBuf, error) { func (nl *NodeLink) recvPkt() (*PktBuf, error) {
// TODO organize rx buffers management (freelist etc) // TODO organize rx buffers management (freelist etc)
// TODO cleanup lots of ntoh32(...)
// 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)}
...@@ -516,22 +515,20 @@ func (nl *NodeLink) recvPkt() (*PktBuf, error) { ...@@ -516,22 +515,20 @@ func (nl *NodeLink) recvPkt() (*PktBuf, error) {
pkth := pkt.Header() pkth := pkt.Header()
// XXX -> better PktHeader.Decode() ? // XXX -> better PktHeader.Decode() ?
if ntoh32(pkth.Len) < PktHeadLen { pktLen := PktHeadLen + ntoh32(pkth.MsgLen) // .MsgLen is payload-only length without header
return nil, ErrPktTooSmall // length is a whole packet len with header if pktLen > MAX_PACKET_SIZE {
}
if ntoh32(pkth.Len) > MAX_PACKET_SIZE {
return nil, ErrPktTooBig return nil, ErrPktTooBig
} }
// XXX -> pkt.Data = xbytes.Resize32(pkt.Data[:n], ntoh32(pkth.Len)) // XXX -> pkt.Data = xbytes.Resize32(pkt.Data[:n], pktLen)
if ntoh32(pkth.Len) > uint32(cap(pkt.Data)) { if pktLen > uint32(cap(pkt.Data)) {
// grow rxbuf // grow rxbuf
rxbuf2 := make([]byte, ntoh32(pkth.Len)) rxbuf2 := make([]byte, pktLen)
copy(rxbuf2, pkt.Data[:n]) copy(rxbuf2, pkt.Data[:n])
pkt.Data = rxbuf2 pkt.Data = rxbuf2
} }
// cut .Data len to length of packet // cut .Data len to length of packet
pkt.Data = pkt.Data[:ntoh32(pkth.Len)] pkt.Data = pkt.Data[:pktLen]
// read rest of pkt data, if we need to // read rest of pkt data, if we need to
if n < len(pkt.Data) { if n < len(pkt.Data) {
......
...@@ -105,7 +105,7 @@ func _mkpkt(connid uint32, msgcode uint16, payload []byte) *PktBuf { ...@@ -105,7 +105,7 @@ func _mkpkt(connid uint32, msgcode uint16, payload []byte) *PktBuf {
h := pkt.Header() h := pkt.Header()
h.ConnId = hton32(connid) h.ConnId = hton32(connid)
h.MsgCode = hton16(msgcode) h.MsgCode = hton16(msgcode)
h.Len = hton32(PktHeadLen + uint32(len(payload))) h.MsgLen = hton32(uint32(len(payload)))
copy(pkt.Payload(), payload) copy(pkt.Payload(), payload)
return pkt return pkt
} }
...@@ -126,8 +126,8 @@ func xverifyPkt(pkt *PktBuf, connid uint32, msgcode uint16, payload []byte) { ...@@ -126,8 +126,8 @@ func xverifyPkt(pkt *PktBuf, connid uint32, msgcode uint16, payload []byte) {
if ntoh16(h.MsgCode) != msgcode { if ntoh16(h.MsgCode) != msgcode {
errv.Appendf("header: unexpected msgcode %v (want %v)", ntoh16(h.MsgCode), msgcode) errv.Appendf("header: unexpected msgcode %v (want %v)", ntoh16(h.MsgCode), msgcode)
} }
if ntoh32(h.Len) != uint32(PktHeadLen + len(payload)) { if ntoh32(h.MsgLen) != uint32(len(payload)) {
errv.Appendf("header: unexpected length %v (want %v)", ntoh32(h.Len), PktHeadLen + len(payload)) errv.Appendf("header: unexpected msglen %v (want %v)", ntoh32(h.MsgLen), len(payload))
} }
if !bytes.Equal(pkt.Payload(), payload) { if !bytes.Equal(pkt.Payload(), payload) {
errv.Appendf("payload differ") errv.Appendf("payload differ")
......
...@@ -29,8 +29,8 @@ type PktBuf struct { ...@@ -29,8 +29,8 @@ type PktBuf struct {
// XXX naming -> PktHeader ? // XXX naming -> PktHeader ?
type PktHead struct { type PktHead struct {
ConnId be32 // NOTE is .msgid in py ConnId be32 // NOTE is .msgid in py
MsgCode be16 MsgCode be16 // payload message code
Len be32 // whole packet length (including header) MsgLen be32 // payload message length (excluding packet header)
} }
// Get pointer to packet header // Get pointer to packet header
...@@ -62,7 +62,7 @@ func (pkt *PktBuf) String() string { ...@@ -62,7 +62,7 @@ func (pkt *PktBuf) String() string {
s += fmt.Sprintf(" %s", msgType) s += fmt.Sprintf(" %s", msgType)
} }
s += fmt.Sprintf(" #%d | ", ntoh32(h.Len)) s += fmt.Sprintf(" #%d | ", ntoh32(h.MsgLen))
s += fmt.Sprintf("% x", pkt.Payload()) // XXX better decode s += fmt.Sprintf("% x", pkt.Payload()) // XXX better decode
return s return s
......
...@@ -169,47 +169,10 @@ overflow: ...@@ -169,47 +169,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 4. Notify // 4. Error
func (p *Notify) NEOEncodedInfo() (uint16, int) {
return 4, 4 + len(p.Message)
}
func (p *Notify) NEOEncode(data []byte) {
{
l := uint32(len(p.Message))
binary.BigEndian.PutUint32(data[0:], l)
data = data[4:]
copy(data, p.Message)
data = data[l:]
}
}
func (p *Notify) NEODecode(data []byte) (int, error) {
var nread uint32
if uint32(len(data)) < 4 {
goto overflow
}
{
l := binary.BigEndian.Uint32(data[0:])
data = data[4:]
if uint32(len(data)) < l {
goto overflow
}
nread += l
p.Message = string(data[:l])
data = data[l:]
}
return 4 + int(nread), nil
overflow:
return 0, ErrDecodeOverflow
}
// 5. Error
func (p *Error) NEOEncodedInfo() (uint16, int) { func (p *Error) NEOEncodedInfo() (uint16, int) {
return 5, 8 + len(p.Message) return 4, 8 + len(p.Message)
} }
func (p *Error) NEOEncode(data []byte) { func (p *Error) NEOEncode(data []byte) {
...@@ -245,10 +208,10 @@ overflow: ...@@ -245,10 +208,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 6. Ping // 5. Ping
func (p *Ping) NEOEncodedInfo() (uint16, int) { func (p *Ping) NEOEncodedInfo() (uint16, int) {
return 6, 0 return 5, 0
} }
func (p *Ping) NEOEncode(data []byte) { func (p *Ping) NEOEncode(data []byte) {
...@@ -258,10 +221,10 @@ func (p *Ping) NEODecode(data []byte) (int, error) { ...@@ -258,10 +221,10 @@ func (p *Ping) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 7. CloseClient // 6. CloseClient
func (p *CloseClient) NEOEncodedInfo() (uint16, int) { func (p *CloseClient) NEOEncodedInfo() (uint16, int) {
return 7, 0 return 6, 0
} }
func (p *CloseClient) NEOEncode(data []byte) { func (p *CloseClient) NEOEncode(data []byte) {
...@@ -271,20 +234,19 @@ func (p *CloseClient) NEODecode(data []byte) (int, error) { ...@@ -271,20 +234,19 @@ func (p *CloseClient) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 8. RequestIdentification // 7. RequestIdentification
func (p *RequestIdentification) NEOEncodedInfo() (uint16, int) { func (p *RequestIdentification) NEOEncodedInfo() (uint16, int) {
return 8, 30 + len(p.Address.Host) + len(p.Name) return 7, 26 + len(p.Address.Host) + len(p.Name)
} }
func (p *RequestIdentification) NEOEncode(data []byte) { func (p *RequestIdentification) NEOEncode(data []byte) {
binary.BigEndian.PutUint32(data[0:], p.ProtocolVersion) binary.BigEndian.PutUint32(data[0:], uint32(int32(p.NodeType)))
binary.BigEndian.PutUint32(data[4:], uint32(int32(p.NodeType))) binary.BigEndian.PutUint32(data[4:], uint32(int32(p.NodeID)))
binary.BigEndian.PutUint32(data[8:], uint32(int32(p.NodeID)))
{ {
l := uint32(len(p.Address.Host)) l := uint32(len(p.Address.Host))
binary.BigEndian.PutUint32(data[12:], l) binary.BigEndian.PutUint32(data[8:], l)
data = data[16:] data = data[12:]
copy(data, p.Address.Host) copy(data, p.Address.Host)
data = data[l:] data = data[l:]
} }
...@@ -301,15 +263,14 @@ func (p *RequestIdentification) NEOEncode(data []byte) { ...@@ -301,15 +263,14 @@ func (p *RequestIdentification) NEOEncode(data []byte) {
func (p *RequestIdentification) NEODecode(data []byte) (int, error) { func (p *RequestIdentification) NEODecode(data []byte) (int, error) {
var nread uint32 var nread uint32
if uint32(len(data)) < 16 { if uint32(len(data)) < 12 {
goto overflow goto overflow
} }
p.ProtocolVersion = binary.BigEndian.Uint32(data[0:]) p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:])))
p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[4:]))) p.NodeID = NodeID(int32(binary.BigEndian.Uint32(data[4:])))
p.NodeID = NodeID(int32(binary.BigEndian.Uint32(data[8:])))
{ {
l := binary.BigEndian.Uint32(data[12:]) l := binary.BigEndian.Uint32(data[8:])
data = data[16:] data = data[12:]
if uint32(len(data)) < 6+l { if uint32(len(data)) < 6+l {
goto overflow goto overflow
} }
...@@ -329,21 +290,16 @@ func (p *RequestIdentification) NEODecode(data []byte) (int, error) { ...@@ -329,21 +290,16 @@ func (p *RequestIdentification) NEODecode(data []byte) (int, error) {
data = data[l:] data = data[l:]
} }
p.IdTimestamp = float64_NEODecode(data[0:]) p.IdTimestamp = float64_NEODecode(data[0:])
return 16 + int(nread), nil return 12 + int(nread), nil
overflow: overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 9. AcceptIdentification // 8. AcceptIdentification
func (p *AcceptIdentification) NEOEncodedInfo() (uint16, int) { func (p *AcceptIdentification) NEOEncodedInfo() (uint16, int) {
var size int return 8, 20
for i := 0; i < len(p.KnownMasterList); i++ {
a := &p.KnownMasterList[i]
size += len((*a).Address.Host)
}
return 9, 30 + len(p.Primary.Host) + len(p.KnownMasterList)*10 + size
} }
func (p *AcceptIdentification) NEOEncode(data []byte) { func (p *AcceptIdentification) NEOEncode(data []byte) {
...@@ -352,37 +308,10 @@ func (p *AcceptIdentification) NEOEncode(data []byte) { ...@@ -352,37 +308,10 @@ func (p *AcceptIdentification) NEOEncode(data []byte) {
binary.BigEndian.PutUint32(data[8:], p.NumPartitions) binary.BigEndian.PutUint32(data[8:], p.NumPartitions)
binary.BigEndian.PutUint32(data[12:], p.NumReplicas) binary.BigEndian.PutUint32(data[12:], p.NumReplicas)
binary.BigEndian.PutUint32(data[16:], uint32(int32(p.YourNodeID))) binary.BigEndian.PutUint32(data[16:], uint32(int32(p.YourNodeID)))
{
l := uint32(len(p.Primary.Host))
binary.BigEndian.PutUint32(data[20:], l)
data = data[24:]
copy(data, p.Primary.Host)
data = data[l:]
}
binary.BigEndian.PutUint16(data[0:], p.Primary.Port)
{
l := uint32(len(p.KnownMasterList))
binary.BigEndian.PutUint32(data[2:], l)
data = data[6:]
for i := 0; uint32(i) < l; i++ {
a := &p.KnownMasterList[i]
{
l := uint32(len((*a).Address.Host))
binary.BigEndian.PutUint32(data[0:], l)
data = data[4:]
copy(data, (*a).Address.Host)
data = data[l:]
}
binary.BigEndian.PutUint16(data[0:], (*a).Address.Port)
binary.BigEndian.PutUint32(data[2:], uint32(int32((*a).NodeID)))
data = data[6:]
}
}
} }
func (p *AcceptIdentification) NEODecode(data []byte) (int, error) { func (p *AcceptIdentification) NEODecode(data []byte) (int, error) {
var nread uint32 if uint32(len(data)) < 20 {
if uint32(len(data)) < 24 {
goto overflow goto overflow
} }
p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:]))) p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:])))
...@@ -390,55 +319,16 @@ func (p *AcceptIdentification) NEODecode(data []byte) (int, error) { ...@@ -390,55 +319,16 @@ func (p *AcceptIdentification) NEODecode(data []byte) (int, error) {
p.NumPartitions = binary.BigEndian.Uint32(data[8:]) p.NumPartitions = binary.BigEndian.Uint32(data[8:])
p.NumReplicas = binary.BigEndian.Uint32(data[12:]) p.NumReplicas = binary.BigEndian.Uint32(data[12:])
p.YourNodeID = NodeID(int32(binary.BigEndian.Uint32(data[16:]))) p.YourNodeID = NodeID(int32(binary.BigEndian.Uint32(data[16:])))
{ return 20, nil
l := binary.BigEndian.Uint32(data[20:])
data = data[24:]
if uint32(len(data)) < 6+l {
goto overflow
}
nread += 6 + l
p.Primary.Host = string(data[:l])
data = data[l:]
}
p.Primary.Port = binary.BigEndian.Uint16(data[0:])
{
l := binary.BigEndian.Uint32(data[2:])
data = data[6:]
p.KnownMasterList = make([]struct {
Address
NodeID NodeID
}, l)
for i := 0; uint32(i) < l; i++ {
a := &p.KnownMasterList[i]
if uint32(len(data)) < 4 {
goto overflow
}
{
l := binary.BigEndian.Uint32(data[0:])
data = data[4:]
if uint32(len(data)) < 6+l {
goto overflow
}
nread += 6 + l
(*a).Address.Host = string(data[:l])
data = data[l:]
}
(*a).Address.Port = binary.BigEndian.Uint16(data[0:])
(*a).NodeID = NodeID(int32(binary.BigEndian.Uint32(data[2:])))
data = data[6:]
}
nread += l * 4
}
return 24 + int(nread), nil
overflow: overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 10. PrimaryMaster // 9. PrimaryMaster
func (p *PrimaryMaster) NEOEncodedInfo() (uint16, int) { func (p *PrimaryMaster) NEOEncodedInfo() (uint16, int) {
return 10, 0 return 9, 0
} }
func (p *PrimaryMaster) NEOEncode(data []byte) { func (p *PrimaryMaster) NEOEncode(data []byte) {
...@@ -448,10 +338,10 @@ func (p *PrimaryMaster) NEODecode(data []byte) (int, error) { ...@@ -448,10 +338,10 @@ func (p *PrimaryMaster) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 11. AnswerPrimary // 10. AnswerPrimary
func (p *AnswerPrimary) NEOEncodedInfo() (uint16, int) { func (p *AnswerPrimary) NEOEncodedInfo() (uint16, int) {
return 11, 4 return 10, 4
} }
func (p *AnswerPrimary) NEOEncode(data []byte) { func (p *AnswerPrimary) NEOEncode(data []byte) {
...@@ -469,36 +359,78 @@ overflow: ...@@ -469,36 +359,78 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 12. AnnouncePrimary // 11. NotPrimaryMaster
func (p *AnnouncePrimary) NEOEncodedInfo() (uint16, int) {
return 12, 0
}
func (p *AnnouncePrimary) NEOEncode(data []byte) {
}
func (p *AnnouncePrimary) NEODecode(data []byte) (int, error) { func (p *NotPrimaryMaster) NEOEncodedInfo() (uint16, int) {
return 0, nil var size int
for i := 0; i < len(p.KnownMasterList); i++ {
a := &p.KnownMasterList[i]
size += len((*a).Address.Host)
}
return 11, 8 + len(p.KnownMasterList)*6 + size
} }
// 13. ReelectPrimary func (p *NotPrimaryMaster) NEOEncode(data []byte) {
binary.BigEndian.PutUint32(data[0:], uint32(int32(p.Primary)))
func (p *ReelectPrimary) NEOEncodedInfo() (uint16, int) { {
return 13, 0 l := uint32(len(p.KnownMasterList))
binary.BigEndian.PutUint32(data[4:], l)
data = data[8:]
for i := 0; uint32(i) < l; i++ {
a := &p.KnownMasterList[i]
{
l := uint32(len((*a).Address.Host))
binary.BigEndian.PutUint32(data[0:], l)
data = data[4:]
copy(data, (*a).Address.Host)
data = data[l:]
}
binary.BigEndian.PutUint16(data[0:], (*a).Address.Port)
data = data[2:]
}
}
} }
func (p *ReelectPrimary) NEOEncode(data []byte) { func (p *NotPrimaryMaster) NEODecode(data []byte) (int, error) {
} var nread uint32
if uint32(len(data)) < 8 {
goto overflow
}
p.Primary = NodeID(int32(binary.BigEndian.Uint32(data[0:])))
{
l := binary.BigEndian.Uint32(data[4:])
data = data[8:]
p.KnownMasterList = make([]struct{ Address }, l)
for i := 0; uint32(i) < l; i++ {
a := &p.KnownMasterList[i]
if uint32(len(data)) < 4 {
goto overflow
}
{
l := binary.BigEndian.Uint32(data[0:])
data = data[4:]
if uint32(len(data)) < 2+l {
goto overflow
}
nread += 2 + l
(*a).Address.Host = string(data[:l])
data = data[l:]
}
(*a).Address.Port = binary.BigEndian.Uint16(data[0:])
data = data[2:]
}
nread += l * 4
}
return 8 + int(nread), nil
func (p *ReelectPrimary) NEODecode(data []byte) (int, error) { overflow:
return 0, nil return 0, ErrDecodeOverflow
} }
// 14. Recovery // 12. Recovery
func (p *Recovery) NEOEncodedInfo() (uint16, int) { func (p *Recovery) NEOEncodedInfo() (uint16, int) {
return 14, 0 return 12, 0
} }
func (p *Recovery) NEOEncode(data []byte) { func (p *Recovery) NEOEncode(data []byte) {
...@@ -508,10 +440,10 @@ func (p *Recovery) NEODecode(data []byte) (int, error) { ...@@ -508,10 +440,10 @@ func (p *Recovery) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 15. AnswerRecovery // 13. AnswerRecovery
func (p *AnswerRecovery) NEOEncodedInfo() (uint16, int) { func (p *AnswerRecovery) NEOEncodedInfo() (uint16, int) {
return 15, 24 return 13, 24
} }
func (p *AnswerRecovery) NEOEncode(data []byte) { func (p *AnswerRecovery) NEOEncode(data []byte) {
...@@ -533,10 +465,10 @@ overflow: ...@@ -533,10 +465,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 16. LastIDs // 14. LastIDs
func (p *LastIDs) NEOEncodedInfo() (uint16, int) { func (p *LastIDs) NEOEncodedInfo() (uint16, int) {
return 16, 0 return 14, 0
} }
func (p *LastIDs) NEOEncode(data []byte) { func (p *LastIDs) NEOEncode(data []byte) {
...@@ -546,10 +478,10 @@ func (p *LastIDs) NEODecode(data []byte) (int, error) { ...@@ -546,10 +478,10 @@ func (p *LastIDs) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 17. AnswerLastIDs // 15. AnswerLastIDs
func (p *AnswerLastIDs) NEOEncodedInfo() (uint16, int) { func (p *AnswerLastIDs) NEOEncodedInfo() (uint16, int) {
return 17, 16 return 15, 16
} }
func (p *AnswerLastIDs) NEOEncode(data []byte) { func (p *AnswerLastIDs) NEOEncode(data []byte) {
...@@ -569,10 +501,10 @@ overflow: ...@@ -569,10 +501,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 18. X_PartitionTable // 16. X_PartitionTable
func (p *X_PartitionTable) NEOEncodedInfo() (uint16, int) { func (p *X_PartitionTable) NEOEncodedInfo() (uint16, int) {
return 18, 0 return 16, 0
} }
func (p *X_PartitionTable) NEOEncode(data []byte) { func (p *X_PartitionTable) NEOEncode(data []byte) {
...@@ -582,7 +514,7 @@ func (p *X_PartitionTable) NEODecode(data []byte) (int, error) { ...@@ -582,7 +514,7 @@ func (p *X_PartitionTable) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 19. AnswerPartitionTable // 17. AnswerPartitionTable
func (p *AnswerPartitionTable) NEOEncodedInfo() (uint16, int) { func (p *AnswerPartitionTable) NEOEncodedInfo() (uint16, int) {
var size int var size int
...@@ -590,7 +522,7 @@ func (p *AnswerPartitionTable) NEOEncodedInfo() (uint16, int) { ...@@ -590,7 +522,7 @@ func (p *AnswerPartitionTable) NEOEncodedInfo() (uint16, int) {
a := &p.RowList[i] a := &p.RowList[i]
size += len((*a).CellList) * 8 size += len((*a).CellList) * 8
} }
return 19, 12 + len(p.RowList)*8 + size return 17, 12 + len(p.RowList)*8 + size
} }
func (p *AnswerPartitionTable) NEOEncode(data []byte) { func (p *AnswerPartitionTable) NEOEncode(data []byte) {
...@@ -658,7 +590,7 @@ overflow: ...@@ -658,7 +590,7 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 20. NotifyPartitionTable // 18. NotifyPartitionTable
func (p *NotifyPartitionTable) NEOEncodedInfo() (uint16, int) { func (p *NotifyPartitionTable) NEOEncodedInfo() (uint16, int) {
var size int var size int
...@@ -666,7 +598,7 @@ func (p *NotifyPartitionTable) NEOEncodedInfo() (uint16, int) { ...@@ -666,7 +598,7 @@ func (p *NotifyPartitionTable) NEOEncodedInfo() (uint16, int) {
a := &p.RowList[i] a := &p.RowList[i]
size += len((*a).CellList) * 8 size += len((*a).CellList) * 8
} }
return 20, 12 + len(p.RowList)*8 + size return 18, 12 + len(p.RowList)*8 + size
} }
func (p *NotifyPartitionTable) NEOEncode(data []byte) { func (p *NotifyPartitionTable) NEOEncode(data []byte) {
...@@ -734,10 +666,10 @@ overflow: ...@@ -734,10 +666,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 21. PartitionChanges // 19. PartitionChanges
func (p *PartitionChanges) NEOEncodedInfo() (uint16, int) { func (p *PartitionChanges) NEOEncodedInfo() (uint16, int) {
return 21, 12 + len(p.CellList)*12 return 19, 12 + len(p.CellList)*12
} }
func (p *PartitionChanges) NEOEncode(data []byte) { func (p *PartitionChanges) NEOEncode(data []byte) {
...@@ -788,10 +720,10 @@ overflow: ...@@ -788,10 +720,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 22. StartOperation // 20. StartOperation
func (p *StartOperation) NEOEncodedInfo() (uint16, int) { func (p *StartOperation) NEOEncodedInfo() (uint16, int) {
return 22, 1 return 20, 1
} }
func (p *StartOperation) NEOEncode(data []byte) { func (p *StartOperation) NEOEncode(data []byte) {
...@@ -809,10 +741,10 @@ overflow: ...@@ -809,10 +741,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 23. StopOperation // 21. StopOperation
func (p *StopOperation) NEOEncodedInfo() (uint16, int) { func (p *StopOperation) NEOEncodedInfo() (uint16, int) {
return 23, 0 return 21, 0
} }
func (p *StopOperation) NEOEncode(data []byte) { func (p *StopOperation) NEOEncode(data []byte) {
...@@ -822,10 +754,10 @@ func (p *StopOperation) NEODecode(data []byte) (int, error) { ...@@ -822,10 +754,10 @@ func (p *StopOperation) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 24. UnfinishedTransactions // 22. UnfinishedTransactions
func (p *UnfinishedTransactions) NEOEncodedInfo() (uint16, int) { func (p *UnfinishedTransactions) NEOEncodedInfo() (uint16, int) {
return 24, 4 + len(p.RowList)*4 return 22, 4 + len(p.RowList)*4
} }
func (p *UnfinishedTransactions) NEOEncode(data []byte) { func (p *UnfinishedTransactions) NEOEncode(data []byte) {
...@@ -866,10 +798,10 @@ overflow: ...@@ -866,10 +798,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 25. AnswerUnfinishedTransactions // 23. AnswerUnfinishedTransactions
func (p *AnswerUnfinishedTransactions) NEOEncodedInfo() (uint16, int) { func (p *AnswerUnfinishedTransactions) NEOEncodedInfo() (uint16, int) {
return 25, 12 + len(p.TidList)*8 return 23, 12 + len(p.TidList)*8
} }
func (p *AnswerUnfinishedTransactions) NEOEncode(data []byte) { func (p *AnswerUnfinishedTransactions) NEOEncode(data []byte) {
...@@ -912,10 +844,10 @@ overflow: ...@@ -912,10 +844,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 26. LockedTransactions // 24. LockedTransactions
func (p *LockedTransactions) NEOEncodedInfo() (uint16, int) { func (p *LockedTransactions) NEOEncodedInfo() (uint16, int) {
return 26, 0 return 24, 0
} }
func (p *LockedTransactions) NEOEncode(data []byte) { func (p *LockedTransactions) NEOEncode(data []byte) {
...@@ -925,10 +857,10 @@ func (p *LockedTransactions) NEODecode(data []byte) (int, error) { ...@@ -925,10 +857,10 @@ func (p *LockedTransactions) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 27. AnswerLockedTransactions // 25. AnswerLockedTransactions
func (p *AnswerLockedTransactions) NEOEncodedInfo() (uint16, int) { func (p *AnswerLockedTransactions) NEOEncodedInfo() (uint16, int) {
return 27, 4 + len(p.TidDict)*16 return 25, 4 + len(p.TidDict)*16
} }
func (p *AnswerLockedTransactions) NEOEncode(data []byte) { func (p *AnswerLockedTransactions) NEOEncode(data []byte) {
...@@ -975,10 +907,10 @@ overflow: ...@@ -975,10 +907,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 28. FinalTID // 26. FinalTID
func (p *FinalTID) NEOEncodedInfo() (uint16, int) { func (p *FinalTID) NEOEncodedInfo() (uint16, int) {
return 28, 8 return 26, 8
} }
func (p *FinalTID) NEOEncode(data []byte) { func (p *FinalTID) NEOEncode(data []byte) {
...@@ -996,10 +928,10 @@ overflow: ...@@ -996,10 +928,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 29. AnswerFinalTID // 27. AnswerFinalTID
func (p *AnswerFinalTID) NEOEncodedInfo() (uint16, int) { func (p *AnswerFinalTID) NEOEncodedInfo() (uint16, int) {
return 29, 8 return 27, 8
} }
func (p *AnswerFinalTID) NEOEncode(data []byte) { func (p *AnswerFinalTID) NEOEncode(data []byte) {
...@@ -1017,10 +949,10 @@ overflow: ...@@ -1017,10 +949,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 30. ValidateTransaction // 28. ValidateTransaction
func (p *ValidateTransaction) NEOEncodedInfo() (uint16, int) { func (p *ValidateTransaction) NEOEncodedInfo() (uint16, int) {
return 30, 16 return 28, 16
} }
func (p *ValidateTransaction) NEOEncode(data []byte) { func (p *ValidateTransaction) NEOEncode(data []byte) {
...@@ -1040,10 +972,10 @@ overflow: ...@@ -1040,10 +972,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 31. BeginTransaction // 29. BeginTransaction
func (p *BeginTransaction) NEOEncodedInfo() (uint16, int) { func (p *BeginTransaction) NEOEncodedInfo() (uint16, int) {
return 31, 8 return 29, 8
} }
func (p *BeginTransaction) NEOEncode(data []byte) { func (p *BeginTransaction) NEOEncode(data []byte) {
...@@ -1061,10 +993,10 @@ overflow: ...@@ -1061,10 +993,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 32. AnswerBeginTransaction // 30. AnswerBeginTransaction
func (p *AnswerBeginTransaction) NEOEncodedInfo() (uint16, int) { func (p *AnswerBeginTransaction) NEOEncodedInfo() (uint16, int) {
return 32, 8 return 30, 8
} }
func (p *AnswerBeginTransaction) NEOEncode(data []byte) { func (p *AnswerBeginTransaction) NEOEncode(data []byte) {
...@@ -1082,10 +1014,10 @@ overflow: ...@@ -1082,10 +1014,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 33. FailedVote // 31. FailedVote
func (p *FailedVote) NEOEncodedInfo() (uint16, int) { func (p *FailedVote) NEOEncodedInfo() (uint16, int) {
return 33, 12 + len(p.NodeList)*4 return 31, 12 + len(p.NodeList)*4
} }
func (p *FailedVote) NEOEncode(data []byte) { func (p *FailedVote) NEOEncode(data []byte) {
...@@ -1128,10 +1060,10 @@ overflow: ...@@ -1128,10 +1060,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 34. FinishTransaction // 32. FinishTransaction
func (p *FinishTransaction) NEOEncodedInfo() (uint16, int) { func (p *FinishTransaction) NEOEncodedInfo() (uint16, int) {
return 34, 16 + len(p.OIDList)*8 + len(p.CheckedList)*8 return 32, 16 + len(p.OIDList)*8 + len(p.CheckedList)*8
} }
func (p *FinishTransaction) NEOEncode(data []byte) { func (p *FinishTransaction) NEOEncode(data []byte) {
...@@ -1198,10 +1130,10 @@ overflow: ...@@ -1198,10 +1130,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 35. AnswerFinishTransaction // 33. AnswerFinishTransaction
func (p *AnswerFinishTransaction) NEOEncodedInfo() (uint16, int) { func (p *AnswerFinishTransaction) NEOEncodedInfo() (uint16, int) {
return 35, 16 return 33, 16
} }
func (p *AnswerFinishTransaction) NEOEncode(data []byte) { func (p *AnswerFinishTransaction) NEOEncode(data []byte) {
...@@ -1221,10 +1153,10 @@ overflow: ...@@ -1221,10 +1153,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 36. NotifyTransactionFinished // 34. NotifyTransactionFinished
func (p *NotifyTransactionFinished) NEOEncodedInfo() (uint16, int) { func (p *NotifyTransactionFinished) NEOEncodedInfo() (uint16, int) {
return 36, 16 return 34, 16
} }
func (p *NotifyTransactionFinished) NEOEncode(data []byte) { func (p *NotifyTransactionFinished) NEOEncode(data []byte) {
...@@ -1244,10 +1176,10 @@ overflow: ...@@ -1244,10 +1176,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 37. LockInformation // 35. LockInformation
func (p *LockInformation) NEOEncodedInfo() (uint16, int) { func (p *LockInformation) NEOEncodedInfo() (uint16, int) {
return 37, 16 return 35, 16
} }
func (p *LockInformation) NEOEncode(data []byte) { func (p *LockInformation) NEOEncode(data []byte) {
...@@ -1267,10 +1199,10 @@ overflow: ...@@ -1267,10 +1199,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 38. AnswerLockInformation // 36. AnswerLockInformation
func (p *AnswerLockInformation) NEOEncodedInfo() (uint16, int) { func (p *AnswerLockInformation) NEOEncodedInfo() (uint16, int) {
return 38, 8 return 36, 8
} }
func (p *AnswerLockInformation) NEOEncode(data []byte) { func (p *AnswerLockInformation) NEOEncode(data []byte) {
...@@ -1288,10 +1220,10 @@ overflow: ...@@ -1288,10 +1220,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 39. InvalidateObjects // 37. InvalidateObjects
func (p *InvalidateObjects) NEOEncodedInfo() (uint16, int) { func (p *InvalidateObjects) NEOEncodedInfo() (uint16, int) {
return 39, 12 + len(p.OidList)*8 return 37, 12 + len(p.OidList)*8
} }
func (p *InvalidateObjects) NEOEncode(data []byte) { func (p *InvalidateObjects) NEOEncode(data []byte) {
...@@ -1334,10 +1266,10 @@ overflow: ...@@ -1334,10 +1266,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 40. UnlockInformation // 38. UnlockInformation
func (p *UnlockInformation) NEOEncodedInfo() (uint16, int) { func (p *UnlockInformation) NEOEncodedInfo() (uint16, int) {
return 40, 8 return 38, 8
} }
func (p *UnlockInformation) NEOEncode(data []byte) { func (p *UnlockInformation) NEOEncode(data []byte) {
...@@ -1355,10 +1287,10 @@ overflow: ...@@ -1355,10 +1287,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 41. GenerateOIDs // 39. GenerateOIDs
func (p *GenerateOIDs) NEOEncodedInfo() (uint16, int) { func (p *GenerateOIDs) NEOEncodedInfo() (uint16, int) {
return 41, 4 return 39, 4
} }
func (p *GenerateOIDs) NEOEncode(data []byte) { func (p *GenerateOIDs) NEOEncode(data []byte) {
...@@ -1376,10 +1308,10 @@ overflow: ...@@ -1376,10 +1308,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 42. AnswerGenerateOIDs // 40. AnswerGenerateOIDs
func (p *AnswerGenerateOIDs) NEOEncodedInfo() (uint16, int) { func (p *AnswerGenerateOIDs) NEOEncodedInfo() (uint16, int) {
return 42, 4 + len(p.OidList)*8 return 40, 4 + len(p.OidList)*8
} }
func (p *AnswerGenerateOIDs) NEOEncode(data []byte) { func (p *AnswerGenerateOIDs) NEOEncode(data []byte) {
...@@ -1420,10 +1352,10 @@ overflow: ...@@ -1420,10 +1352,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 43. Deadlock // 41. Deadlock
func (p *Deadlock) NEOEncodedInfo() (uint16, int) { func (p *Deadlock) NEOEncodedInfo() (uint16, int) {
return 43, 16 return 41, 16
} }
func (p *Deadlock) NEOEncode(data []byte) { func (p *Deadlock) NEOEncode(data []byte) {
...@@ -1443,10 +1375,10 @@ overflow: ...@@ -1443,10 +1375,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 44. RebaseTransaction // 42. RebaseTransaction
func (p *RebaseTransaction) NEOEncodedInfo() (uint16, int) { func (p *RebaseTransaction) NEOEncodedInfo() (uint16, int) {
return 44, 16 return 42, 16
} }
func (p *RebaseTransaction) NEOEncode(data []byte) { func (p *RebaseTransaction) NEOEncode(data []byte) {
...@@ -1466,10 +1398,10 @@ overflow: ...@@ -1466,10 +1398,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 45. AnswerRebaseTransaction // 43. AnswerRebaseTransaction
func (p *AnswerRebaseTransaction) NEOEncodedInfo() (uint16, int) { func (p *AnswerRebaseTransaction) NEOEncodedInfo() (uint16, int) {
return 45, 4 + len(p.OidList)*8 return 43, 4 + len(p.OidList)*8
} }
func (p *AnswerRebaseTransaction) NEOEncode(data []byte) { func (p *AnswerRebaseTransaction) NEOEncode(data []byte) {
...@@ -1510,10 +1442,10 @@ overflow: ...@@ -1510,10 +1442,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 46. RebaseObject // 44. RebaseObject
func (p *RebaseObject) NEOEncodedInfo() (uint16, int) { func (p *RebaseObject) NEOEncodedInfo() (uint16, int) {
return 46, 16 return 44, 16
} }
func (p *RebaseObject) NEOEncode(data []byte) { func (p *RebaseObject) NEOEncode(data []byte) {
...@@ -1533,10 +1465,10 @@ overflow: ...@@ -1533,10 +1465,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 47. AnswerRebaseObject // 45. AnswerRebaseObject
func (p *AnswerRebaseObject) NEOEncodedInfo() (uint16, int) { func (p *AnswerRebaseObject) NEOEncodedInfo() (uint16, int) {
return 47, 41 + len(p.Data) return 45, 41 + len(p.Data)
} }
func (p *AnswerRebaseObject) NEOEncode(data []byte) { func (p *AnswerRebaseObject) NEOEncode(data []byte) {
...@@ -1579,10 +1511,10 @@ overflow: ...@@ -1579,10 +1511,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 48. StoreObject // 46. StoreObject
func (p *StoreObject) NEOEncodedInfo() (uint16, int) { func (p *StoreObject) NEOEncodedInfo() (uint16, int) {
return 48, 57 + len(p.Data) return 46, 57 + len(p.Data)
} }
func (p *StoreObject) NEOEncode(data []byte) { func (p *StoreObject) NEOEncode(data []byte) {
...@@ -1629,10 +1561,10 @@ overflow: ...@@ -1629,10 +1561,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 49. AnswerStoreObject // 47. AnswerStoreObject
func (p *AnswerStoreObject) NEOEncodedInfo() (uint16, int) { func (p *AnswerStoreObject) NEOEncodedInfo() (uint16, int) {
return 49, 8 return 47, 8
} }
func (p *AnswerStoreObject) NEOEncode(data []byte) { func (p *AnswerStoreObject) NEOEncode(data []byte) {
...@@ -1650,10 +1582,10 @@ overflow: ...@@ -1650,10 +1582,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 50. AbortTransaction // 48. AbortTransaction
func (p *AbortTransaction) NEOEncodedInfo() (uint16, int) { func (p *AbortTransaction) NEOEncodedInfo() (uint16, int) {
return 50, 12 + len(p.NodeList)*4 return 48, 12 + len(p.NodeList)*4
} }
func (p *AbortTransaction) NEOEncode(data []byte) { func (p *AbortTransaction) NEOEncode(data []byte) {
...@@ -1696,10 +1628,10 @@ overflow: ...@@ -1696,10 +1628,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 51. StoreTransaction // 49. StoreTransaction
func (p *StoreTransaction) NEOEncodedInfo() (uint16, int) { func (p *StoreTransaction) NEOEncodedInfo() (uint16, int) {
return 51, 24 + len(p.User) + len(p.Description) + len(p.Extension) + len(p.OidList)*8 return 49, 24 + len(p.User) + len(p.Description) + len(p.Extension) + len(p.OidList)*8
} }
func (p *StoreTransaction) NEOEncode(data []byte) { func (p *StoreTransaction) NEOEncode(data []byte) {
...@@ -1793,10 +1725,10 @@ overflow: ...@@ -1793,10 +1725,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 52. VoteTransaction // 50. VoteTransaction
func (p *VoteTransaction) NEOEncodedInfo() (uint16, int) { func (p *VoteTransaction) NEOEncodedInfo() (uint16, int) {
return 52, 8 return 50, 8
} }
func (p *VoteTransaction) NEOEncode(data []byte) { func (p *VoteTransaction) NEOEncode(data []byte) {
...@@ -1814,10 +1746,10 @@ overflow: ...@@ -1814,10 +1746,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 53. GetObject // 51. GetObject
func (p *GetObject) NEOEncodedInfo() (uint16, int) { func (p *GetObject) NEOEncodedInfo() (uint16, int) {
return 53, 24 return 51, 24
} }
func (p *GetObject) NEOEncode(data []byte) { func (p *GetObject) NEOEncode(data []byte) {
...@@ -1839,10 +1771,10 @@ overflow: ...@@ -1839,10 +1771,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 54. AnswerGetObject // 52. AnswerGetObject
func (p *AnswerGetObject) NEOEncodedInfo() (uint16, int) { func (p *AnswerGetObject) NEOEncodedInfo() (uint16, int) {
return 54, 57 + len(p.Data) return 52, 57 + len(p.Data)
} }
func (p *AnswerGetObject) NEOEncode(data []byte) { func (p *AnswerGetObject) NEOEncode(data []byte) {
...@@ -1889,10 +1821,10 @@ overflow: ...@@ -1889,10 +1821,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 55. TIDList // 53. TIDList
func (p *TIDList) NEOEncodedInfo() (uint16, int) { func (p *TIDList) NEOEncodedInfo() (uint16, int) {
return 55, 20 return 53, 20
} }
func (p *TIDList) NEOEncode(data []byte) { func (p *TIDList) NEOEncode(data []byte) {
...@@ -1914,10 +1846,10 @@ overflow: ...@@ -1914,10 +1846,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 56. AnswerTIDList // 54. AnswerTIDList
func (p *AnswerTIDList) NEOEncodedInfo() (uint16, int) { func (p *AnswerTIDList) NEOEncodedInfo() (uint16, int) {
return 56, 4 + len(p.TIDList)*8 return 54, 4 + len(p.TIDList)*8
} }
func (p *AnswerTIDList) NEOEncode(data []byte) { func (p *AnswerTIDList) NEOEncode(data []byte) {
...@@ -1958,10 +1890,10 @@ overflow: ...@@ -1958,10 +1890,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 57. TIDListFrom // 55. TIDListFrom
func (p *TIDListFrom) NEOEncodedInfo() (uint16, int) { func (p *TIDListFrom) NEOEncodedInfo() (uint16, int) {
return 57, 24 return 55, 24
} }
func (p *TIDListFrom) NEOEncode(data []byte) { func (p *TIDListFrom) NEOEncode(data []byte) {
...@@ -1985,10 +1917,10 @@ overflow: ...@@ -1985,10 +1917,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 58. AnswerTIDListFrom // 56. AnswerTIDListFrom
func (p *AnswerTIDListFrom) NEOEncodedInfo() (uint16, int) { func (p *AnswerTIDListFrom) NEOEncodedInfo() (uint16, int) {
return 58, 4 + len(p.TidList)*8 return 56, 4 + len(p.TidList)*8
} }
func (p *AnswerTIDListFrom) NEOEncode(data []byte) { func (p *AnswerTIDListFrom) NEOEncode(data []byte) {
...@@ -2029,10 +1961,10 @@ overflow: ...@@ -2029,10 +1961,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 59. TransactionInformation // 57. TransactionInformation
func (p *TransactionInformation) NEOEncodedInfo() (uint16, int) { func (p *TransactionInformation) NEOEncodedInfo() (uint16, int) {
return 59, 8 return 57, 8
} }
func (p *TransactionInformation) NEOEncode(data []byte) { func (p *TransactionInformation) NEOEncode(data []byte) {
...@@ -2050,10 +1982,10 @@ overflow: ...@@ -2050,10 +1982,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 60. AnswerTransactionInformation // 58. AnswerTransactionInformation
func (p *AnswerTransactionInformation) NEOEncodedInfo() (uint16, int) { func (p *AnswerTransactionInformation) NEOEncodedInfo() (uint16, int) {
return 60, 25 + len(p.User) + len(p.Description) + len(p.Extension) + len(p.OidList)*8 return 58, 25 + len(p.User) + len(p.Description) + len(p.Extension) + len(p.OidList)*8
} }
func (p *AnswerTransactionInformation) NEOEncode(data []byte) { func (p *AnswerTransactionInformation) NEOEncode(data []byte) {
...@@ -2149,10 +2081,10 @@ overflow: ...@@ -2149,10 +2081,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 61. ObjectHistory // 59. ObjectHistory
func (p *ObjectHistory) NEOEncodedInfo() (uint16, int) { func (p *ObjectHistory) NEOEncodedInfo() (uint16, int) {
return 61, 24 return 59, 24
} }
func (p *ObjectHistory) NEOEncode(data []byte) { func (p *ObjectHistory) NEOEncode(data []byte) {
...@@ -2174,10 +2106,10 @@ overflow: ...@@ -2174,10 +2106,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 62. AnswerObjectHistory // 60. AnswerObjectHistory
func (p *AnswerObjectHistory) NEOEncodedInfo() (uint16, int) { func (p *AnswerObjectHistory) NEOEncodedInfo() (uint16, int) {
return 62, 12 + len(p.HistoryList)*12 return 60, 12 + len(p.HistoryList)*12
} }
func (p *AnswerObjectHistory) NEOEncode(data []byte) { func (p *AnswerObjectHistory) NEOEncode(data []byte) {
...@@ -2225,10 +2157,10 @@ overflow: ...@@ -2225,10 +2157,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 63. PartitionList // 61. PartitionList
func (p *PartitionList) NEOEncodedInfo() (uint16, int) { func (p *PartitionList) NEOEncodedInfo() (uint16, int) {
return 63, 12 return 61, 12
} }
func (p *PartitionList) NEOEncode(data []byte) { func (p *PartitionList) NEOEncode(data []byte) {
...@@ -2250,7 +2182,7 @@ overflow: ...@@ -2250,7 +2182,7 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 64. AnswerPartitionList // 62. AnswerPartitionList
func (p *AnswerPartitionList) NEOEncodedInfo() (uint16, int) { func (p *AnswerPartitionList) NEOEncodedInfo() (uint16, int) {
var size int var size int
...@@ -2258,7 +2190,7 @@ func (p *AnswerPartitionList) NEOEncodedInfo() (uint16, int) { ...@@ -2258,7 +2190,7 @@ func (p *AnswerPartitionList) NEOEncodedInfo() (uint16, int) {
a := &p.RowList[i] a := &p.RowList[i]
size += len((*a).CellList) * 8 size += len((*a).CellList) * 8
} }
return 64, 12 + len(p.RowList)*8 + size return 62, 12 + len(p.RowList)*8 + size
} }
func (p *AnswerPartitionList) NEOEncode(data []byte) { func (p *AnswerPartitionList) NEOEncode(data []byte) {
...@@ -2326,10 +2258,10 @@ overflow: ...@@ -2326,10 +2258,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 65. NodeList // 63. NodeList
func (p *NodeList) NEOEncodedInfo() (uint16, int) { func (p *NodeList) NEOEncodedInfo() (uint16, int) {
return 65, 4 return 63, 4
} }
func (p *NodeList) NEOEncode(data []byte) { func (p *NodeList) NEOEncode(data []byte) {
...@@ -2347,7 +2279,7 @@ overflow: ...@@ -2347,7 +2279,7 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 66. AnswerNodeList // 64. AnswerNodeList
func (p *AnswerNodeList) NEOEncodedInfo() (uint16, int) { func (p *AnswerNodeList) NEOEncodedInfo() (uint16, int) {
var size int var size int
...@@ -2355,7 +2287,7 @@ func (p *AnswerNodeList) NEOEncodedInfo() (uint16, int) { ...@@ -2355,7 +2287,7 @@ func (p *AnswerNodeList) NEOEncodedInfo() (uint16, int) {
a := &p.NodeList[i] a := &p.NodeList[i]
size += len((*a).Address.Host) size += len((*a).Address.Host)
} }
return 66, 4 + len(p.NodeList)*26 + size return 64, 4 + len(p.NodeList)*26 + size
} }
func (p *AnswerNodeList) NEOEncode(data []byte) { func (p *AnswerNodeList) NEOEncode(data []byte) {
...@@ -2421,10 +2353,10 @@ overflow: ...@@ -2421,10 +2353,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 67. SetNodeState // 65. SetNodeState
func (p *SetNodeState) NEOEncodedInfo() (uint16, int) { func (p *SetNodeState) NEOEncodedInfo() (uint16, int) {
return 67, 8 return 65, 8
} }
func (p *SetNodeState) NEOEncode(data []byte) { func (p *SetNodeState) NEOEncode(data []byte) {
...@@ -2444,10 +2376,10 @@ overflow: ...@@ -2444,10 +2376,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 68. AddPendingNodes // 66. AddPendingNodes
func (p *AddPendingNodes) NEOEncodedInfo() (uint16, int) { func (p *AddPendingNodes) NEOEncodedInfo() (uint16, int) {
return 68, 4 + len(p.NodeList)*4 return 66, 4 + len(p.NodeList)*4
} }
func (p *AddPendingNodes) NEOEncode(data []byte) { func (p *AddPendingNodes) NEOEncode(data []byte) {
...@@ -2488,10 +2420,10 @@ overflow: ...@@ -2488,10 +2420,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 69. TweakPartitionTable // 67. TweakPartitionTable
func (p *TweakPartitionTable) NEOEncodedInfo() (uint16, int) { func (p *TweakPartitionTable) NEOEncodedInfo() (uint16, int) {
return 69, 4 + len(p.NodeList)*4 return 67, 4 + len(p.NodeList)*4
} }
func (p *TweakPartitionTable) NEOEncode(data []byte) { func (p *TweakPartitionTable) NEOEncode(data []byte) {
...@@ -2532,7 +2464,7 @@ overflow: ...@@ -2532,7 +2464,7 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 70. NotifyNodeInformation // 68. NotifyNodeInformation
func (p *NotifyNodeInformation) NEOEncodedInfo() (uint16, int) { func (p *NotifyNodeInformation) NEOEncodedInfo() (uint16, int) {
var size int var size int
...@@ -2540,7 +2472,7 @@ func (p *NotifyNodeInformation) NEOEncodedInfo() (uint16, int) { ...@@ -2540,7 +2472,7 @@ func (p *NotifyNodeInformation) NEOEncodedInfo() (uint16, int) {
a := &p.NodeList[i] a := &p.NodeList[i]
size += len((*a).Address.Host) size += len((*a).Address.Host)
} }
return 70, 12 + len(p.NodeList)*26 + size return 68, 12 + len(p.NodeList)*26 + size
} }
func (p *NotifyNodeInformation) NEOEncode(data []byte) { func (p *NotifyNodeInformation) NEOEncode(data []byte) {
...@@ -2608,10 +2540,10 @@ overflow: ...@@ -2608,10 +2540,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 71. NodeInformation // 69. NodeInformation
func (p *NodeInformation) NEOEncodedInfo() (uint16, int) { func (p *NodeInformation) NEOEncodedInfo() (uint16, int) {
return 71, 0 return 69, 0
} }
func (p *NodeInformation) NEOEncode(data []byte) { func (p *NodeInformation) NEOEncode(data []byte) {
...@@ -2621,10 +2553,10 @@ func (p *NodeInformation) NEODecode(data []byte) (int, error) { ...@@ -2621,10 +2553,10 @@ func (p *NodeInformation) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 72. SetClusterState // 70. SetClusterState
func (p *SetClusterState) NEOEncodedInfo() (uint16, int) { func (p *SetClusterState) NEOEncodedInfo() (uint16, int) {
return 72, 4 return 70, 4
} }
func (p *SetClusterState) NEOEncode(data []byte) { func (p *SetClusterState) NEOEncode(data []byte) {
...@@ -2642,10 +2574,10 @@ overflow: ...@@ -2642,10 +2574,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 73. repairFlags // 71. repairFlags
func (p *repairFlags) NEOEncodedInfo() (uint16, int) { func (p *repairFlags) NEOEncodedInfo() (uint16, int) {
return 73, 1 return 71, 1
} }
func (p *repairFlags) NEOEncode(data []byte) { func (p *repairFlags) NEOEncode(data []byte) {
...@@ -2663,10 +2595,10 @@ overflow: ...@@ -2663,10 +2595,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 74. Repair // 72. Repair
func (p *Repair) NEOEncodedInfo() (uint16, int) { func (p *Repair) NEOEncodedInfo() (uint16, int) {
return 74, 5 + len(p.NodeList)*4 return 72, 5 + len(p.NodeList)*4
} }
func (p *Repair) NEOEncode(data []byte) { func (p *Repair) NEOEncode(data []byte) {
...@@ -2709,10 +2641,10 @@ overflow: ...@@ -2709,10 +2641,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 75. RepairOne // 73. RepairOne
func (p *RepairOne) NEOEncodedInfo() (uint16, int) { func (p *RepairOne) NEOEncodedInfo() (uint16, int) {
return 75, 1 return 73, 1
} }
func (p *RepairOne) NEOEncode(data []byte) { func (p *RepairOne) NEOEncode(data []byte) {
...@@ -2730,10 +2662,10 @@ overflow: ...@@ -2730,10 +2662,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 76. ClusterInformation // 74. ClusterInformation
func (p *ClusterInformation) NEOEncodedInfo() (uint16, int) { func (p *ClusterInformation) NEOEncodedInfo() (uint16, int) {
return 76, 4 return 74, 4
} }
func (p *ClusterInformation) NEOEncode(data []byte) { func (p *ClusterInformation) NEOEncode(data []byte) {
...@@ -2751,10 +2683,10 @@ overflow: ...@@ -2751,10 +2683,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 77. X_ClusterState // 75. X_ClusterState
func (p *X_ClusterState) NEOEncodedInfo() (uint16, int) { func (p *X_ClusterState) NEOEncodedInfo() (uint16, int) {
return 77, 4 return 75, 4
} }
func (p *X_ClusterState) NEOEncode(data []byte) { func (p *X_ClusterState) NEOEncode(data []byte) {
...@@ -2772,10 +2704,10 @@ overflow: ...@@ -2772,10 +2704,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 78. ObjectUndoSerial // 76. ObjectUndoSerial
func (p *ObjectUndoSerial) NEOEncodedInfo() (uint16, int) { func (p *ObjectUndoSerial) NEOEncodedInfo() (uint16, int) {
return 78, 28 + len(p.OidList)*8 return 76, 28 + len(p.OidList)*8
} }
func (p *ObjectUndoSerial) NEOEncode(data []byte) { func (p *ObjectUndoSerial) NEOEncode(data []byte) {
...@@ -2822,10 +2754,10 @@ overflow: ...@@ -2822,10 +2754,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 79. AnswerObjectUndoSerial // 77. AnswerObjectUndoSerial
func (p *AnswerObjectUndoSerial) NEOEncodedInfo() (uint16, int) { func (p *AnswerObjectUndoSerial) NEOEncodedInfo() (uint16, int) {
return 79, 4 + len(p.ObjectTIDDict)*25 return 77, 4 + len(p.ObjectTIDDict)*25
} }
func (p *AnswerObjectUndoSerial) NEOEncode(data []byte) { func (p *AnswerObjectUndoSerial) NEOEncode(data []byte) {
...@@ -2886,10 +2818,10 @@ overflow: ...@@ -2886,10 +2818,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 80. CheckCurrentSerial // 78. CheckCurrentSerial
func (p *CheckCurrentSerial) NEOEncodedInfo() (uint16, int) { func (p *CheckCurrentSerial) NEOEncodedInfo() (uint16, int) {
return 80, 24 return 78, 24
} }
func (p *CheckCurrentSerial) NEOEncode(data []byte) { func (p *CheckCurrentSerial) NEOEncode(data []byte) {
...@@ -2911,10 +2843,10 @@ overflow: ...@@ -2911,10 +2843,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 81. Pack // 79. Pack
func (p *Pack) NEOEncodedInfo() (uint16, int) { func (p *Pack) NEOEncodedInfo() (uint16, int) {
return 81, 8 return 79, 8
} }
func (p *Pack) NEOEncode(data []byte) { func (p *Pack) NEOEncode(data []byte) {
...@@ -2932,10 +2864,10 @@ overflow: ...@@ -2932,10 +2864,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 82. AnswerPack // 80. AnswerPack
func (p *AnswerPack) NEOEncodedInfo() (uint16, int) { func (p *AnswerPack) NEOEncodedInfo() (uint16, int) {
return 82, 1 return 80, 1
} }
func (p *AnswerPack) NEOEncode(data []byte) { func (p *AnswerPack) NEOEncode(data []byte) {
...@@ -2953,10 +2885,10 @@ overflow: ...@@ -2953,10 +2885,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 83. CheckReplicas // 81. CheckReplicas
func (p *CheckReplicas) NEOEncodedInfo() (uint16, int) { func (p *CheckReplicas) NEOEncodedInfo() (uint16, int) {
return 83, 20 + len(p.PartitionDict)*8 return 81, 20 + len(p.PartitionDict)*8
} }
func (p *CheckReplicas) NEOEncode(data []byte) { func (p *CheckReplicas) NEOEncode(data []byte) {
...@@ -3007,10 +2939,10 @@ overflow: ...@@ -3007,10 +2939,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 84. CheckPartition // 82. CheckPartition
func (p *CheckPartition) NEOEncodedInfo() (uint16, int) { func (p *CheckPartition) NEOEncodedInfo() (uint16, int) {
return 84, 30 + len(p.Source.UpstreamName) + len(p.Source.Address.Host) return 82, 30 + len(p.Source.UpstreamName) + len(p.Source.Address.Host)
} }
func (p *CheckPartition) NEOEncode(data []byte) { func (p *CheckPartition) NEOEncode(data []byte) {
...@@ -3069,10 +3001,10 @@ overflow: ...@@ -3069,10 +3001,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 85. CheckTIDRange // 83. CheckTIDRange
func (p *CheckTIDRange) NEOEncodedInfo() (uint16, int) { func (p *CheckTIDRange) NEOEncodedInfo() (uint16, int) {
return 85, 24 return 83, 24
} }
func (p *CheckTIDRange) NEOEncode(data []byte) { func (p *CheckTIDRange) NEOEncode(data []byte) {
...@@ -3096,10 +3028,10 @@ overflow: ...@@ -3096,10 +3028,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 86. AnswerCheckTIDRange // 84. AnswerCheckTIDRange
func (p *AnswerCheckTIDRange) NEOEncodedInfo() (uint16, int) { func (p *AnswerCheckTIDRange) NEOEncodedInfo() (uint16, int) {
return 86, 32 return 84, 32
} }
func (p *AnswerCheckTIDRange) NEOEncode(data []byte) { func (p *AnswerCheckTIDRange) NEOEncode(data []byte) {
...@@ -3121,10 +3053,10 @@ overflow: ...@@ -3121,10 +3053,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 87. CheckSerialRange // 85. CheckSerialRange
func (p *CheckSerialRange) NEOEncodedInfo() (uint16, int) { func (p *CheckSerialRange) NEOEncodedInfo() (uint16, int) {
return 87, 32 return 85, 32
} }
func (p *CheckSerialRange) NEOEncode(data []byte) { func (p *CheckSerialRange) NEOEncode(data []byte) {
...@@ -3150,10 +3082,10 @@ overflow: ...@@ -3150,10 +3082,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 88. AnswerCheckSerialRange // 86. AnswerCheckSerialRange
func (p *AnswerCheckSerialRange) NEOEncodedInfo() (uint16, int) { func (p *AnswerCheckSerialRange) NEOEncodedInfo() (uint16, int) {
return 88, 60 return 86, 60
} }
func (p *AnswerCheckSerialRange) NEOEncode(data []byte) { func (p *AnswerCheckSerialRange) NEOEncode(data []byte) {
...@@ -3179,10 +3111,10 @@ overflow: ...@@ -3179,10 +3111,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 89. PartitionCorrupted // 87. PartitionCorrupted
func (p *PartitionCorrupted) NEOEncodedInfo() (uint16, int) { func (p *PartitionCorrupted) NEOEncodedInfo() (uint16, int) {
return 89, 8 + len(p.CellList)*4 return 87, 8 + len(p.CellList)*4
} }
func (p *PartitionCorrupted) NEOEncode(data []byte) { func (p *PartitionCorrupted) NEOEncode(data []byte) {
...@@ -3225,10 +3157,10 @@ overflow: ...@@ -3225,10 +3157,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 90. LastTransaction // 88. LastTransaction
func (p *LastTransaction) NEOEncodedInfo() (uint16, int) { func (p *LastTransaction) NEOEncodedInfo() (uint16, int) {
return 90, 0 return 88, 0
} }
func (p *LastTransaction) NEOEncode(data []byte) { func (p *LastTransaction) NEOEncode(data []byte) {
...@@ -3238,10 +3170,10 @@ func (p *LastTransaction) NEODecode(data []byte) (int, error) { ...@@ -3238,10 +3170,10 @@ func (p *LastTransaction) NEODecode(data []byte) (int, error) {
return 0, nil return 0, nil
} }
// 91. AnswerLastTransaction // 89. AnswerLastTransaction
func (p *AnswerLastTransaction) NEOEncodedInfo() (uint16, int) { func (p *AnswerLastTransaction) NEOEncodedInfo() (uint16, int) {
return 91, 8 return 89, 8
} }
func (p *AnswerLastTransaction) NEOEncode(data []byte) { func (p *AnswerLastTransaction) NEOEncode(data []byte) {
...@@ -3259,10 +3191,10 @@ overflow: ...@@ -3259,10 +3191,10 @@ overflow:
return 0, ErrDecodeOverflow return 0, ErrDecodeOverflow
} }
// 92. NotifyReady // 90. NotifyReady
func (p *NotifyReady) NEOEncodedInfo() (uint16, int) { func (p *NotifyReady) NEOEncodedInfo() (uint16, int) {
return 92, 0 return 90, 0
} }
func (p *NotifyReady) NEOEncode(data []byte) { func (p *NotifyReady) NEOEncode(data []byte) {
...@@ -3278,93 +3210,91 @@ var pktTypeRegistry = map[uint16]reflect.Type{ ...@@ -3278,93 +3210,91 @@ var pktTypeRegistry = map[uint16]reflect.Type{
1: reflect.TypeOf(NodeInfo{}), 1: reflect.TypeOf(NodeInfo{}),
2: reflect.TypeOf(CellInfo{}), 2: reflect.TypeOf(CellInfo{}),
3: reflect.TypeOf(RowInfo{}), 3: reflect.TypeOf(RowInfo{}),
4: reflect.TypeOf(Notify{}), 4: reflect.TypeOf(Error{}),
5: reflect.TypeOf(Error{}), 5: reflect.TypeOf(Ping{}),
6: reflect.TypeOf(Ping{}), 6: reflect.TypeOf(CloseClient{}),
7: reflect.TypeOf(CloseClient{}), 7: reflect.TypeOf(RequestIdentification{}),
8: reflect.TypeOf(RequestIdentification{}), 8: reflect.TypeOf(AcceptIdentification{}),
9: reflect.TypeOf(AcceptIdentification{}), 9: reflect.TypeOf(PrimaryMaster{}),
10: reflect.TypeOf(PrimaryMaster{}), 10: reflect.TypeOf(AnswerPrimary{}),
11: reflect.TypeOf(AnswerPrimary{}), 11: reflect.TypeOf(NotPrimaryMaster{}),
12: reflect.TypeOf(AnnouncePrimary{}), 12: reflect.TypeOf(Recovery{}),
13: reflect.TypeOf(ReelectPrimary{}), 13: reflect.TypeOf(AnswerRecovery{}),
14: reflect.TypeOf(Recovery{}), 14: reflect.TypeOf(LastIDs{}),
15: reflect.TypeOf(AnswerRecovery{}), 15: reflect.TypeOf(AnswerLastIDs{}),
16: reflect.TypeOf(LastIDs{}), 16: reflect.TypeOf(X_PartitionTable{}),
17: reflect.TypeOf(AnswerLastIDs{}), 17: reflect.TypeOf(AnswerPartitionTable{}),
18: reflect.TypeOf(X_PartitionTable{}), 18: reflect.TypeOf(NotifyPartitionTable{}),
19: reflect.TypeOf(AnswerPartitionTable{}), 19: reflect.TypeOf(PartitionChanges{}),
20: reflect.TypeOf(NotifyPartitionTable{}), 20: reflect.TypeOf(StartOperation{}),
21: reflect.TypeOf(PartitionChanges{}), 21: reflect.TypeOf(StopOperation{}),
22: reflect.TypeOf(StartOperation{}), 22: reflect.TypeOf(UnfinishedTransactions{}),
23: reflect.TypeOf(StopOperation{}), 23: reflect.TypeOf(AnswerUnfinishedTransactions{}),
24: reflect.TypeOf(UnfinishedTransactions{}), 24: reflect.TypeOf(LockedTransactions{}),
25: reflect.TypeOf(AnswerUnfinishedTransactions{}), 25: reflect.TypeOf(AnswerLockedTransactions{}),
26: reflect.TypeOf(LockedTransactions{}), 26: reflect.TypeOf(FinalTID{}),
27: reflect.TypeOf(AnswerLockedTransactions{}), 27: reflect.TypeOf(AnswerFinalTID{}),
28: reflect.TypeOf(FinalTID{}), 28: reflect.TypeOf(ValidateTransaction{}),
29: reflect.TypeOf(AnswerFinalTID{}), 29: reflect.TypeOf(BeginTransaction{}),
30: reflect.TypeOf(ValidateTransaction{}), 30: reflect.TypeOf(AnswerBeginTransaction{}),
31: reflect.TypeOf(BeginTransaction{}), 31: reflect.TypeOf(FailedVote{}),
32: reflect.TypeOf(AnswerBeginTransaction{}), 32: reflect.TypeOf(FinishTransaction{}),
33: reflect.TypeOf(FailedVote{}), 33: reflect.TypeOf(AnswerFinishTransaction{}),
34: reflect.TypeOf(FinishTransaction{}), 34: reflect.TypeOf(NotifyTransactionFinished{}),
35: reflect.TypeOf(AnswerFinishTransaction{}), 35: reflect.TypeOf(LockInformation{}),
36: reflect.TypeOf(NotifyTransactionFinished{}), 36: reflect.TypeOf(AnswerLockInformation{}),
37: reflect.TypeOf(LockInformation{}), 37: reflect.TypeOf(InvalidateObjects{}),
38: reflect.TypeOf(AnswerLockInformation{}), 38: reflect.TypeOf(UnlockInformation{}),
39: reflect.TypeOf(InvalidateObjects{}), 39: reflect.TypeOf(GenerateOIDs{}),
40: reflect.TypeOf(UnlockInformation{}), 40: reflect.TypeOf(AnswerGenerateOIDs{}),
41: reflect.TypeOf(GenerateOIDs{}), 41: reflect.TypeOf(Deadlock{}),
42: reflect.TypeOf(AnswerGenerateOIDs{}), 42: reflect.TypeOf(RebaseTransaction{}),
43: reflect.TypeOf(Deadlock{}), 43: reflect.TypeOf(AnswerRebaseTransaction{}),
44: reflect.TypeOf(RebaseTransaction{}), 44: reflect.TypeOf(RebaseObject{}),
45: reflect.TypeOf(AnswerRebaseTransaction{}), 45: reflect.TypeOf(AnswerRebaseObject{}),
46: reflect.TypeOf(RebaseObject{}), 46: reflect.TypeOf(StoreObject{}),
47: reflect.TypeOf(AnswerRebaseObject{}), 47: reflect.TypeOf(AnswerStoreObject{}),
48: reflect.TypeOf(StoreObject{}), 48: reflect.TypeOf(AbortTransaction{}),
49: reflect.TypeOf(AnswerStoreObject{}), 49: reflect.TypeOf(StoreTransaction{}),
50: reflect.TypeOf(AbortTransaction{}), 50: reflect.TypeOf(VoteTransaction{}),
51: reflect.TypeOf(StoreTransaction{}), 51: reflect.TypeOf(GetObject{}),
52: reflect.TypeOf(VoteTransaction{}), 52: reflect.TypeOf(AnswerGetObject{}),
53: reflect.TypeOf(GetObject{}), 53: reflect.TypeOf(TIDList{}),
54: reflect.TypeOf(AnswerGetObject{}), 54: reflect.TypeOf(AnswerTIDList{}),
55: reflect.TypeOf(TIDList{}), 55: reflect.TypeOf(TIDListFrom{}),
56: reflect.TypeOf(AnswerTIDList{}), 56: reflect.TypeOf(AnswerTIDListFrom{}),
57: reflect.TypeOf(TIDListFrom{}), 57: reflect.TypeOf(TransactionInformation{}),
58: reflect.TypeOf(AnswerTIDListFrom{}), 58: reflect.TypeOf(AnswerTransactionInformation{}),
59: reflect.TypeOf(TransactionInformation{}), 59: reflect.TypeOf(ObjectHistory{}),
60: reflect.TypeOf(AnswerTransactionInformation{}), 60: reflect.TypeOf(AnswerObjectHistory{}),
61: reflect.TypeOf(ObjectHistory{}), 61: reflect.TypeOf(PartitionList{}),
62: reflect.TypeOf(AnswerObjectHistory{}), 62: reflect.TypeOf(AnswerPartitionList{}),
63: reflect.TypeOf(PartitionList{}), 63: reflect.TypeOf(NodeList{}),
64: reflect.TypeOf(AnswerPartitionList{}), 64: reflect.TypeOf(AnswerNodeList{}),
65: reflect.TypeOf(NodeList{}), 65: reflect.TypeOf(SetNodeState{}),
66: reflect.TypeOf(AnswerNodeList{}), 66: reflect.TypeOf(AddPendingNodes{}),
67: reflect.TypeOf(SetNodeState{}), 67: reflect.TypeOf(TweakPartitionTable{}),
68: reflect.TypeOf(AddPendingNodes{}), 68: reflect.TypeOf(NotifyNodeInformation{}),
69: reflect.TypeOf(TweakPartitionTable{}), 69: reflect.TypeOf(NodeInformation{}),
70: reflect.TypeOf(NotifyNodeInformation{}), 70: reflect.TypeOf(SetClusterState{}),
71: reflect.TypeOf(NodeInformation{}), 71: reflect.TypeOf(repairFlags{}),
72: reflect.TypeOf(SetClusterState{}), 72: reflect.TypeOf(Repair{}),
73: reflect.TypeOf(repairFlags{}), 73: reflect.TypeOf(RepairOne{}),
74: reflect.TypeOf(Repair{}), 74: reflect.TypeOf(ClusterInformation{}),
75: reflect.TypeOf(RepairOne{}), 75: reflect.TypeOf(X_ClusterState{}),
76: reflect.TypeOf(ClusterInformation{}), 76: reflect.TypeOf(ObjectUndoSerial{}),
77: reflect.TypeOf(X_ClusterState{}), 77: reflect.TypeOf(AnswerObjectUndoSerial{}),
78: reflect.TypeOf(ObjectUndoSerial{}), 78: reflect.TypeOf(CheckCurrentSerial{}),
79: reflect.TypeOf(AnswerObjectUndoSerial{}), 79: reflect.TypeOf(Pack{}),
80: reflect.TypeOf(CheckCurrentSerial{}), 80: reflect.TypeOf(AnswerPack{}),
81: reflect.TypeOf(Pack{}), 81: reflect.TypeOf(CheckReplicas{}),
82: reflect.TypeOf(AnswerPack{}), 82: reflect.TypeOf(CheckPartition{}),
83: reflect.TypeOf(CheckReplicas{}), 83: reflect.TypeOf(CheckTIDRange{}),
84: reflect.TypeOf(CheckPartition{}), 84: reflect.TypeOf(AnswerCheckTIDRange{}),
85: reflect.TypeOf(CheckTIDRange{}), 85: reflect.TypeOf(CheckSerialRange{}),
86: reflect.TypeOf(AnswerCheckTIDRange{}), 86: reflect.TypeOf(AnswerCheckSerialRange{}),
87: reflect.TypeOf(CheckSerialRange{}), 87: reflect.TypeOf(PartitionCorrupted{}),
88: reflect.TypeOf(AnswerCheckSerialRange{}), 88: reflect.TypeOf(LastTransaction{}),
89: reflect.TypeOf(PartitionCorrupted{}), 89: reflect.TypeOf(AnswerLastTransaction{}),
90: reflect.TypeOf(LastTransaction{}), 90: reflect.TypeOf(NotifyReady{}),
91: reflect.TypeOf(AnswerLastTransaction{}),
92: reflect.TypeOf(NotifyReady{}),
} }
...@@ -4,9 +4,9 @@ package neo ...@@ -4,9 +4,9 @@ package neo
import "fmt" import "fmt"
const _ErrorCode_name = "ACKNOT_READYOID_NOT_FOUNDTID_NOT_FOUNDOID_DOES_NOT_EXISTPROTOCOL_ERRORBROKEN_NODEREPLICATION_ERRORCHECKING_ERRORBACKEND_NOT_IMPLEMENTEDNON_READABLE_CELLREAD_ONLY_ACCESSINCOMPLETE_TRANSACTION" const _ErrorCode_name = "ACKNOT_READYOID_NOT_FOUNDTID_NOT_FOUNDOID_DOES_NOT_EXISTPROTOCOL_ERRORREPLICATION_ERRORCHECKING_ERRORBACKEND_NOT_IMPLEMENTEDNON_READABLE_CELLREAD_ONLY_ACCESSINCOMPLETE_TRANSACTION"
var _ErrorCode_index = [...]uint8{0, 3, 12, 25, 38, 56, 70, 81, 98, 112, 135, 152, 168, 190} var _ErrorCode_index = [...]uint8{0, 3, 12, 25, 38, 56, 70, 87, 101, 124, 141, 157, 179}
func (i ErrorCode) String() string { func (i ErrorCode) String() string {
if i >= ErrorCode(len(_ErrorCode_index)-1) { if i >= ErrorCode(len(_ErrorCode_index)-1) {
......
...@@ -19,10 +19,15 @@ import ( ...@@ -19,10 +19,15 @@ import (
) )
const ( const (
PROTOCOL_VERSION = 12 // The protocol version must be increased whenever upgrading a node may require
// to upgrade other nodes. It is encoded as a 4-bytes big-endian integer and
// the high order byte 0 is different from TLS Handshake (0x16).
PROTOCOL_VERSION = 1
// XXX ENCODED_VERSION ?
PktHeadLen = 10 // XXX unsafe.Sizeof(PktHead{}) give _typed_ constant (uintptr)
// TODO link this to PktHead.Encode/Decode size ? XXX -> pkt.go ?
MIN_PACKET_SIZE = 10 // XXX unsafe.Sizeof(PktHead{}) give _typed_ constant (uintptr)
PktHeadLen = MIN_PACKET_SIZE // TODO link this to PktHead.Encode/Decode size ? XXX -> pkt.go ?
MAX_PACKET_SIZE = 0x4000000 MAX_PACKET_SIZE = 0x4000000
RESPONSE_MASK = 0x8000 RESPONSE_MASK = 0x8000
...@@ -37,7 +42,6 @@ const ( ...@@ -37,7 +42,6 @@ const (
TID_NOT_FOUND TID_NOT_FOUND
OID_DOES_NOT_EXIST OID_DOES_NOT_EXIST
PROTOCOL_ERROR PROTOCOL_ERROR
BROKEN_NODE
REPLICATION_ERROR REPLICATION_ERROR
CHECKING_ERROR CHECKING_ERROR
BACKEND_NOT_IMPLEMENTED BACKEND_NOT_IMPLEMENTED
...@@ -89,13 +93,10 @@ const ( ...@@ -89,13 +93,10 @@ const (
type NodeState int32 type NodeState int32
const ( const (
RUNNING NodeState = iota //short: R // XXX tag prefix name ? UNKNOWN NodeState = iota //short: U // XXX tag prefix name ?
TEMPORARILY_DOWN //short: T
DOWN //short: D DOWN //short: D
BROKEN //short: B RUNNING //short: R
HIDDEN //short: H
PENDING //short: P PENDING //short: P
UNKNOWN //short: U
) )
type CellState int32 type CellState int32
...@@ -251,11 +252,6 @@ type RowInfo struct { ...@@ -251,11 +252,6 @@ type RowInfo struct {
// General purpose notification (remote logging)
type Notify struct {
Message string
}
// Error is a special type of message, because this can be sent against // Error is a special type of message, because this can be sent against
// any other message, even if such a message does not expect a reply // any other message, even if such a message does not expect a reply
// usually. Any -> Any. // usually. Any -> Any.
...@@ -277,7 +273,6 @@ type CloseClient struct { ...@@ -277,7 +273,6 @@ type CloseClient struct {
// Request a node identification. This must be the first packet for any // Request a node identification. This must be the first packet for any
// connection. Any -> Any. // connection. Any -> Any.
type RequestIdentification struct { type RequestIdentification struct {
ProtocolVersion uint32 // TODO py.PProtocol upon decoding checks for != PROTOCOL_VERSION
NodeType NodeType // XXX name NodeType NodeType // XXX name
NodeID NodeID NodeID NodeID
Address Address // where requesting node is also accepting connections Address Address // where requesting node is also accepting connections
...@@ -292,11 +287,6 @@ type AcceptIdentification struct { ...@@ -292,11 +287,6 @@ type AcceptIdentification struct {
NumPartitions uint32 // PNumber NumPartitions uint32 // PNumber
NumReplicas uint32 // PNumber NumReplicas uint32 // PNumber
YourNodeID NodeID YourNodeID NodeID
Primary Address
KnownMasterList []struct {
Address
NodeID NodeID
}
} }
// Ask current primary master's uuid. CTL -> A. // Ask current primary master's uuid. CTL -> A.
...@@ -307,12 +297,12 @@ type AnswerPrimary struct { ...@@ -307,12 +297,12 @@ type AnswerPrimary struct {
PrimaryNodeID NodeID PrimaryNodeID NodeID
} }
// Announce a primary master node election. PM -> SM. // Send list of known master nodes. SM -> Any.
type AnnouncePrimary struct { type NotPrimaryMaster struct {
} Primary NodeID // XXX PSignedNull in py
KnownMasterList []struct {
// Force a re-election of a primary master node. M -> M. Address
type ReelectPrimary struct { }
} }
// Ask all data needed by master to recover. PM -> S, S -> PM. // Ask all data needed by master to recover. PM -> S, S -> PM.
......
...@@ -214,13 +214,12 @@ func RecvAndDecode(conn *Conn) (NEOEncoder, error) { // XXX NEOEncoder -> interf ...@@ -214,13 +214,12 @@ func RecvAndDecode(conn *Conn) (NEOEncoder, error) { // XXX NEOEncoder -> interf
// EncodeAndSend encodes pkt and send it to conn // EncodeAndSend encodes pkt and send it to conn
func EncodeAndSend(conn *Conn, pkt NEOEncoder) error { func EncodeAndSend(conn *Conn, pkt NEOEncoder) error {
msgCode, l := pkt.NEOEncodedInfo() msgCode, l := pkt.NEOEncodedInfo()
l += PktHeadLen buf := PktBuf{make([]byte, PktHeadLen + l)} // XXX -> freelist
buf := PktBuf{make([]byte, 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(msgCode) h.MsgCode = hton16(msgCode)
h.Len = hton32(uint32(l)) // XXX casting: think again h.MsgLen = hton32(uint32(l)) // XXX casting: think again
pkt.NEOEncode(buf.Payload()) pkt.NEOEncode(buf.Payload())
......
...@@ -113,7 +113,7 @@ func errEncode(err error) *Error { ...@@ -113,7 +113,7 @@ func errEncode(err error) *Error {
return &Error{Code: OID_NOT_FOUND, Message: err.Xid.String()} return &Error{Code: OID_NOT_FOUND, Message: err.Xid.String()}
default: default:
return &Error{Code: BROKEN_NODE, Message: err.Error()} return &Error{Code: NOT_READY /* XXX how to report 503? was BROKEN_NODE */, Message: err.Error()}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment