package payload import ( "github.com/CityOfZion/neo-go/pkg/core" "github.com/CityOfZion/neo-go/pkg/io" log "github.com/sirupsen/logrus" ) // Headers payload. type Headers struct { Hdrs []*core.Header } // Users can at most request 2k header. const ( maxHeadersAllowed = 2000 ) // DecodeBinary implements Serializable interface. func (p *Headers) DecodeBinary(br *io.BinReader) { lenHeaders := br.ReadVarUint() // C# node does it silently if lenHeaders > maxHeadersAllowed { log.Warnf("received %d headers, capping to %d", lenHeaders, maxHeadersAllowed) lenHeaders = maxHeadersAllowed } p.Hdrs = make([]*core.Header, lenHeaders) for i := 0; i < int(lenHeaders); i++ { header := &core.Header{} header.DecodeBinary(br) p.Hdrs[i] = header } } // EncodeBinary implements Serializable interface. func (p *Headers) EncodeBinary(bw *io.BinWriter) { bw.WriteVarUint(uint64(len(p.Hdrs))) for _, header := range p.Hdrs { header.EncodeBinary(bw) } }