consensus

package
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2015 License: MIT Imports: 3 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ProcessList

type ProcessList struct {
	// contains filtered or unexported fields
}

Process list contains a list of valid confirmation messages and is used for consensus building

func NewProcessList

func NewProcessList(sizeHint uint) *ProcessList

create a new process list

func (*ProcessList) AddToProcessList

func (pl *ProcessList) AddToProcessList(pli *ProcessListItem) error

Add the process list entry in the right slot

func (*ProcessList) GetPLItems

func (pl *ProcessList) GetPLItems() []*ProcessListItem

Get Process lit items

func (*ProcessList) IsValid

func (pl *ProcessList) IsValid() bool

Validate the process list

type ProcessListItem

type ProcessListItem struct {
	Ack     *wire.MsgAcknowledgement
	Msg     wire.FtmInternalMsg
	MsgHash *wire.ShaHash
}

Process list contains a list of valid confirmation messages and is used for consensus building

type ProcessListMgr

type ProcessListMgr struct {
	sync.RWMutex
	MyProcessList     *ProcessList
	OtherProcessLists []*ProcessList

	NextDBlockHeight uint32

	// Orphan process list map to hold our of order confirmation messages
	// key: MsgAcknowledgement.MsgHash.String()
	OrphanPLMap map[string]*ProcessListItem
	// contains filtered or unexported fields
}

Process list contains a list of valid confirmation messages and is used for consensus building

func NewProcessListMgr

func NewProcessListMgr(height uint32, otherPLSize int, plSizeHint uint, privKey common.PrivateKey) *ProcessListMgr

create a new process list

func (*ProcessListMgr) AddMyProcessListItem

func (plMgr *ProcessListMgr) AddMyProcessListItem(msg wire.FtmInternalMsg, hash *wire.ShaHash, msgType byte) (ack *wire.MsgAcknowledgement, err error)

Create a new process list item and add it to the MyProcessList

func (*ProcessListMgr) AddToOrphanProcessList

func (plMgr *ProcessListMgr) AddToOrphanProcessList(plItem *ProcessListItem) error

TODO: Added to OtherPL[0] - to be improved after milestone 1

func (*ProcessListMgr) AddToOtherProcessList

func (plMgr *ProcessListMgr) AddToOtherProcessList(plItem *ProcessListItem) error

TODO: Added to OtherPL[0] - to be improved after milestone 1

func (*ProcessListMgr) InitProcessListFromOrphanMap

func (plMgr *ProcessListMgr) InitProcessListFromOrphanMap() error

Add a factom transaction to the my process list Each of the federated servers has one MyProcessList func (plMgr *ProcessListMgr) AddToMyProcessList(plItem *ProcessListItem, msgType byte) error {

	// Come up with the right process list index for the new item
	index := uint32(len(plMgr.MyProcessList.plItems))
	if index > 0 {
		lastPlItem := plMgr.MyProcessList.plItems[index-1]
		if lastPlItem.Ack == nil {
			return errors.New("Invalid process list.")
		}
		if index != lastPlItem.Ack.Index+1 {
			return errors.New("Invalid process list index.")
		}
	}
	msgAck := wire.NewMsgAcknowledgement(plMgr.NextDBlockHeight, index, plItem.MsgHash, msgType)

	//msgAck.Affirmation = plItem.msgHash.Bytes
	plItem.Ack = msgAck

	//Add the item into my process list
	plMgr.MyProcessList.AddToProcessList(plItem)

	//Broadcast the plitem into the network??

	return nil
}

Initialize the process list from the orphan process list map Out of order Ack messages are stored in OrphanPLMap

func (*ProcessListMgr) IsMyPListExceedingLimit

func (plMgr *ProcessListMgr) IsMyPListExceedingLimit() bool

Check if the number of process list items is exceeding the size limit

func (*ProcessListMgr) SignAck

func (plMgr *ProcessListMgr) SignAck(bytes []byte) (sig common.Signature)

Sign the Ack -- TODO: to be moved into util package

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL