package payload import ( "errors" "github.com/nspcc-dev/neo-go/pkg/io" ) // GetBlockByIndex payload. type GetBlockByIndex struct { IndexStart uint32 Count int16 } // NewGetBlockByIndex returns GetBlockByIndex payload with the specified start index and count. func NewGetBlockByIndex(indexStart uint32, count int16) *GetBlockByIndex { return &GetBlockByIndex{ IndexStart: indexStart, Count: count, } } // DecodeBinary implements the Serializable interface. func (d *GetBlockByIndex) DecodeBinary(br *io.BinReader) { d.IndexStart = br.ReadU32LE() d.Count = int16(br.ReadU16LE()) if d.Count < -1 || d.Count == 0 || d.Count > MaxHeadersAllowed { br.Err = errors.New("invalid block count") } } // EncodeBinary implements the Serializable interface. func (d *GetBlockByIndex) EncodeBinary(bw *io.BinWriter) { bw.WriteU32LE(d.IndexStart) bw.WriteU16LE(uint16(d.Count)) }