Add s.Peers() and peer cloning.
parent
ff349bbe40
commit
46fb02f191
15
peer.go
15
peer.go
|
@ -107,6 +107,21 @@ func (p *Peer) stop() {
|
|||
p.heartbeatTimer.Stop()
|
||||
}
|
||||
|
||||
//--------------------------------------
|
||||
// Copying
|
||||
//--------------------------------------
|
||||
|
||||
// Clones the state of the peer. The clone is not attached to a server and
|
||||
// the heartbeat timer will not exist.
|
||||
func (p *Peer) clone() *Peer {
|
||||
p.mutex.Lock()
|
||||
defer p.mutex.Unlock()
|
||||
return &Peer{
|
||||
name: p.name,
|
||||
prevLogIndex: p.prevLogIndex,
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------
|
||||
// Flush
|
||||
//--------------------------------------
|
||||
|
|
12
server.go
12
server.go
|
@ -134,6 +134,18 @@ func (s *Server) Leader() string {
|
|||
return s.leader
|
||||
}
|
||||
|
||||
// Retrieves a copy of the peer data.
|
||||
func (s *Server) Peers() map[string]*Peer {
|
||||
s.mutex.Lock()
|
||||
defer s.mutex.Unlock()
|
||||
|
||||
peers := make(map[string]*Peer)
|
||||
for name, peer := range s.peers {
|
||||
peers[name] = peer.clone()
|
||||
}
|
||||
return peers
|
||||
}
|
||||
|
||||
// Retrieves the object that transports requests.
|
||||
func (s *Server) Transporter() Transporter {
|
||||
return s.transporter
|
||||
|
|
Loading…
Reference in New Issue