| | |
| | | |
| | | import ( |
| | | "encoding/json" |
| | | "fmt" |
| | | "basic.com/valib/logger.git" |
| | | "time" |
| | | |
| | | "github.com/hashicorp/memberlist" |
| | |
| | | if err:= json.Unmarshal(b, &n);err ==nil { |
| | | members[n.NodeID] = n |
| | | } else { |
| | | fmt.Println("NotifyMsg msg unmarshal err") |
| | | logger.Error("NotifyMsg msg unmarshal err") |
| | | } |
| | | } |
| | | |
| | |
| | | node := nodeInfo{} |
| | | if err := json.Unmarshal(b, &node); err != nil { |
| | | |
| | | fmt.Println("Umarshal failed:", err) |
| | | logger.Error("Umarshal failed:", err) |
| | | return |
| | | } |
| | | |
| | | fmt.Println(node) |
| | | logger.Info(node) |
| | | } |
| | | |
| | | func CreateSearchNode(key string) (*memberlist.Memberlist, error) { |
| | | members = make(map[string]NodeInfo,0) |
| | | conf := memberlist.DefaultLocalConfig() |
| | | conf.Events = &eventDelegate{} |
| | | conf.Delegate = &delegate{} |
| | |
| | | |
| | | keyring, err := memberlist.NewKeyring(nil, []byte(key)) |
| | | if err != nil { |
| | | fmt.Printf("Failed to restore keyring: %s", err) |
| | | logger.Error("Failed to restore keyring: %s", err) |
| | | return nil, err |
| | | } |
| | | conf.Keyring = keyring |
| | |
| | | func CreateSearchNodeWhitClose(key string, delay time.Duration) map[string]NodeInfo { |
| | | m, err := CreateSearchNode(key) |
| | | if err == nil { |
| | | // fmt.Printf("Local member %s:%d\n", m.LocalNode().Addr, m.LocalNode().Port) |
| | | //logger.Info("Local member %s:%d\n", m.LocalNode().Addr, m.LocalNode().Port) |
| | | time.Sleep(delay) |
| | | |
| | | m.Shutdown() |