changeset 34:8fa310d9bb1d

Track mastership better, listen on generic port
author Lewin Bormann <lbo@spheniscida.de>
date Wed, 24 Jul 2019 15:10:36 +0200
parents 7f084f715214
children b0c0254f4368
files example_http/example.go
diffstat 1 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/example_http/example.go	Fri Oct 14 22:25:56 2016 +0200
+++ b/example_http/example.go	Wed Jul 24 15:10:36 2019 +0200
@@ -80,18 +80,26 @@
 
 type EventHandler struct{}
 
+var isMaster bool = false
+
 func (eh EventHandler) OnBecomeMaster(*con.Participant) {
 	fmt.Println("BECAME MASTER")
+	isMaster = true
 }
 
 func (eh EventHandler) OnLoseMaster(*con.Participant) {
 	fmt.Println("LOST MASTERSHIP")
+	isMaster = false
+}
+
+func (eh EventHandler) OnCommit(p *con.Participant, s con.SequenceNumber, chg []con.Change) {
+	fmt.Println("COMMITTED: ", s, chg)
 }
 
 func main() {
 	initMaster := flag.Bool("initMaster", false, "Initialize as master, then add others")
 	participants := flag.String("participants", "", "Comma-separated list of other participants' addresses")
-	addr := flag.String("listen", "localhost:9000", "Address to listen on")
+	addr := flag.String("listen", ":9000", "Address to listen on")
 	cluster := flag.String("cluster", "cluster1", "ClusterID")
 	interval := flag.Uint("interval", 2, "interval for submitting random changes")
 
@@ -109,7 +117,7 @@
 
 		for _, a := range strings.Split(*participants, ",") {
 			log.Println("Adding", a)
-			participant.AddParticipant(con.Member{Address: a})
+			participant.AddParticipant(con.Member{Address: "http://" + a})
 		}
 
 		participant.Submit([]con.Change{})
@@ -119,13 +127,15 @@
 	for {
 		time.Sleep(time.Duration(*interval) * time.Second)
 
-		if err := participant.PingMaster(); err != nil {
+		if isMaster {
+			fmt.Println("<MASTER>")
+		} else if err := participant.PingMaster(); err != nil {
 			fmt.Println("Master down:", err)
 		} else {
 			fmt.Println("Master is up")
 		}
 
-		err := participant.SubmitOne(Change{t: change_ADD, key: fmt.Sprintf("k%d", i), val: fmt.Sprintf("val%d", i)})
+		err := participant.SubmitOne(Change{t: change_ADD, key: fmt.Sprintf(*addr+"k%d", i), val: fmt.Sprintf("val%d", i)})
 
 		if err != nil {
 			fmt.Println(err)