func (ri *ReportInfo) MonitorHandler(ag agent.Agent, conn net.Conn, msg map[string]interface{}) { log.Println("MonitorHandler is called") rwLock.Lock() defer rwLock.Unlock() // msg == nil表示是定期执行的任务. if msg == nil { if ag.IsMaster() { return } monitorAgent, ok := ag.(*agent.MonitorAgent) if ok == false { seelog.Criticalf("MonitorHandler: Fail to convert to MonitorAgent,exit...") os.Exit(0) } serverInfo := monitorAgent.GetServerInfo() if serverInfo != nil { infoAsString := ri.getServerInfoAsString(serverInfo) ri.client.Sadd(serverInfo["serverType"].(string), []byte(serverInfo["id"].(string))) ri.client.Set(serverInfo["id"].(string), []byte(infoAsString)) ri.client.Expire(serverInfo["id"].(string), int64(2*ri.interval)) } } }