"log" "github.com/marcosQuesada/mesh/dispatcher" "github.com/marcosQuesada/mesh/message" n "github.com/marcosQuesada/mesh/node" "github.com/marcosQuesada/mesh/peer" ) // Coordinator takes cares on all cluster related tasks // Peer election & registration (could be delegated to PeerHandler) // Cluster member definition & cluster status // Leader election // Execute Pool mechanisms and consesus resolution const ( ClusterStatusStarting = message.Status("starting") ClusterStatusInService = message.Status("in service") ClusterStatusDegraded = message.Status("degraded") ClusterStatusExit = message.Status("exit") ) type Coordinator struct { from n.Node members map[string]n.Node exitChan chan bool } func StartCoordinator(from n.Node, members map[string]n.Node) *Coordinator { return &Coordinator{ from: from, members: members,
package peer import ( "github.com/marcosQuesada/mesh/message" n "github.com/marcosQuesada/mesh/node" "io" "log" "net" "reflect" "time" ) const ( PeerStatusStarted = message.Status("started") PeerStatusConnecting = message.Status("connecting") PeerStatusConnected = message.Status("connected") PeerStatusDisconnected = message.Status("disconnected") PeerStatusAbort = message.Status("abort") PeerStatusError = message.Status("error") PeerStatusUnknown = message.Status("unknown") ) type NodePeer interface { Id() ID Identify(n.Node) Node() n.Node From() n.Node Mode() string Run() Exit() ReceiveChan() chan message.Message