leave_command.go 569 B

123456789101112131415161718192021222324252627
  1. package raft
  2. // Leave command interface
  3. type LeaveCommand interface {
  4. CommandName() string
  5. Apply(server *Server) (interface{}, error)
  6. NodeName() string
  7. }
  8. // Leave command
  9. type DefaultLeaveCommand struct {
  10. Name string `json:"name"`
  11. }
  12. // The name of the Leave command in the log
  13. func (c *DefaultLeaveCommand) CommandName() string {
  14. return "raft:leave"
  15. }
  16. func (c *DefaultLeaveCommand) Apply(server *Server) (interface{}, error) {
  17. err := server.RemovePeer(c.Name)
  18. return []byte("leave"), err
  19. }
  20. func (c *DefaultLeaveCommand) NodeName() string {
  21. return c.Name
  22. }