Documentation ¶
Index ¶
- Constants
- func NewCommandHandler(controller *Controller) channel.TypedReceiveHandler
- func NewHcLogrusLogger() hclog.Logger
- func NewJoinHandler(controller *Controller) channel.TypedReceiveHandler
- func NewRemoveHandler(controller *Controller) channel.TypedReceiveHandler
- type BoltDbFsm
- type Config
- type Controller
- func (self *Controller) ApplyEncodedCommand(encoded []byte) error
- func (self *Controller) ApplyWithTimeout(log []byte, timeout time.Duration) (interface{}, error)
- func (self *Controller) Dispatch(cmd command.Command) error
- func (self *Controller) GetDb() *db.Db
- func (self *Controller) GetLeaderAddr() string
- func (self *Controller) GetMesh() mesh.Mesh
- func (self *Controller) GetRaft() *raft.Raft
- func (self *Controller) HandleJoin(req *JoinRequest) error
- func (self *Controller) HandleJoinAsLeader(req *JoinRequest) error
- func (self *Controller) HandleRemove(req *RemoveRequest) error
- func (self *Controller) HandleRemoveAsLeader(req *RemoveRequest) error
- func (self *Controller) Init() error
- func (self *Controller) IsLeader() bool
- func (self *Controller) Join(req *JoinRequest) error
- func (self *Controller) ListMembers() ([]*Member, error)
- func (self *Controller) RemoveServer(id string) error
- type JoinRequest
- type Member
- type MemberModel
- type RemoveRequest
Constants ¶
const ( NewLogEntryType = 2050 ErrorResponseType = 2051 SuccessResponseType = 2052 JoinRequestType = 2053 RemoveRequestType = 2054 HeaderErrorCode = 1000 ErrorCodeBadMessage = 1 ErrorCodeNotLeader = 2 ErrorCodeApiError = 3 ErrorCodeGeneric = 4 )
Variables ¶
This section is empty.
Functions ¶
func NewCommandHandler ¶
func NewCommandHandler(controller *Controller) channel.TypedReceiveHandler
func NewHcLogrusLogger ¶
func NewHcLogrusLogger() hclog.Logger
func NewJoinHandler ¶
func NewJoinHandler(controller *Controller) channel.TypedReceiveHandler
func NewRemoveHandler ¶
func NewRemoveHandler(controller *Controller) channel.TypedReceiveHandler
Types ¶
type BoltDbFsm ¶
type BoltDbFsm struct {
// contains filtered or unexported fields
}
func (*BoltDbFsm) RaftInitialized ¶
func (self *BoltDbFsm) RaftInitialized()
type Controller ¶
type Controller struct { Id *identity.TokenId Config *Config Mesh mesh.Mesh Raft *raft.Raft Fsm *BoltDbFsm // contains filtered or unexported fields }
Controller manages RAFT related state and operations
func NewController ¶
func (*Controller) ApplyEncodedCommand ¶
func (self *Controller) ApplyEncodedCommand(encoded []byte) error
ApplyEncodedCommand applies the command to the RAFT distributed log
func (*Controller) ApplyWithTimeout ¶
func (self *Controller) ApplyWithTimeout(log []byte, timeout time.Duration) (interface{}, error)
ApplyWithTimeout applies the given command to the RAFT distributed log with the given timeout
func (*Controller) Dispatch ¶
func (self *Controller) Dispatch(cmd command.Command) error
Dispatch dispatches the given command to the current leader. If the current node is the leader, the command will be applied and the result returned
func (*Controller) GetLeaderAddr ¶
func (self *Controller) GetLeaderAddr() string
GetLeaderAddr returns the current leader address, which may be blank if there is no leader currently
func (*Controller) GetMesh ¶
func (self *Controller) GetMesh() mesh.Mesh
GetMesh returns the related Mesh instance
func (*Controller) GetRaft ¶
func (self *Controller) GetRaft() *raft.Raft
GetRaft returns the managed raft instance
func (*Controller) HandleJoin ¶
func (self *Controller) HandleJoin(req *JoinRequest) error
func (*Controller) HandleJoinAsLeader ¶
func (self *Controller) HandleJoinAsLeader(req *JoinRequest) error
func (*Controller) HandleRemove ¶
func (self *Controller) HandleRemove(req *RemoveRequest) error
func (*Controller) HandleRemoveAsLeader ¶
func (self *Controller) HandleRemoveAsLeader(req *RemoveRequest) error
func (*Controller) Init ¶
func (self *Controller) Init() error
Init sets up the Mesh and Raft instances
func (*Controller) IsLeader ¶
func (self *Controller) IsLeader() bool
IsLeader returns true if the current node is the RAFT leader
func (*Controller) Join ¶
func (self *Controller) Join(req *JoinRequest) error
Join adds the given node to the raft cluster
func (*Controller) ListMembers ¶
func (self *Controller) ListMembers() ([]*Member, error)
func (*Controller) RemoveServer ¶
func (self *Controller) RemoveServer(id string) error
RemoveServer removes the node specified by the given id from the raft cluster
type JoinRequest ¶
type MemberModel ¶
type MemberModel interface { // ListMembers returns the current set of raft members ListMembers() ([]*Member, error) // HandleJoin adds a node to the raft cluster HandleJoin(req *JoinRequest) error // HandleRemove removes a node from the raft cluster HandleRemove(req *RemoveRequest) error }
MemberModel presents information about and operations on RAFT membership
type RemoveRequest ¶
type RemoveRequest struct {
Id string
}