|
|
- package consensus
-
- import (
- "errors"
- "fmt"
- "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 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
- }
-
- func (p *Proposal) String() string {
- return fmt.Sprintf("Proposal{%v/%v %X/%v %X/%v %v}", p.Height, p.Round,
- p.BlockPartsHash, p.BlockPartsTotal,
- p.POLPartsHash, p.POLPartsTotal,
- p.Signature)
- }
|