mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-12-23 13:41:37 +00:00
io: refactoring for using WriteVarBytes instead of WriteLE
goal is to be consistent with C# implementation. For writing []byte WriteBytes used and for byte - WriteVarByte.
This commit is contained in:
parent
d02673c112
commit
03ff2976ed
20 changed files with 33 additions and 34 deletions
|
@ -177,8 +177,7 @@ func dumpDB(ctx *cli.Context) error {
|
|||
buf := io.NewBufBinWriter()
|
||||
b.EncodeBinary(buf.BinWriter)
|
||||
bytes := buf.Bytes()
|
||||
writer.WriteLE(uint32(len(bytes)))
|
||||
writer.WriteLE(bytes)
|
||||
writer.WriteVarBytes(bytes)
|
||||
if writer.Err != nil {
|
||||
return cli.NewExitError(err, 1)
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ func (p Payload) EncodeBinaryUnsigned(w *io.BinWriter) {
|
|||
|
||||
ww := io.NewBufBinWriter()
|
||||
p.message.EncodeBinary(ww.BinWriter)
|
||||
w.WriteBytes(ww.Bytes())
|
||||
w.WriteVarBytes(ww.Bytes())
|
||||
}
|
||||
|
||||
// EncodeBinary implements io.Serializable interface.
|
||||
|
|
|
@ -100,7 +100,7 @@ func (p *changeViewCompact) EncodeBinary(w *io.BinWriter) {
|
|||
w.WriteLE(p.ValidatorIndex)
|
||||
w.WriteLE(p.OriginalViewNumber)
|
||||
w.WriteLE(p.Timestamp)
|
||||
w.WriteBytes(p.InvocationScript)
|
||||
w.WriteVarBytes(p.InvocationScript)
|
||||
}
|
||||
|
||||
// DecodeBinary implements io.Serializable interface.
|
||||
|
@ -116,7 +116,7 @@ func (p *commitCompact) EncodeBinary(w *io.BinWriter) {
|
|||
w.WriteLE(p.ViewNumber)
|
||||
w.WriteLE(p.ValidatorIndex)
|
||||
w.WriteBE(p.Signature)
|
||||
w.WriteBytes(p.InvocationScript)
|
||||
w.WriteVarBytes(p.InvocationScript)
|
||||
}
|
||||
|
||||
// DecodeBinary implements io.Serializable interface.
|
||||
|
@ -128,7 +128,7 @@ func (p *preparationCompact) DecodeBinary(r *io.BinReader) {
|
|||
// EncodeBinary implements io.Serializable interface.
|
||||
func (p *preparationCompact) EncodeBinary(w *io.BinWriter) {
|
||||
w.WriteLE(p.ValidatorIndex)
|
||||
w.WriteBytes(p.InvocationScript)
|
||||
w.WriteVarBytes(p.InvocationScript)
|
||||
}
|
||||
|
||||
// AddPayload implements payload.RecoveryMessage interface.
|
||||
|
|
|
@ -1508,7 +1508,7 @@ func (bc *Blockchain) verifyBlockWitnesses(block *Block, prevHeader *Header) err
|
|||
|
||||
func hashAndIndexToBytes(h util.Uint256, index uint32) []byte {
|
||||
buf := io.NewBufBinWriter()
|
||||
buf.WriteLE(h.BytesReverse())
|
||||
buf.WriteBytes(h.BytesReverse())
|
||||
buf.WriteLE(index)
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ func (state *BlockChainState) storeAsBlock(block *Block, sysFee uint32) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
buf.WriteLE(b)
|
||||
buf.WriteBytes(b)
|
||||
if buf.Err != nil {
|
||||
return buf.Err
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ func (state *BlockChainState) storeAsBlock(block *Block, sysFee uint32) error {
|
|||
// storeAsCurrentBlock stores the given block witch prefix SYSCurrentBlock.
|
||||
func (state *BlockChainState) storeAsCurrentBlock(block *Block) error {
|
||||
buf := io.NewBufBinWriter()
|
||||
buf.WriteLE(block.Hash().BytesReverse())
|
||||
buf.WriteBytes(block.Hash().BytesReverse())
|
||||
buf.WriteLE(block.Index)
|
||||
return state.store.Put(storage.SYSCurrentBlock.Bytes(), buf.Bytes())
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ func (cs *ContractState) DecodeBinary(br *io.BinReader) {
|
|||
|
||||
// EncodeBinary implements Serializable interface.
|
||||
func (cs *ContractState) EncodeBinary(bw *io.BinWriter) {
|
||||
bw.WriteBytes(cs.Script)
|
||||
bw.WriteVarBytes(cs.Script)
|
||||
bw.WriteArray(cs.ParamList)
|
||||
bw.WriteLE(cs.ReturnType)
|
||||
bw.WriteLE(cs.Properties)
|
||||
|
|
|
@ -53,7 +53,7 @@ func deleteStorageItemInStore(s storage.Store, scripthash util.Uint160, key []by
|
|||
|
||||
// EncodeBinary implements Serializable interface.
|
||||
func (si *StorageItem) EncodeBinary(w *io.BinWriter) {
|
||||
w.WriteBytes(si.Value)
|
||||
w.WriteVarBytes(si.Value)
|
||||
w.WriteLE(si.IsConst)
|
||||
}
|
||||
|
||||
|
|
|
@ -55,18 +55,18 @@ func (attr *Attribute) EncodeBinary(bw *io.BinWriter) {
|
|||
bw.WriteLE(&attr.Usage)
|
||||
switch attr.Usage {
|
||||
case ECDH02, ECDH03:
|
||||
bw.WriteLE(attr.Data[1:])
|
||||
bw.WriteBytes(attr.Data[1:])
|
||||
case Description, Remark, Remark1, Remark2, Remark3, Remark4,
|
||||
Remark5, Remark6, Remark7, Remark8, Remark9, Remark10, Remark11,
|
||||
Remark12, Remark13, Remark14, Remark15:
|
||||
bw.WriteBytes(attr.Data)
|
||||
bw.WriteVarBytes(attr.Data)
|
||||
case DescriptionURL:
|
||||
var urllen = uint8(len(attr.Data))
|
||||
bw.WriteLE(urllen)
|
||||
fallthrough
|
||||
case Script, ContractHash, Vote, Hash1, Hash2, Hash3, Hash4, Hash5, Hash6,
|
||||
Hash7, Hash8, Hash9, Hash10, Hash11, Hash12, Hash13, Hash14, Hash15:
|
||||
bw.WriteLE(attr.Data)
|
||||
bw.WriteBytes(attr.Data)
|
||||
default:
|
||||
bw.Err = fmt.Errorf("failed encoding TX attribute usage: 0x%2x", attr.Usage)
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ func (tx *InvocationTX) DecodeBinary(br *io.BinReader) {
|
|||
|
||||
// EncodeBinary implements Serializable interface.
|
||||
func (tx *InvocationTX) EncodeBinary(bw *io.BinWriter) {
|
||||
bw.WriteBytes(tx.Script)
|
||||
bw.WriteVarBytes(tx.Script)
|
||||
if tx.Version >= 1 {
|
||||
bw.WriteLE(tx.Gas)
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ func (tx *PublishTX) DecodeBinary(br *io.BinReader) {
|
|||
|
||||
// EncodeBinary implements Serializable interface.
|
||||
func (tx *PublishTX) EncodeBinary(bw *io.BinWriter) {
|
||||
bw.WriteBytes(tx.Script)
|
||||
bw.WriteVarBytes(tx.Script)
|
||||
bw.WriteVarUint(uint64(len(tx.ParamList)))
|
||||
for _, param := range tx.ParamList {
|
||||
bw.WriteLE(uint8(param))
|
||||
|
|
|
@ -49,6 +49,6 @@ func (tx *RegisterTX) EncodeBinary(bw *io.BinWriter) {
|
|||
bw.WriteString(tx.Name)
|
||||
bw.WriteLE(tx.Amount)
|
||||
bw.WriteLE(tx.Precision)
|
||||
bw.WriteLE(tx.Owner.Bytes())
|
||||
bw.WriteBytes(tx.Owner.Bytes())
|
||||
bw.WriteLE(tx.Admin)
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ func (s *StateDescriptor) DecodeBinary(r *io.BinReader) {
|
|||
// EncodeBinary implements Serializable interface.
|
||||
func (s *StateDescriptor) EncodeBinary(w *io.BinWriter) {
|
||||
w.WriteLE(s.Type)
|
||||
w.WriteBytes(s.Key)
|
||||
w.WriteBytes(s.Value)
|
||||
w.WriteVarBytes(s.Key)
|
||||
w.WriteVarBytes(s.Value)
|
||||
w.WriteString(s.Field)
|
||||
}
|
||||
|
|
|
@ -23,8 +23,8 @@ func (w *Witness) DecodeBinary(br *io.BinReader) {
|
|||
|
||||
// EncodeBinary implements Serializable interface.
|
||||
func (w *Witness) EncodeBinary(bw *io.BinWriter) {
|
||||
bw.WriteBytes(w.InvocationScript)
|
||||
bw.WriteBytes(w.VerificationScript)
|
||||
bw.WriteVarBytes(w.InvocationScript)
|
||||
bw.WriteVarBytes(w.VerificationScript)
|
||||
}
|
||||
|
||||
// MarshalJSON implements the json marshaller interface.
|
||||
|
|
|
@ -219,7 +219,7 @@ func (p *PublicKey) DecodeBinary(r *io.BinReader) {
|
|||
|
||||
// EncodeBinary encodes a PublicKey to the given BinWriter.
|
||||
func (p *PublicKey) EncodeBinary(w *io.BinWriter) {
|
||||
w.WriteLE(p.Bytes())
|
||||
w.WriteBytes(p.Bytes())
|
||||
}
|
||||
|
||||
// Signature returns a NEO-specific hash of the key.
|
||||
|
|
|
@ -93,18 +93,18 @@ func (w *BinWriter) WriteVarUint(val uint64) {
|
|||
|
||||
}
|
||||
|
||||
// WriteVarBytes writes a variable byte into the underlying io.Writer without prefix.
|
||||
func (w *BinWriter) WriteVarBytes(b []byte) {
|
||||
// WriteBytes writes a variable byte into the underlying io.Writer without prefix.
|
||||
func (w *BinWriter) WriteBytes(b []byte) {
|
||||
w.WriteLE(b)
|
||||
}
|
||||
|
||||
// WriteBytes writes a variable length byte array into the underlying io.Writer.
|
||||
func (w *BinWriter) WriteBytes(b []byte) {
|
||||
// WriteVarBytes writes a variable length byte array into the underlying io.Writer.
|
||||
func (w *BinWriter) WriteVarBytes(b []byte) {
|
||||
w.WriteVarUint(uint64(len(b)))
|
||||
w.WriteLE(b)
|
||||
}
|
||||
|
||||
// WriteString writes a variable length string into the underlying io.Writer.
|
||||
func (w *BinWriter) WriteString(s string) {
|
||||
w.WriteBytes([]byte(s))
|
||||
w.WriteVarBytes([]byte(s))
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ func TestWriterErrHandling(t *testing.T) {
|
|||
bw.WriteLE(uint32(0))
|
||||
bw.WriteBE(uint32(0))
|
||||
bw.WriteVarUint(0)
|
||||
bw.WriteBytes([]byte{0x55, 0xaa})
|
||||
bw.WriteVarBytes([]byte{0x55, 0xaa})
|
||||
bw.WriteString("neo")
|
||||
assert.NotNil(t, bw.Err)
|
||||
}
|
||||
|
|
|
@ -31,5 +31,5 @@ func (m *MerkleBlock) EncodeBinary(bw *io.BinWriter) {
|
|||
|
||||
bw.WriteVarUint(uint64(m.TxCount))
|
||||
bw.WriteArray(m.Hashes)
|
||||
bw.WriteBytes(m.Flags)
|
||||
bw.WriteVarBytes(m.Flags)
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ func (p *Version) EncodeBinary(br *io.BinWriter) {
|
|||
br.WriteLE(p.Port)
|
||||
br.WriteLE(p.Nonce)
|
||||
|
||||
br.WriteBytes(p.UserAgent)
|
||||
br.WriteVarBytes(p.UserAgent)
|
||||
br.WriteLE(p.StartHeight)
|
||||
br.WriteLE(&p.Relay)
|
||||
}
|
||||
|
|
|
@ -13,8 +13,8 @@ import (
|
|||
|
||||
// emit a VM Instruction with data to the given buffer.
|
||||
func emit(w *io.BufBinWriter, instr vm.Instruction, b []byte) {
|
||||
w.WriteLE(byte(instr))
|
||||
w.WriteVarBytes(b)
|
||||
emitOpcode(w, instr)
|
||||
w.WriteBytes(b)
|
||||
}
|
||||
|
||||
// emitOpcode emits a single VM Instruction the given buffer.
|
||||
|
|
|
@ -44,13 +44,13 @@ func serializeItemTo(item StackItem, w *io.BinWriter, seen map[StackItem]bool) {
|
|||
switch t := item.(type) {
|
||||
case *ByteArrayItem:
|
||||
w.WriteLE(byte(byteArrayT))
|
||||
w.WriteBytes(t.value)
|
||||
w.WriteVarBytes(t.value)
|
||||
case *BoolItem:
|
||||
w.WriteLE(byte(booleanT))
|
||||
w.WriteLE(t.value)
|
||||
case *BigIntegerItem:
|
||||
w.WriteLE(byte(integerT))
|
||||
w.WriteBytes(t.Bytes())
|
||||
w.WriteVarBytes(t.Bytes())
|
||||
case *InteropItem:
|
||||
w.Err = errors.New("not supported")
|
||||
case *ArrayItem, *StructItem:
|
||||
|
|
Loading…
Reference in a new issue