Browse Source

consul: Adding Raft rpc endpoint

pull/19/head
Armon Dadgar 11 years ago
parent
commit
1a9a51c5c2
  1. 35
      consul/raft_endpoint.go
  2. 3
      consul/server.go

35
consul/raft_endpoint.go

@ -0,0 +1,35 @@
package consul
import (
"net"
)
// Raft endpoint is used to manipulate the Raft subsystem
type Raft struct {
server *Server
}
func (r *Raft) Apply(args []byte, reply *struct{}) error {
future := r.server.raft.Apply(args, 0)
return future.Error()
}
func (r *Raft) AddPeer(args string, reply *struct{}) error {
peer, err := net.ResolveTCPAddr("tcp", args)
if err != nil {
r.server.logger.Printf("[ERR] Failed to parse peer: %v", err)
return err
}
future := r.server.raft.AddPeer(peer)
return future.Error()
}
func (r *Raft) RemovePeer(args string, reply *struct{}) error {
peer, err := net.ResolveTCPAddr("tcp", args)
if err != nil {
r.server.logger.Printf("[ERR] Failed to parse peer: %v", err)
return err
}
future := r.server.raft.AddPeer(peer)
return future.Error()
}

3
consul/server.go

@ -201,6 +201,9 @@ func (s *Server) setupRaft() error {
// setupRPC is used to setup the RPC listener
func (s *Server) setupRPC() error {
// Register the handlers
s.rpcServer.Register(&Raft{server: s})
list, err := net.Listen("tcp", s.config.RPCAddr)
if err != nil {
return err

Loading…
Cancel
Save