Commit 3d4bc65f authored by Kirill Smelkov's avatar Kirill Smelkov

X draft of varable length tracking

parent f596b330
...@@ -7,6 +7,7 @@ import ( ...@@ -7,6 +7,7 @@ import (
) )
func (p *Address) NEODecode(data []byte) (int, error) { func (p *Address) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
...@@ -15,12 +16,14 @@ func (p *Address) NEODecode(data []byte) (int, error) { ...@@ -15,12 +16,14 @@ func (p *Address) NEODecode(data []byte) (int, error) {
} }
p.Host = string(data[:l]) p.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
p.Port = binary.BigEndian.Uint16(data[0:]) p.Port = binary.BigEndian.Uint16(data[0:])
return 2 /* + TODO variable part */, nil return int(nread) + 2, nil
} }
func (p *NodeInfo) NEODecode(data []byte) (int, error) { func (p *NodeInfo) NEODecode(data []byte) (int, error) {
var nread uint32
p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:]))) p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:])))
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
...@@ -30,37 +33,43 @@ func (p *NodeInfo) NEODecode(data []byte) (int, error) { ...@@ -30,37 +33,43 @@ func (p *NodeInfo) NEODecode(data []byte) (int, error) {
} }
p.Address.Host = string(data[:l]) p.Address.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 8 + l
} }
p.Address.Port = binary.BigEndian.Uint16(data[0:]) p.Address.Port = binary.BigEndian.Uint16(data[0:])
p.UUID = UUID(int32(binary.BigEndian.Uint32(data[2:]))) p.UUID = UUID(int32(binary.BigEndian.Uint32(data[2:])))
p.NodeState = NodeState(int32(binary.BigEndian.Uint32(data[6:]))) p.NodeState = NodeState(int32(binary.BigEndian.Uint32(data[6:])))
p.IdTimestamp = float64_NEODecode(data[10:]) p.IdTimestamp = float64_NEODecode(data[10:])
return 18 /* + TODO variable part */, nil return int(nread) + 18, nil
} }
func (p *CellInfo) NEODecode(data []byte) (int, error) { func (p *CellInfo) NEODecode(data []byte) (int, error) {
var nread uint32
p.UUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) p.UUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
p.CellState = CellState(int32(binary.BigEndian.Uint32(data[4:]))) p.CellState = CellState(int32(binary.BigEndian.Uint32(data[4:])))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *RowInfo) NEODecode(data []byte) (int, error) { func (p *RowInfo) NEODecode(data []byte) (int, error) {
var nread uint32
p.Offset = binary.BigEndian.Uint32(data[0:]) p.Offset = binary.BigEndian.Uint32(data[0:])
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
data = data[8:] data = data[8:]
nread += 8
p.CellList = make([]CellInfo, l) p.CellList = make([]CellInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.CellList[i] a := &p.CellList[i]
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
(*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:]))) (*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:])))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *Notify) NEODecode(data []byte) (int, error) { func (p *Notify) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
...@@ -69,11 +78,13 @@ func (p *Notify) NEODecode(data []byte) (int, error) { ...@@ -69,11 +78,13 @@ func (p *Notify) NEODecode(data []byte) (int, error) {
} }
p.Message = string(data[:l]) p.Message = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *Error) NEODecode(data []byte) (int, error) { func (p *Error) NEODecode(data []byte) (int, error) {
var nread uint32
p.Code = binary.BigEndian.Uint32(data[0:]) p.Code = binary.BigEndian.Uint32(data[0:])
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
...@@ -83,19 +94,23 @@ func (p *Error) NEODecode(data []byte) (int, error) { ...@@ -83,19 +94,23 @@ func (p *Error) NEODecode(data []byte) (int, error) {
} }
p.Message = string(data[:l]) p.Message = string(data[:l])
data = data[l:] data = data[l:]
nread += 8 + l
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *Ping) NEODecode(data []byte) (int, error) { func (p *Ping) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *CloseClient) NEODecode(data []byte) (int, error) { func (p *CloseClient) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *RequestIdentification) NEODecode(data []byte) (int, error) { func (p *RequestIdentification) NEODecode(data []byte) (int, error) {
var nread uint32
p.ProtocolVersion = binary.BigEndian.Uint32(data[0:]) p.ProtocolVersion = binary.BigEndian.Uint32(data[0:])
p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[4:]))) p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[4:])))
p.UUID = UUID(int32(binary.BigEndian.Uint32(data[8:]))) p.UUID = UUID(int32(binary.BigEndian.Uint32(data[8:])))
...@@ -107,6 +122,7 @@ func (p *RequestIdentification) NEODecode(data []byte) (int, error) { ...@@ -107,6 +122,7 @@ func (p *RequestIdentification) NEODecode(data []byte) (int, error) {
} }
p.Address.Host = string(data[:l]) p.Address.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 16 + l
} }
p.Address.Port = binary.BigEndian.Uint16(data[0:]) p.Address.Port = binary.BigEndian.Uint16(data[0:])
{ {
...@@ -117,12 +133,14 @@ func (p *RequestIdentification) NEODecode(data []byte) (int, error) { ...@@ -117,12 +133,14 @@ func (p *RequestIdentification) NEODecode(data []byte) (int, error) {
} }
p.Name = string(data[:l]) p.Name = string(data[:l])
data = data[l:] data = data[l:]
nread += 6 + l
} }
p.IdTimestamp = float64_NEODecode(data[0:]) p.IdTimestamp = float64_NEODecode(data[0:])
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *AcceptIdentification) NEODecode(data []byte) (int, error) { func (p *AcceptIdentification) NEODecode(data []byte) (int, error) {
var nread uint32
p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:]))) p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:])))
p.MyUUID = UUID(int32(binary.BigEndian.Uint32(data[4:]))) p.MyUUID = UUID(int32(binary.BigEndian.Uint32(data[4:])))
p.NumPartitions = binary.BigEndian.Uint32(data[8:]) p.NumPartitions = binary.BigEndian.Uint32(data[8:])
...@@ -136,11 +154,13 @@ func (p *AcceptIdentification) NEODecode(data []byte) (int, error) { ...@@ -136,11 +154,13 @@ func (p *AcceptIdentification) NEODecode(data []byte) (int, error) {
} }
p.Primary.Host = string(data[:l]) p.Primary.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 24 + l
} }
p.Primary.Port = binary.BigEndian.Uint16(data[0:]) p.Primary.Port = binary.BigEndian.Uint16(data[0:])
{ {
l := binary.BigEndian.Uint32(data[2:]) l := binary.BigEndian.Uint32(data[2:])
data = data[6:] data = data[6:]
nread += 6
p.KnownMasterList = make([]struct { p.KnownMasterList = make([]struct {
Address Address
UUID UUID UUID UUID
...@@ -155,62 +175,75 @@ func (p *AcceptIdentification) NEODecode(data []byte) (int, error) { ...@@ -155,62 +175,75 @@ func (p *AcceptIdentification) NEODecode(data []byte) (int, error) {
} }
(*a).Address.Host = string(data[:l]) (*a).Address.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
(*a).Address.Port = binary.BigEndian.Uint16(data[0:]) (*a).Address.Port = binary.BigEndian.Uint16(data[0:])
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[2:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[2:])))
data = data[6:] data = data[6:]
nread += 6
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *PrimaryMaster) NEODecode(data []byte) (int, error) { func (p *PrimaryMaster) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerPrimary) NEODecode(data []byte) (int, error) { func (p *AnswerPrimary) NEODecode(data []byte) (int, error) {
var nread uint32
p.PrimaryUUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) p.PrimaryUUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
return 4 /* + TODO variable part */, nil return int(nread) + 4, nil
} }
func (p *AnnouncePrimary) NEODecode(data []byte) (int, error) { func (p *AnnouncePrimary) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *ReelectPrimary) NEODecode(data []byte) (int, error) { func (p *ReelectPrimary) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *Recovery) NEODecode(data []byte) (int, error) { func (p *Recovery) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerRecovery) NEODecode(data []byte) (int, error) { func (p *AnswerRecovery) NEODecode(data []byte) (int, error) {
var nread uint32
p.PTid = PTid(binary.BigEndian.Uint64(data[0:])) p.PTid = PTid(binary.BigEndian.Uint64(data[0:]))
p.BackupTID = Tid(binary.BigEndian.Uint64(data[8:])) p.BackupTID = Tid(binary.BigEndian.Uint64(data[8:]))
p.TruncateTID = Tid(binary.BigEndian.Uint64(data[16:])) p.TruncateTID = Tid(binary.BigEndian.Uint64(data[16:]))
return 24 /* + TODO variable part */, nil return int(nread) + 24, nil
} }
func (p *LastIDs) NEODecode(data []byte) (int, error) { func (p *LastIDs) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerLastIDs) NEODecode(data []byte) (int, error) { func (p *AnswerLastIDs) NEODecode(data []byte) (int, error) {
var nread uint32
p.LastOID = Oid(binary.BigEndian.Uint64(data[0:])) p.LastOID = Oid(binary.BigEndian.Uint64(data[0:]))
p.LastTID = Tid(binary.BigEndian.Uint64(data[8:])) p.LastTID = Tid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *PartitionTable) NEODecode(data []byte) (int, error) { func (p *PartitionTable) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerPartitionTable) NEODecode(data []byte) (int, error) { func (p *AnswerPartitionTable) NEODecode(data []byte) (int, error) {
var nread uint32
p.PTid = PTid(binary.BigEndian.Uint64(data[0:])) p.PTid = PTid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.RowList = make([]RowInfo, l) p.RowList = make([]RowInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.RowList[i] a := &p.RowList[i]
...@@ -218,25 +251,30 @@ func (p *AnswerPartitionTable) NEODecode(data []byte) (int, error) { ...@@ -218,25 +251,30 @@ func (p *AnswerPartitionTable) NEODecode(data []byte) (int, error) {
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
data = data[8:] data = data[8:]
nread += 8
(*a).CellList = make([]CellInfo, l) (*a).CellList = make([]CellInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &(*a).CellList[i] a := &(*a).CellList[i]
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
(*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:]))) (*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:])))
data = data[8:] data = data[8:]
nread += 8
} }
} }
data = data[0:] data = data[0:]
nread += 0
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *NotifyPartitionTable) NEODecode(data []byte) (int, error) { func (p *NotifyPartitionTable) NEODecode(data []byte) (int, error) {
var nread uint32
p.PTid = PTid(binary.BigEndian.Uint64(data[0:])) p.PTid = PTid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.RowList = make([]RowInfo, l) p.RowList = make([]RowInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.RowList[i] a := &p.RowList[i]
...@@ -244,25 +282,30 @@ func (p *NotifyPartitionTable) NEODecode(data []byte) (int, error) { ...@@ -244,25 +282,30 @@ func (p *NotifyPartitionTable) NEODecode(data []byte) (int, error) {
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
data = data[8:] data = data[8:]
nread += 8
(*a).CellList = make([]CellInfo, l) (*a).CellList = make([]CellInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &(*a).CellList[i] a := &(*a).CellList[i]
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
(*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:]))) (*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:])))
data = data[8:] data = data[8:]
nread += 8
} }
} }
data = data[0:] data = data[0:]
nread += 0
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *PartitionChanges) NEODecode(data []byte) (int, error) { func (p *PartitionChanges) NEODecode(data []byte) (int, error) {
var nread uint32
p.PTid = PTid(binary.BigEndian.Uint64(data[0:])) p.PTid = PTid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.CellList = make([]struct { p.CellList = make([]struct {
Offset uint32 Offset uint32
UUID UUID UUID UUID
...@@ -274,172 +317,206 @@ func (p *PartitionChanges) NEODecode(data []byte) (int, error) { ...@@ -274,172 +317,206 @@ func (p *PartitionChanges) NEODecode(data []byte) (int, error) {
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[4:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[4:])))
(*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[8:]))) (*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[8:])))
data = data[12:] data = data[12:]
nread += 12
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *StartOperation) NEODecode(data []byte) (int, error) { func (p *StartOperation) NEODecode(data []byte) (int, error) {
var nread uint32
p.Backup = byte2bool((data[0:])[0]) p.Backup = byte2bool((data[0:])[0])
return 1 /* + TODO variable part */, nil return int(nread) + 1, nil
} }
func (p *StopOperation) NEODecode(data []byte) (int, error) { func (p *StopOperation) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *UnfinishedTransactions) NEODecode(data []byte) (int, error) { func (p *UnfinishedTransactions) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerUnfinishedTransactions) NEODecode(data []byte) (int, error) { func (p *AnswerUnfinishedTransactions) NEODecode(data []byte) (int, error) {
var nread uint32
p.MaxTID = Tid(binary.BigEndian.Uint64(data[0:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.TidList = make([]struct{ UnfinishedTID Tid }, l) p.TidList = make([]struct{ UnfinishedTID Tid }, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.TidList[i] a := &p.TidList[i]
(*a).UnfinishedTID = Tid(binary.BigEndian.Uint64(data[0:])) (*a).UnfinishedTID = Tid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *LockedTransactions) NEODecode(data []byte) (int, error) { func (p *LockedTransactions) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerLockedTransactions) NEODecode(data []byte) (int, error) { func (p *AnswerLockedTransactions) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.TidDict = make(map[Tid]Tid, l) p.TidDict = make(map[Tid]Tid, l)
m := p.TidDict m := p.TidDict
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
key := Tid(binary.BigEndian.Uint64(data[0:])) key := Tid(binary.BigEndian.Uint64(data[0:]))
m[key] = Tid(binary.BigEndian.Uint64(data[8:])) m[key] = Tid(binary.BigEndian.Uint64(data[8:]))
data = data[16:] data = data[16:]
nread += 16
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *FinalTID) NEODecode(data []byte) (int, error) { func (p *FinalTID) NEODecode(data []byte) (int, error) {
var nread uint32
p.TTID = Tid(binary.BigEndian.Uint64(data[0:])) p.TTID = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *AnswerFinalTID) NEODecode(data []byte) (int, error) { func (p *AnswerFinalTID) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *ValidateTransaction) NEODecode(data []byte) (int, error) { func (p *ValidateTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.TTID = Tid(binary.BigEndian.Uint64(data[0:])) p.TTID = Tid(binary.BigEndian.Uint64(data[0:]))
p.Tid = Tid(binary.BigEndian.Uint64(data[8:])) p.Tid = Tid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *BeginTransaction) NEODecode(data []byte) (int, error) { func (p *BeginTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *AnswerBeginTransaction) NEODecode(data []byte) (int, error) { func (p *AnswerBeginTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *FinishTransaction) NEODecode(data []byte) (int, error) { func (p *FinishTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.OIDList = make([]Oid, l) p.OIDList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.OIDList[i] a := &p.OIDList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.CheckedList = make([]Oid, l) p.CheckedList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.CheckedList[i] a := &p.CheckedList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *AnswerFinishTransaction) NEODecode(data []byte) (int, error) { func (p *AnswerFinishTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.TTID = Tid(binary.BigEndian.Uint64(data[0:])) p.TTID = Tid(binary.BigEndian.Uint64(data[0:]))
p.Tid = Tid(binary.BigEndian.Uint64(data[8:])) p.Tid = Tid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *NotifyTransactionFinished) NEODecode(data []byte) (int, error) { func (p *NotifyTransactionFinished) NEODecode(data []byte) (int, error) {
var nread uint32
p.TTID = Tid(binary.BigEndian.Uint64(data[0:])) p.TTID = Tid(binary.BigEndian.Uint64(data[0:]))
p.MaxTID = Tid(binary.BigEndian.Uint64(data[8:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *LockInformation) NEODecode(data []byte) (int, error) { func (p *LockInformation) NEODecode(data []byte) (int, error) {
var nread uint32
p.Ttid = Tid(binary.BigEndian.Uint64(data[0:])) p.Ttid = Tid(binary.BigEndian.Uint64(data[0:]))
p.Tid = Tid(binary.BigEndian.Uint64(data[8:])) p.Tid = Tid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *AnswerLockInformation) NEODecode(data []byte) (int, error) { func (p *AnswerLockInformation) NEODecode(data []byte) (int, error) {
var nread uint32
p.Ttid = Tid(binary.BigEndian.Uint64(data[0:])) p.Ttid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *InvalidateObjects) NEODecode(data []byte) (int, error) { func (p *InvalidateObjects) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.OidList = make([]Oid, l) p.OidList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.OidList[i] a := &p.OidList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *UnlockInformation) NEODecode(data []byte) (int, error) { func (p *UnlockInformation) NEODecode(data []byte) (int, error) {
var nread uint32
p.TTID = Tid(binary.BigEndian.Uint64(data[0:])) p.TTID = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *GenerateOIDs) NEODecode(data []byte) (int, error) { func (p *GenerateOIDs) NEODecode(data []byte) (int, error) {
var nread uint32
p.NumOIDs = binary.BigEndian.Uint32(data[0:]) p.NumOIDs = binary.BigEndian.Uint32(data[0:])
return 4 /* + TODO variable part */, nil return int(nread) + 4, nil
} }
func (p *AnswerGenerateOIDs) NEODecode(data []byte) (int, error) { func (p *AnswerGenerateOIDs) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.OidList = make([]Oid, l) p.OidList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.OidList[i] a := &p.OidList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *StoreObject) NEODecode(data []byte) (int, error) { func (p *StoreObject) NEODecode(data []byte) (int, error) {
var nread uint32
p.Oid = Oid(binary.BigEndian.Uint64(data[0:])) p.Oid = Oid(binary.BigEndian.Uint64(data[0:]))
p.Serial = Tid(binary.BigEndian.Uint64(data[8:])) p.Serial = Tid(binary.BigEndian.Uint64(data[8:]))
p.Compression = byte2bool((data[16:])[0]) p.Compression = byte2bool((data[16:])[0])
...@@ -466,32 +543,37 @@ func (p *StoreObject) NEODecode(data []byte) (int, error) { ...@@ -466,32 +543,37 @@ func (p *StoreObject) NEODecode(data []byte) (int, error) {
{ {
l := binary.BigEndian.Uint32(data[37:]) l := binary.BigEndian.Uint32(data[37:])
data = data[41:] data = data[41:]
nread += 41
p.Data = make([]byte, l) p.Data = make([]byte, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.Data[i] a := &p.Data[i]
(*a) = (data[0:])[0] (*a) = (data[0:])[0]
data = data[1:] data = data[1:]
nread += 1
} }
} }
p.DataSerial = Tid(binary.BigEndian.Uint64(data[0:])) p.DataSerial = Tid(binary.BigEndian.Uint64(data[0:]))
p.Tid = Tid(binary.BigEndian.Uint64(data[8:])) p.Tid = Tid(binary.BigEndian.Uint64(data[8:]))
p.Unlock = byte2bool((data[16:])[0]) p.Unlock = byte2bool((data[16:])[0])
return 17 /* + TODO variable part */, nil return int(nread) + 17, nil
} }
func (p *AnswerStoreObject) NEODecode(data []byte) (int, error) { func (p *AnswerStoreObject) NEODecode(data []byte) (int, error) {
var nread uint32
p.Conflicting = byte2bool((data[0:])[0]) p.Conflicting = byte2bool((data[0:])[0])
p.Oid = Oid(binary.BigEndian.Uint64(data[1:])) p.Oid = Oid(binary.BigEndian.Uint64(data[1:]))
p.Serial = Tid(binary.BigEndian.Uint64(data[9:])) p.Serial = Tid(binary.BigEndian.Uint64(data[9:]))
return 17 /* + TODO variable part */, nil return int(nread) + 17, nil
} }
func (p *AbortTransaction) NEODecode(data []byte) (int, error) { func (p *AbortTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *StoreTransaction) NEODecode(data []byte) (int, error) { func (p *StoreTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
...@@ -501,6 +583,7 @@ func (p *StoreTransaction) NEODecode(data []byte) (int, error) { ...@@ -501,6 +583,7 @@ func (p *StoreTransaction) NEODecode(data []byte) (int, error) {
} }
p.User = string(data[:l]) p.User = string(data[:l])
data = data[l:] data = data[l:]
nread += 12 + l
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
...@@ -510,6 +593,7 @@ func (p *StoreTransaction) NEODecode(data []byte) (int, error) { ...@@ -510,6 +593,7 @@ func (p *StoreTransaction) NEODecode(data []byte) (int, error) {
} }
p.Description = string(data[:l]) p.Description = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
...@@ -519,33 +603,39 @@ func (p *StoreTransaction) NEODecode(data []byte) (int, error) { ...@@ -519,33 +603,39 @@ func (p *StoreTransaction) NEODecode(data []byte) (int, error) {
} }
p.Extension = string(data[:l]) p.Extension = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.OidList = make([]Oid, l) p.OidList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.OidList[i] a := &p.OidList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *VoteTransaction) NEODecode(data []byte) (int, error) { func (p *VoteTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *GetObject) NEODecode(data []byte) (int, error) { func (p *GetObject) NEODecode(data []byte) (int, error) {
var nread uint32
p.Oid = Oid(binary.BigEndian.Uint64(data[0:])) p.Oid = Oid(binary.BigEndian.Uint64(data[0:]))
p.Serial = Tid(binary.BigEndian.Uint64(data[8:])) p.Serial = Tid(binary.BigEndian.Uint64(data[8:]))
p.Tid = Tid(binary.BigEndian.Uint64(data[16:])) p.Tid = Tid(binary.BigEndian.Uint64(data[16:]))
return 24 /* + TODO variable part */, nil return int(nread) + 24, nil
} }
func (p *AnswerGetObject) NEODecode(data []byte) (int, error) { func (p *AnswerGetObject) NEODecode(data []byte) (int, error) {
var nread uint32
p.Oid = Oid(binary.BigEndian.Uint64(data[0:])) p.Oid = Oid(binary.BigEndian.Uint64(data[0:]))
p.SerialStart = Tid(binary.BigEndian.Uint64(data[8:])) p.SerialStart = Tid(binary.BigEndian.Uint64(data[8:]))
p.SerialEnd = Tid(binary.BigEndian.Uint64(data[16:])) p.SerialEnd = Tid(binary.BigEndian.Uint64(data[16:]))
...@@ -573,66 +663,78 @@ func (p *AnswerGetObject) NEODecode(data []byte) (int, error) { ...@@ -573,66 +663,78 @@ func (p *AnswerGetObject) NEODecode(data []byte) (int, error) {
{ {
l := binary.BigEndian.Uint32(data[45:]) l := binary.BigEndian.Uint32(data[45:])
data = data[49:] data = data[49:]
nread += 49
p.Data = make([]byte, l) p.Data = make([]byte, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.Data[i] a := &p.Data[i]
(*a) = (data[0:])[0] (*a) = (data[0:])[0]
data = data[1:] data = data[1:]
nread += 1
} }
} }
p.DataSerial = Tid(binary.BigEndian.Uint64(data[0:])) p.DataSerial = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *TIDList) NEODecode(data []byte) (int, error) { func (p *TIDList) NEODecode(data []byte) (int, error) {
var nread uint32
p.First = binary.BigEndian.Uint64(data[0:]) p.First = binary.BigEndian.Uint64(data[0:])
p.Last = binary.BigEndian.Uint64(data[8:]) p.Last = binary.BigEndian.Uint64(data[8:])
p.Partition = binary.BigEndian.Uint32(data[16:]) p.Partition = binary.BigEndian.Uint32(data[16:])
return 20 /* + TODO variable part */, nil return int(nread) + 20, nil
} }
func (p *AnswerTIDList) NEODecode(data []byte) (int, error) { func (p *AnswerTIDList) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.TIDList = make([]Tid, l) p.TIDList = make([]Tid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.TIDList[i] a := &p.TIDList[i]
(*a) = Tid(binary.BigEndian.Uint64(data[0:])) (*a) = Tid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *TIDListFrom) NEODecode(data []byte) (int, error) { func (p *TIDListFrom) NEODecode(data []byte) (int, error) {
var nread uint32
p.MinTID = Tid(binary.BigEndian.Uint64(data[0:])) p.MinTID = Tid(binary.BigEndian.Uint64(data[0:]))
p.MaxTID = Tid(binary.BigEndian.Uint64(data[8:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[8:]))
p.Length = binary.BigEndian.Uint32(data[16:]) p.Length = binary.BigEndian.Uint32(data[16:])
p.Partition = binary.BigEndian.Uint32(data[20:]) p.Partition = binary.BigEndian.Uint32(data[20:])
return 24 /* + TODO variable part */, nil return int(nread) + 24, nil
} }
func (p *AnswerTIDListFrom) NEODecode(data []byte) (int, error) { func (p *AnswerTIDListFrom) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.TidList = make([]Tid, l) p.TidList = make([]Tid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.TidList[i] a := &p.TidList[i]
(*a) = Tid(binary.BigEndian.Uint64(data[0:])) (*a) = Tid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *TransactionInformation) NEODecode(data []byte) (int, error) { func (p *TransactionInformation) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) { func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
...@@ -642,6 +744,7 @@ func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) { ...@@ -642,6 +744,7 @@ func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) {
} }
p.User = string(data[:l]) p.User = string(data[:l])
data = data[l:] data = data[l:]
nread += 12 + l
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
...@@ -651,6 +754,7 @@ func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) { ...@@ -651,6 +754,7 @@ func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) {
} }
p.Description = string(data[:l]) p.Description = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
...@@ -660,33 +764,39 @@ func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) { ...@@ -660,33 +764,39 @@ func (p *AnswerTransactionInformation) NEODecode(data []byte) (int, error) {
} }
p.Extension = string(data[:l]) p.Extension = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
p.Packed = byte2bool((data[0:])[0]) p.Packed = byte2bool((data[0:])[0])
{ {
l := binary.BigEndian.Uint32(data[1:]) l := binary.BigEndian.Uint32(data[1:])
data = data[5:] data = data[5:]
nread += 5
p.OidList = make([]Oid, l) p.OidList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.OidList[i] a := &p.OidList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *ObjectHistory) NEODecode(data []byte) (int, error) { func (p *ObjectHistory) NEODecode(data []byte) (int, error) {
var nread uint32
p.Oid = Oid(binary.BigEndian.Uint64(data[0:])) p.Oid = Oid(binary.BigEndian.Uint64(data[0:]))
p.First = binary.BigEndian.Uint64(data[8:]) p.First = binary.BigEndian.Uint64(data[8:])
p.Last = binary.BigEndian.Uint64(data[16:]) p.Last = binary.BigEndian.Uint64(data[16:])
return 24 /* + TODO variable part */, nil return int(nread) + 24, nil
} }
func (p *AnswerObjectHistory) NEODecode(data []byte) (int, error) { func (p *AnswerObjectHistory) NEODecode(data []byte) (int, error) {
var nread uint32
p.Oid = Oid(binary.BigEndian.Uint64(data[0:])) p.Oid = Oid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.HistoryList = make([]struct { p.HistoryList = make([]struct {
Serial Tid Serial Tid
Size uint32 Size uint32
...@@ -696,23 +806,27 @@ func (p *AnswerObjectHistory) NEODecode(data []byte) (int, error) { ...@@ -696,23 +806,27 @@ func (p *AnswerObjectHistory) NEODecode(data []byte) (int, error) {
(*a).Serial = Tid(binary.BigEndian.Uint64(data[0:])) (*a).Serial = Tid(binary.BigEndian.Uint64(data[0:]))
(*a).Size = binary.BigEndian.Uint32(data[8:]) (*a).Size = binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *PartitionList) NEODecode(data []byte) (int, error) { func (p *PartitionList) NEODecode(data []byte) (int, error) {
var nread uint32
p.MinOffset = binary.BigEndian.Uint32(data[0:]) p.MinOffset = binary.BigEndian.Uint32(data[0:])
p.MaxOffset = binary.BigEndian.Uint32(data[4:]) p.MaxOffset = binary.BigEndian.Uint32(data[4:])
p.UUID = UUID(int32(binary.BigEndian.Uint32(data[8:]))) p.UUID = UUID(int32(binary.BigEndian.Uint32(data[8:])))
return 12 /* + TODO variable part */, nil return int(nread) + 12, nil
} }
func (p *AnswerPartitionList) NEODecode(data []byte) (int, error) { func (p *AnswerPartitionList) NEODecode(data []byte) (int, error) {
var nread uint32
p.PTid = PTid(binary.BigEndian.Uint64(data[0:])) p.PTid = PTid(binary.BigEndian.Uint64(data[0:]))
{ {
l := binary.BigEndian.Uint32(data[8:]) l := binary.BigEndian.Uint32(data[8:])
data = data[12:] data = data[12:]
nread += 12
p.RowList = make([]RowInfo, l) p.RowList = make([]RowInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.RowList[i] a := &p.RowList[i]
...@@ -720,29 +834,35 @@ func (p *AnswerPartitionList) NEODecode(data []byte) (int, error) { ...@@ -720,29 +834,35 @@ func (p *AnswerPartitionList) NEODecode(data []byte) (int, error) {
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
data = data[8:] data = data[8:]
nread += 8
(*a).CellList = make([]CellInfo, l) (*a).CellList = make([]CellInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &(*a).CellList[i] a := &(*a).CellList[i]
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
(*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:]))) (*a).CellState = CellState(int32(binary.BigEndian.Uint32(data[4:])))
data = data[8:] data = data[8:]
nread += 8
} }
} }
data = data[0:] data = data[0:]
nread += 0
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *X_NodeList) NEODecode(data []byte) (int, error) { func (p *X_NodeList) NEODecode(data []byte) (int, error) {
var nread uint32
p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:]))) p.NodeType = NodeType(int32(binary.BigEndian.Uint32(data[0:])))
return 4 /* + TODO variable part */, nil return int(nread) + 4, nil
} }
func (p *AnswerNodeList) NEODecode(data []byte) (int, error) { func (p *AnswerNodeList) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.NodeList = make([]NodeInfo, l) p.NodeList = make([]NodeInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.NodeList[i] a := &p.NodeList[i]
...@@ -755,55 +875,66 @@ func (p *AnswerNodeList) NEODecode(data []byte) (int, error) { ...@@ -755,55 +875,66 @@ func (p *AnswerNodeList) NEODecode(data []byte) (int, error) {
} }
(*a).Address.Host = string(data[:l]) (*a).Address.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 8 + l
} }
(*a).Address.Port = binary.BigEndian.Uint16(data[0:]) (*a).Address.Port = binary.BigEndian.Uint16(data[0:])
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[2:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[2:])))
(*a).NodeState = NodeState(int32(binary.BigEndian.Uint32(data[6:]))) (*a).NodeState = NodeState(int32(binary.BigEndian.Uint32(data[6:])))
(*a).IdTimestamp = float64_NEODecode(data[10:]) (*a).IdTimestamp = float64_NEODecode(data[10:])
data = data[18:] data = data[18:]
nread += 18
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *SetNodeState) NEODecode(data []byte) (int, error) { func (p *SetNodeState) NEODecode(data []byte) (int, error) {
var nread uint32
p.UUID = UUID(int32(binary.BigEndian.Uint32(data[0:]))) p.UUID = UUID(int32(binary.BigEndian.Uint32(data[0:])))
p.NodeState = NodeState(int32(binary.BigEndian.Uint32(data[4:]))) p.NodeState = NodeState(int32(binary.BigEndian.Uint32(data[4:])))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *AddPendingNodes) NEODecode(data []byte) (int, error) { func (p *AddPendingNodes) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.UUIDList = make([]UUID, l) p.UUIDList = make([]UUID, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.UUIDList[i] a := &p.UUIDList[i]
(*a) = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a) = UUID(int32(binary.BigEndian.Uint32(data[0:])))
data = data[4:] data = data[4:]
nread += 4
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *TweakPartitionTable) NEODecode(data []byte) (int, error) { func (p *TweakPartitionTable) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.UUIDList = make([]UUID, l) p.UUIDList = make([]UUID, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.UUIDList[i] a := &p.UUIDList[i]
(*a) = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a) = UUID(int32(binary.BigEndian.Uint32(data[0:])))
data = data[4:] data = data[4:]
nread += 4
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *NotifyNodeInformation) NEODecode(data []byte) (int, error) { func (p *NotifyNodeInformation) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.NodeList = make([]NodeInfo, l) p.NodeList = make([]NodeInfo, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.NodeList[i] a := &p.NodeList[i]
...@@ -816,57 +947,68 @@ func (p *NotifyNodeInformation) NEODecode(data []byte) (int, error) { ...@@ -816,57 +947,68 @@ func (p *NotifyNodeInformation) NEODecode(data []byte) (int, error) {
} }
(*a).Address.Host = string(data[:l]) (*a).Address.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 8 + l
} }
(*a).Address.Port = binary.BigEndian.Uint16(data[0:]) (*a).Address.Port = binary.BigEndian.Uint16(data[0:])
(*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[2:]))) (*a).UUID = UUID(int32(binary.BigEndian.Uint32(data[2:])))
(*a).NodeState = NodeState(int32(binary.BigEndian.Uint32(data[6:]))) (*a).NodeState = NodeState(int32(binary.BigEndian.Uint32(data[6:])))
(*a).IdTimestamp = float64_NEODecode(data[10:]) (*a).IdTimestamp = float64_NEODecode(data[10:])
data = data[18:] data = data[18:]
nread += 18
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *NodeInformation) NEODecode(data []byte) (int, error) { func (p *NodeInformation) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *SetClusterState) NEODecode(data []byte) (int, error) { func (p *SetClusterState) NEODecode(data []byte) (int, error) {
var nread uint32
p.State = ClusterState(int32(binary.BigEndian.Uint32(data[0:]))) p.State = ClusterState(int32(binary.BigEndian.Uint32(data[0:])))
return 4 /* + TODO variable part */, nil return int(nread) + 4, nil
} }
func (p *ClusterInformation) NEODecode(data []byte) (int, error) { func (p *ClusterInformation) NEODecode(data []byte) (int, error) {
var nread uint32
p.State = ClusterState(int32(binary.BigEndian.Uint32(data[0:]))) p.State = ClusterState(int32(binary.BigEndian.Uint32(data[0:])))
return 4 /* + TODO variable part */, nil return int(nread) + 4, nil
} }
func (p *X_ClusterState) NEODecode(data []byte) (int, error) { func (p *X_ClusterState) NEODecode(data []byte) (int, error) {
var nread uint32
p.State = ClusterState(int32(binary.BigEndian.Uint32(data[0:]))) p.State = ClusterState(int32(binary.BigEndian.Uint32(data[0:])))
return 4 /* + TODO variable part */, nil return int(nread) + 4, nil
} }
func (p *ObjectUndoSerial) NEODecode(data []byte) (int, error) { func (p *ObjectUndoSerial) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
p.LTID = Tid(binary.BigEndian.Uint64(data[8:])) p.LTID = Tid(binary.BigEndian.Uint64(data[8:]))
p.UndoneTID = Tid(binary.BigEndian.Uint64(data[16:])) p.UndoneTID = Tid(binary.BigEndian.Uint64(data[16:]))
{ {
l := binary.BigEndian.Uint32(data[24:]) l := binary.BigEndian.Uint32(data[24:])
data = data[28:] data = data[28:]
nread += 28
p.OidList = make([]Oid, l) p.OidList = make([]Oid, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.OidList[i] a := &p.OidList[i]
(*a) = Oid(binary.BigEndian.Uint64(data[0:])) (*a) = Oid(binary.BigEndian.Uint64(data[0:]))
data = data[8:] data = data[8:]
nread += 8
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *AnswerObjectUndoSerial) NEODecode(data []byte) (int, error) { func (p *AnswerObjectUndoSerial) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.ObjectTIDDict = make(map[Oid]struct { p.ObjectTIDDict = make(map[Oid]struct {
CurrentSerial Tid CurrentSerial Tid
UndoSerial Tid UndoSerial Tid
...@@ -885,65 +1027,76 @@ func (p *AnswerObjectUndoSerial) NEODecode(data []byte) (int, error) { ...@@ -885,65 +1027,76 @@ func (p *AnswerObjectUndoSerial) NEODecode(data []byte) (int, error) {
v.IsCurrent = byte2bool((data[24:])[0]) v.IsCurrent = byte2bool((data[24:])[0])
m[key] = v m[key] = v
data = data[25:] data = data[25:]
nread += 25
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *HasLock) NEODecode(data []byte) (int, error) { func (p *HasLock) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
p.Oid = Oid(binary.BigEndian.Uint64(data[8:])) p.Oid = Oid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *AnswerHasLock) NEODecode(data []byte) (int, error) { func (p *AnswerHasLock) NEODecode(data []byte) (int, error) {
var nread uint32
p.Oid = Oid(binary.BigEndian.Uint64(data[0:])) p.Oid = Oid(binary.BigEndian.Uint64(data[0:]))
p.LockState = LockState(int32(binary.BigEndian.Uint32(data[8:]))) p.LockState = LockState(int32(binary.BigEndian.Uint32(data[8:])))
return 12 /* + TODO variable part */, nil return int(nread) + 12, nil
} }
func (p *CheckCurrentSerial) NEODecode(data []byte) (int, error) { func (p *CheckCurrentSerial) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
p.Serial = Tid(binary.BigEndian.Uint64(data[8:])) p.Serial = Tid(binary.BigEndian.Uint64(data[8:]))
p.Oid = Oid(binary.BigEndian.Uint64(data[16:])) p.Oid = Oid(binary.BigEndian.Uint64(data[16:]))
return 24 /* + TODO variable part */, nil return int(nread) + 24, nil
} }
func (p *AnswerCheckCurrentSerial) NEODecode(data []byte) (int, error) { func (p *AnswerCheckCurrentSerial) NEODecode(data []byte) (int, error) {
var nread uint32
p.Conflicting = byte2bool((data[0:])[0]) p.Conflicting = byte2bool((data[0:])[0])
p.Oid = Oid(binary.BigEndian.Uint64(data[1:])) p.Oid = Oid(binary.BigEndian.Uint64(data[1:]))
p.Serial = Tid(binary.BigEndian.Uint64(data[9:])) p.Serial = Tid(binary.BigEndian.Uint64(data[9:]))
return 17 /* + TODO variable part */, nil return int(nread) + 17, nil
} }
func (p *Pack) NEODecode(data []byte) (int, error) { func (p *Pack) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *AnswerPack) NEODecode(data []byte) (int, error) { func (p *AnswerPack) NEODecode(data []byte) (int, error) {
var nread uint32
p.Status = byte2bool((data[0:])[0]) p.Status = byte2bool((data[0:])[0])
return 1 /* + TODO variable part */, nil return int(nread) + 1, nil
} }
func (p *CheckReplicas) NEODecode(data []byte) (int, error) { func (p *CheckReplicas) NEODecode(data []byte) (int, error) {
var nread uint32
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
data = data[4:] data = data[4:]
nread += 4
p.PartitionDict = make(map[uint32]UUID, l) p.PartitionDict = make(map[uint32]UUID, l)
m := p.PartitionDict m := p.PartitionDict
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
key := binary.BigEndian.Uint32(data[0:]) key := binary.BigEndian.Uint32(data[0:])
m[key] = UUID(int32(binary.BigEndian.Uint32(data[4:]))) m[key] = UUID(int32(binary.BigEndian.Uint32(data[4:])))
data = data[8:] data = data[8:]
nread += 8
} }
} }
p.MinTID = Tid(binary.BigEndian.Uint64(data[0:])) p.MinTID = Tid(binary.BigEndian.Uint64(data[0:]))
p.MaxTID = Tid(binary.BigEndian.Uint64(data[8:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[8:]))
return 16 /* + TODO variable part */, nil return int(nread) + 16, nil
} }
func (p *CheckPartition) NEODecode(data []byte) (int, error) { func (p *CheckPartition) NEODecode(data []byte) (int, error) {
var nread uint32
p.Partition = binary.BigEndian.Uint32(data[0:]) p.Partition = binary.BigEndian.Uint32(data[0:])
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
...@@ -953,6 +1106,7 @@ func (p *CheckPartition) NEODecode(data []byte) (int, error) { ...@@ -953,6 +1106,7 @@ func (p *CheckPartition) NEODecode(data []byte) (int, error) {
} }
p.Source.UpstreamName = string(data[:l]) p.Source.UpstreamName = string(data[:l])
data = data[l:] data = data[l:]
nread += 8 + l
} }
{ {
l := binary.BigEndian.Uint32(data[0:]) l := binary.BigEndian.Uint32(data[0:])
...@@ -962,22 +1116,25 @@ func (p *CheckPartition) NEODecode(data []byte) (int, error) { ...@@ -962,22 +1116,25 @@ func (p *CheckPartition) NEODecode(data []byte) (int, error) {
} }
p.Source.Address.Host = string(data[:l]) p.Source.Address.Host = string(data[:l])
data = data[l:] data = data[l:]
nread += 4 + l
} }
p.Source.Address.Port = binary.BigEndian.Uint16(data[0:]) p.Source.Address.Port = binary.BigEndian.Uint16(data[0:])
p.MinTID = Tid(binary.BigEndian.Uint64(data[2:])) p.MinTID = Tid(binary.BigEndian.Uint64(data[2:]))
p.MaxTID = Tid(binary.BigEndian.Uint64(data[10:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[10:]))
return 18 /* + TODO variable part */, nil return int(nread) + 18, nil
} }
func (p *CheckTIDRange) NEODecode(data []byte) (int, error) { func (p *CheckTIDRange) NEODecode(data []byte) (int, error) {
var nread uint32
p.Partition = binary.BigEndian.Uint32(data[0:]) p.Partition = binary.BigEndian.Uint32(data[0:])
p.Length = binary.BigEndian.Uint32(data[4:]) p.Length = binary.BigEndian.Uint32(data[4:])
p.MinTID = Tid(binary.BigEndian.Uint64(data[8:])) p.MinTID = Tid(binary.BigEndian.Uint64(data[8:]))
p.MaxTID = Tid(binary.BigEndian.Uint64(data[16:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[16:]))
return 24 /* + TODO variable part */, nil return int(nread) + 24, nil
} }
func (p *AnswerCheckTIDRange) NEODecode(data []byte) (int, error) { func (p *AnswerCheckTIDRange) NEODecode(data []byte) (int, error) {
var nread uint32
p.Count = binary.BigEndian.Uint32(data[0:]) p.Count = binary.BigEndian.Uint32(data[0:])
p.Checksum[0] = (data[4:])[0] p.Checksum[0] = (data[4:])[0]
p.Checksum[1] = (data[5:])[0] p.Checksum[1] = (data[5:])[0]
...@@ -1000,19 +1157,21 @@ func (p *AnswerCheckTIDRange) NEODecode(data []byte) (int, error) { ...@@ -1000,19 +1157,21 @@ func (p *AnswerCheckTIDRange) NEODecode(data []byte) (int, error) {
p.Checksum[18] = (data[22:])[0] p.Checksum[18] = (data[22:])[0]
p.Checksum[19] = (data[23:])[0] p.Checksum[19] = (data[23:])[0]
p.MaxTID = Tid(binary.BigEndian.Uint64(data[24:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[24:]))
return 32 /* + TODO variable part */, nil return int(nread) + 32, nil
} }
func (p *CheckSerialRange) NEODecode(data []byte) (int, error) { func (p *CheckSerialRange) NEODecode(data []byte) (int, error) {
var nread uint32
p.Partition = binary.BigEndian.Uint32(data[0:]) p.Partition = binary.BigEndian.Uint32(data[0:])
p.Length = binary.BigEndian.Uint32(data[4:]) p.Length = binary.BigEndian.Uint32(data[4:])
p.MinTID = Tid(binary.BigEndian.Uint64(data[8:])) p.MinTID = Tid(binary.BigEndian.Uint64(data[8:]))
p.MaxTID = Tid(binary.BigEndian.Uint64(data[16:])) p.MaxTID = Tid(binary.BigEndian.Uint64(data[16:]))
p.MinOID = Oid(binary.BigEndian.Uint64(data[24:])) p.MinOID = Oid(binary.BigEndian.Uint64(data[24:]))
return 32 /* + TODO variable part */, nil return int(nread) + 32, nil
} }
func (p *AnswerCheckSerialRange) NEODecode(data []byte) (int, error) { func (p *AnswerCheckSerialRange) NEODecode(data []byte) (int, error) {
var nread uint32
p.Count = binary.BigEndian.Uint32(data[0:]) p.Count = binary.BigEndian.Uint32(data[0:])
p.TidChecksum[0] = (data[4:])[0] p.TidChecksum[0] = (data[4:])[0]
p.TidChecksum[1] = (data[5:])[0] p.TidChecksum[1] = (data[5:])[0]
...@@ -1056,33 +1215,39 @@ func (p *AnswerCheckSerialRange) NEODecode(data []byte) (int, error) { ...@@ -1056,33 +1215,39 @@ func (p *AnswerCheckSerialRange) NEODecode(data []byte) (int, error) {
p.OidChecksum[18] = (data[50:])[0] p.OidChecksum[18] = (data[50:])[0]
p.OidChecksum[19] = (data[51:])[0] p.OidChecksum[19] = (data[51:])[0]
p.MaxOID = Oid(binary.BigEndian.Uint64(data[52:])) p.MaxOID = Oid(binary.BigEndian.Uint64(data[52:]))
return 60 /* + TODO variable part */, nil return int(nread) + 60, nil
} }
func (p *PartitionCorrupted) NEODecode(data []byte) (int, error) { func (p *PartitionCorrupted) NEODecode(data []byte) (int, error) {
var nread uint32
p.Partition = binary.BigEndian.Uint32(data[0:]) p.Partition = binary.BigEndian.Uint32(data[0:])
{ {
l := binary.BigEndian.Uint32(data[4:]) l := binary.BigEndian.Uint32(data[4:])
data = data[8:] data = data[8:]
nread += 8
p.CellList = make([]UUID, l) p.CellList = make([]UUID, l)
for i := 0; uint32(i) < l; i++ { for i := 0; uint32(i) < l; i++ {
a := &p.CellList[i] a := &p.CellList[i]
(*a) = UUID(int32(binary.BigEndian.Uint32(data[0:]))) (*a) = UUID(int32(binary.BigEndian.Uint32(data[0:])))
data = data[4:] data = data[4:]
nread += 4
} }
} }
return 0 /* + TODO variable part */, nil return int(nread) + 0, nil
} }
func (p *LastTransaction) NEODecode(data []byte) (int, error) { func (p *LastTransaction) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
func (p *AnswerLastTransaction) NEODecode(data []byte) (int, error) { func (p *AnswerLastTransaction) NEODecode(data []byte) (int, error) {
var nread uint32
p.Tid = Tid(binary.BigEndian.Uint64(data[0:])) p.Tid = Tid(binary.BigEndian.Uint64(data[0:]))
return 8 /* + TODO variable part */, nil return int(nread) + 8, nil
} }
func (p *NotifyReady) NEODecode(data []byte) (int, error) { func (p *NotifyReady) NEODecode(data []byte) (int, error) {
return 0 /* + TODO variable part */, nil var nread uint32
return int(nread) + 0, nil
} }
...@@ -213,6 +213,7 @@ func (d *decoder) emitstrbytes(assignto string) { ...@@ -213,6 +213,7 @@ func (d *decoder) emitstrbytes(assignto string) {
d.emit("if uint32(len(data)) < l { return 0, ErrDecodeOverflow }") d.emit("if uint32(len(data)) < l { return 0, ErrDecodeOverflow }")
d.emit("%v = string(data[:l])", assignto) d.emit("%v = string(data[:l])", assignto)
d.emit("data = data[l:]") d.emit("data = data[l:]")
d.emit("nread += %v + l", d.n)
d.emit("}") d.emit("}")
d.n = 0 d.n = 0
} }
...@@ -223,6 +224,7 @@ func (d *decoder) emitslice(assignto string, obj types.Object, typ *types.Slice) ...@@ -223,6 +224,7 @@ func (d *decoder) emitslice(assignto string, obj types.Object, typ *types.Slice)
// [len]item // [len]item
d.emit("{ l := %v", d.decodedBasic(nil, types.Typ[types.Uint32])) d.emit("{ l := %v", d.decodedBasic(nil, types.Typ[types.Uint32]))
d.emit("data = data[%v:]", d.n) d.emit("data = data[%v:]", d.n)
d.emit("nread += %v", d.n)
d.n = 0 d.n = 0
d.emit("%v = make(%v, l)", assignto, typeName(typ)) d.emit("%v = make(%v, l)", assignto, typeName(typ))
// TODO size check // TODO size check
...@@ -233,6 +235,7 @@ func (d *decoder) emitslice(assignto string, obj types.Object, typ *types.Slice) ...@@ -233,6 +235,7 @@ func (d *decoder) emitslice(assignto string, obj types.Object, typ *types.Slice)
// XXX try to avoid (*) in a // XXX try to avoid (*) in a
d.emitobjtype("(*a)", obj, typ.Elem()) // XXX also obj.Elem() ? d.emitobjtype("(*a)", obj, typ.Elem()) // XXX also obj.Elem() ?
d.emit("data = data[%v:]", d.n) // FIXME wrt slice of slice ? d.emit("data = data[%v:]", d.n) // FIXME wrt slice of slice ?
d.emit("nread += %v", d.n)
d.emit("}") d.emit("}")
//d.emit("%v = string(data[:l])", assignto) //d.emit("%v = string(data[:l])", assignto)
d.emit("}") d.emit("}")
...@@ -244,6 +247,7 @@ func (d *decoder) emitmap(assignto string, obj types.Object, typ *types.Map) { ...@@ -244,6 +247,7 @@ func (d *decoder) emitmap(assignto string, obj types.Object, typ *types.Map) {
// [len](key, value) // [len](key, value)
d.emit("{ l := %v", d.decodedBasic(nil, types.Typ[types.Uint32])) d.emit("{ l := %v", d.decodedBasic(nil, types.Typ[types.Uint32]))
d.emit("data = data[%v:]", d.n) d.emit("data = data[%v:]", d.n)
d.emit("nread += %v", d.n)
d.n = 0 d.n = 0
d.emit("%v = make(%v, l)", assignto, typeName(typ)) d.emit("%v = make(%v, l)", assignto, typeName(typ))
// TODO size check // TODO size check
...@@ -267,6 +271,7 @@ func (d *decoder) emitmap(assignto string, obj types.Object, typ *types.Map) { ...@@ -267,6 +271,7 @@ func (d *decoder) emitmap(assignto string, obj types.Object, typ *types.Map) {
} }
d.emit("data = data[%v:]", d.n) // FIXME wrt map of map ? d.emit("data = data[%v:]", d.n) // FIXME wrt map of map ?
d.emit("nread += %v", d.n)
d.emit("}") d.emit("}")
//d.emit("%v = string(data[:l])", assignto) //d.emit("%v = string(data[:l])", assignto)
d.emit("}") d.emit("}")
...@@ -326,6 +331,7 @@ func gendecode(typespec *ast.TypeSpec) string { ...@@ -326,6 +331,7 @@ func gendecode(typespec *ast.TypeSpec) string {
d := decoder{} d := decoder{}
// prologue // prologue
d.emit("func (p *%s) NEODecode(data []byte) (int, error) {", typespec.Name.Name) d.emit("func (p *%s) NEODecode(data []byte) (int, error) {", typespec.Name.Name)
d.emit("var nread uint32")
//n := 0 //n := 0
//t := typespec.Type.(*ast.StructType) // must be //t := typespec.Type.(*ast.StructType) // must be
...@@ -336,7 +342,7 @@ func gendecode(typespec *ast.TypeSpec) string { ...@@ -336,7 +342,7 @@ func gendecode(typespec *ast.TypeSpec) string {
d.emitobjtype("p", obj, typ) d.emitobjtype("p", obj, typ)
d.emit("return %v /* + TODO variable part */, nil", d.n) // FIXME n is wrong after reset d.emit("return int(nread) + %v, nil", d.n)
d.emit("}") d.emit("}")
return d.buf.String() return d.buf.String()
......
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