package consensus import ( "errors" "io" . "github.com/tendermint/tendermint/binary" . "github.com/tendermint/tendermint/blocks" ) var ( ErrInvalidBlockPartSignature = errors.New("Error invalid block part signature") ErrInvalidBlockPartHash = errors.New("Error invalid block part hash") ) type Proposal struct { Height uint32 Round uint16 BlockPartsTotal uint16 BlockPartsHash []byte POLPartsTotal uint16 POLPartsHash []byte Signature } func NewProposal(height uint32, round uint16, blockPartsTotal uint16, blockPartsHash []byte, polPartsTotal uint16, polPartsHash []byte) *Proposal { return &Proposal{ Height: height, Round: round, BlockPartsTotal: blockPartsTotal, BlockPartsHash: blockPartsHash, POLPartsTotal: polPartsTotal, POLPartsHash: polPartsHash, } } func ReadProposal(r io.Reader, n *int64, err *error) *Proposal { return &Proposal{ Height: ReadUInt32(r, n, err), Round: ReadUInt16(r, n, err), BlockPartsTotal: ReadUInt16(r, n, err), BlockPartsHash: ReadByteSlice(r, n, err), POLPartsTotal: ReadUInt16(r, n, err), POLPartsHash: ReadByteSlice(r, n, err), Signature: ReadSignature(r, n, err), } } func (p *Proposal) WriteTo(w io.Writer) (n int64, err error) { WriteUInt32(w, p.Height, &n, &err) WriteUInt16(w, p.Round, &n, &err) WriteUInt16(w, p.BlockPartsTotal, &n, &err) WriteByteSlice(w, p.BlockPartsHash, &n, &err) WriteUInt16(w, p.POLPartsTotal, &n, &err) WriteByteSlice(w, p.POLPartsHash, &n, &err) WriteBinary(w, p.Signature, &n, &err) return } func (p *Proposal) GetSignature() Signature { return p.Signature } func (p *Proposal) SetSignature(sig Signature) { p.Signature = sig }