Documentation ¶
Index ¶
- Constants
- Variables
- type Base
- type Body
- type Chain
- type Data
- type DataMessage
- type Header
- type HeaderMessage
- type Manager
- func (cm *Manager) AddData(cd *Data) error
- func (cm *Manager) BroadcastHeader(ch Header)
- func (cm *Manager) IsExistData(Height uint32) bool
- func (cm *Manager) OnConnected(p mesh.Peer)
- func (cm *Manager) OnDisconnected(p mesh.Peer)
- func (cm *Manager) OnRecv(p mesh.Peer, r io.Reader, t message.Type) error
- func (cm *Manager) OnTimerExpired(height uint32, ID string)
- func (cm *Manager) Process(cd *Data, UserData interface{}) error
- func (cm *Manager) Provider() Provider
- func (cm *Manager) Run()
- type Provider
- type RequestExpireHandler
- type RequestMessage
- type RequestTimer
- type Status
- type StatusMessage
Constants ¶
const (
DataFetchHeightDiffMax = 100
)
consts
Variables ¶
var ( ErrAlreadyConnected = errors.New("already connected") ErrAlreadyGenesised = errors.New("already genesised") ErrForkDetected = errors.New("fork detected") ErrInvalidVersion = errors.New("invalid version") ErrInvalidPrevHash = errors.New("invalid prev hash") ErrInvalidHeight = errors.New("invalid height") ErrInvalidBodyHash = errors.New("invalid body hash") ErrInvalidGenesisHash = errors.New("invalid genesis hash") ErrChainClosed = errors.New("chain closed") )
errors
var ( HeaderMessageType = message.DefineType("manager.HeaderMessage") DataMessageType = message.DefineType("manager.DataMessage") RequestMessageType = message.DefineType("manager.RequestMessage") StatusMessageType = message.DefineType("manager.StatusMessage") )
types
Functions ¶
This section is empty.
Types ¶
type Base ¶
Base implements common functions of a header
type Chain ¶
type Chain interface { Provider() Provider Screening(cd *Data) error CheckFork(ch Header, sigs []common.Signature) error Process(cd *Data, UserData interface{}) error DebugLog(args ...interface{}) }
Chain validates and stores the chain data
type Data ¶
Data is a unit of the chain
type DataMessage ¶
type DataMessage struct {
Data *Data
}
DataMessage used to send a chain data to a peer
type Header ¶
type Header interface { io.WriterTo io.ReaderFrom Version() uint16 Height() uint32 PrevHash() hash.Hash256 Timestamp() uint64 Hash() hash.Hash256 }
Header includes validation informations
type HeaderMessage ¶
HeaderMessage used to send a chain header to a peer
func (*HeaderMessage) ReadFrom ¶
func (msg *HeaderMessage) ReadFrom(r io.Reader) (int64, error)
ReadFrom is a deserialization function
func (*HeaderMessage) Type ¶
func (msg *HeaderMessage) Type() message.Type
Type returns message type
type Manager ¶
Manager synchronizes the chain via the mesh
func (*Manager) BroadcastHeader ¶
BroadcastHeader sends the header to all of its peers
func (*Manager) IsExistData ¶
IsExistData returns the chain data is exist or not in the data queue or the chain
func (*Manager) OnConnected ¶
OnConnected is called after accepting a peer to the peer list
func (*Manager) OnDisconnected ¶
OnDisconnected is called when the peer is closed
func (*Manager) OnTimerExpired ¶
OnTimerExpired is called when request is expired
type Provider ¶
type Provider interface { CreateHeader() Header CreateBody() Body Version() uint16 Height() uint32 LastHash() hash.Hash256 Hash(height uint32) (hash.Hash256, error) Header(height uint32) (Header, error) Data(height uint32) (*Data, error) }
Provider is a interface to give a chain data
type RequestExpireHandler ¶
RequestExpireHandler handles a request expire event
type RequestMessage ¶
type RequestMessage struct {
Height uint32
}
RequestMessage used to request a chain data to a peer
func (*RequestMessage) ReadFrom ¶
func (msg *RequestMessage) ReadFrom(r io.Reader) (int64, error)
ReadFrom is a deserialization function
func (*RequestMessage) Type ¶
func (msg *RequestMessage) Type() message.Type
Type returns message type
type RequestTimer ¶
RequestTimer triggers a event when a request is expired
func NewRequestTimer ¶
func NewRequestTimer(handler RequestExpireHandler) *RequestTimer
NewRequestTimer returns a RequestTimer
func (*RequestTimer) Add ¶
func (rm *RequestTimer) Add(height uint32, t time.Duration, p interface{}, ID string)
Add adds the timer of the request
func (*RequestTimer) Exist ¶
func (rm *RequestTimer) Exist(height uint32) bool
Exist returns the target height request exists or not
func (*RequestTimer) Remove ¶
func (rm *RequestTimer) Remove(height uint32)
Remove removes the timer of the request
type StatusMessage ¶
StatusMessage used to provide the chain information to a peer
func (*StatusMessage) ReadFrom ¶
func (msg *StatusMessage) ReadFrom(r io.Reader) (int64, error)
ReadFrom is a deserialization function
func (*StatusMessage) Type ¶
func (msg *StatusMessage) Type() message.Type
Type returns message type