raft

package
v2.3.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2019 License: GPL-3.0 Imports: 54 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Address added in v1.2.1

type Address struct {
	RaftId   uint16        `json:"raftId"`
	NodeId   enode.EnodeID `json:"nodeId"`
	Ip       net.IP        `json:"ip"`
	P2pPort  enr.TCP       `json:"p2pPort"`
	RaftPort enr.RaftPort  `json:"raftPort"`
}

Serializable information about a Peer. Sufficient to build `etcdRaft.Peer` or `enode.Node`. As NodeId is mainly used to derive the `ecdsa.pubkey` to build `enode.Node` it is kept as [64]byte instead of ID [32]byte used by `enode.Node`.

func (*Address) DecodeRLP added in v1.2.1

func (addr *Address) DecodeRLP(s *rlp.Stream) error

func (*Address) EncodeRLP added in v1.2.1

func (addr *Address) EncodeRLP(w io.Writer) error

type AddressTxes

type AddressTxes map[common.Address]types.Transactions

type ByRaftId added in v1.2.1

type ByRaftId []Address

func (ByRaftId) Len added in v1.2.1

func (a ByRaftId) Len() int

func (ByRaftId) Less added in v1.2.1

func (a ByRaftId) Less(i, j int) bool

func (ByRaftId) Swap added in v1.2.1

func (a ByRaftId) Swap(i, j int)

type InvalidRaftOrdering

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

type Peer added in v1.2.1

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

A peer that we're connected to via both raft's http transport, and ethereum p2p

type ProtocolManager

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

func NewProtocolManager

func NewProtocolManager(raftId uint16, raftPort uint16, blockchain *core.BlockChain, mux *event.TypeMux, bootstrapNodes []*enode.Node, joinExisting bool, datadir string, minter *minter, downloader *downloader.Downloader) (*ProtocolManager, error)

func (*ProtocolManager) FetchRaftId

func (pm *ProtocolManager) FetchRaftId(enodeId string) (uint16, error)

Returns the raft id for a given enodeId

func (*ProtocolManager) IsIDRemoved

func (pm *ProtocolManager) IsIDRemoved(id uint64) bool

func (*ProtocolManager) LeaderAddress

func (pm *ProtocolManager) LeaderAddress() (*Address, error)

The Address for the current leader, or an error if no leader is elected.

func (*ProtocolManager) NodeInfo

func (pm *ProtocolManager) NodeInfo() *RaftNodeInfo

func (*ProtocolManager) Process

func (pm *ProtocolManager) Process(ctx context.Context, m raftpb.Message) error

func (*ProtocolManager) ProposeNewPeer added in v1.2.1

func (pm *ProtocolManager) ProposeNewPeer(enodeId string) (uint16, error)

func (*ProtocolManager) ProposePeerRemoval added in v1.2.1

func (pm *ProtocolManager) ProposePeerRemoval(raftId uint16)

func (*ProtocolManager) ReportSnapshot

func (pm *ProtocolManager) ReportSnapshot(id uint64, status etcdRaft.SnapshotStatus)

func (*ProtocolManager) ReportUnreachable

func (pm *ProtocolManager) ReportUnreachable(id uint64)

func (*ProtocolManager) Start

func (pm *ProtocolManager) Start(p2pServer *p2p.Server)

func (*ProtocolManager) Stop

func (pm *ProtocolManager) Stop()

func (*ProtocolManager) WriteMsg

func (pm *ProtocolManager) WriteMsg(msg p2p.Msg) error

type PublicRaftAPI

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

func NewPublicRaftAPI

func NewPublicRaftAPI(raftService *RaftService) *PublicRaftAPI

func (*PublicRaftAPI) AddPeer added in v1.2.1

func (s *PublicRaftAPI) AddPeer(enodeId string) (uint16, error)

func (*PublicRaftAPI) Cluster

func (s *PublicRaftAPI) Cluster() []*Address

func (*PublicRaftAPI) GetRaftId

func (s *PublicRaftAPI) GetRaftId(enodeId string) (uint16, error)

func (*PublicRaftAPI) Leader

func (s *PublicRaftAPI) Leader() (string, error)

func (*PublicRaftAPI) RemovePeer added in v1.2.1

func (s *PublicRaftAPI) RemovePeer(raftId uint16)

func (*PublicRaftAPI) Role

func (s *PublicRaftAPI) Role() string

type RaftNodeInfo

type RaftNodeInfo struct {
	ClusterSize    int        `json:"clusterSize"`
	Role           string     `json:"role"`
	Address        *Address   `json:"address"`
	PeerAddresses  []*Address `json:"peerAddresses"`
	RemovedPeerIds []uint16   `json:"removedPeerIds"`
	AppliedIndex   uint64     `json:"appliedIndex"`
	SnapshotIndex  uint64     `json:"snapshotIndex"`
}

type RaftService

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

func New

func New(ctx *node.ServiceContext, chainConfig *params.ChainConfig, raftId, raftPort uint16, joinExisting bool, blockTime time.Duration, e *eth.Ethereum, startPeers []*enode.Node, datadir string) (*RaftService, error)

func (*RaftService) APIs

func (service *RaftService) APIs() []rpc.API

func (*RaftService) AccountManager

func (service *RaftService) AccountManager() *accounts.Manager

func (*RaftService) BlockChain

func (service *RaftService) BlockChain() *core.BlockChain

func (*RaftService) ChainDb

func (service *RaftService) ChainDb() ethdb.Database

func (*RaftService) DappDb

func (service *RaftService) DappDb() ethdb.Database

func (*RaftService) EventMux

func (service *RaftService) EventMux() *event.TypeMux

func (*RaftService) Protocols

func (service *RaftService) Protocols() []p2p.Protocol

func (*RaftService) Start

func (service *RaftService) Start(p2pServer *p2p.Server) error

Start implements node.Service, starting the background data propagation thread of the protocol.

func (*RaftService) Stop

func (service *RaftService) Stop() error

Stop implements node.Service, stopping the background data propagation thread of the protocol.

func (*RaftService) TxPool

func (service *RaftService) TxPool() *core.TxPool

type Snapshot added in v1.2.1

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

func (*Snapshot) DecodeRLP added in v1.2.1

func (snapshot *Snapshot) DecodeRLP(s *rlp.Stream) error

func (*Snapshot) EncodeRLP added in v1.2.1

func (snapshot *Snapshot) EncodeRLP(w io.Writer) error

Jump to

Keyboard shortcuts

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