package initialization
import (
"time"
"github.com/gin-gonic/gin"
"monitor/server/dingding"
"monitor/server/email"
"sync"
)
type RLMap struct{
Data map[string]time.Time
sync.RWMutex
}
func (s *RLMap) Set(k string, v time.Time){
s.Lock()
s.Data[k] = v
s.Unlock()
}
func (s *RLMap) Get(k string)(v time.Time, ok bool){
s.RLock()
defer s.RUnlock()
v,ok = s.Data[k]
return v, ok
}
func (s *RLMap)del(k string) {
s.Lock()
delete(s.Data,k)
s.Unlock()
}
var Listenmap = new(RLMap)
var Problemlist = new(RLMap)
//func random() (res string){
// str := "0123456789"
// bytes := []byte(str)
// result := []byte{}
// r := rand.New(rand.NewSource(time.Now().UnixNano()))
// for i := 0; i < 10; i++ {
// result = append(result, bytes[r.Intn(len(bytes))])
// }
// res = string(result)
// return res
//}
func Heartbeat(c *gin.Context){
//fmt.Println(c.Request.Header)//map[User-Agent:[Go-http-client/1.1] Accept-Encoding:[gzip]]
//fmt.Println(c.Request.URL.Path)// /
//fmt.Println(c.Request.RemoteAddr)//127.0.0.1:50757
//fmt.Println(c.Request.RequestURI)///?ID=1
//fmt.Println(c.Request.Host)//127.0.0.1:8888
//fmt.Println(c.Request.Body)//{}
ID := c.Query("ID")
Listenmap.Set(ID, time.Now())
_,ok := Problemlist.Get(ID)
if ok {
Problemlist.del(ID)
dingding.Dingding(ID + "服务已恢复")
email.Email(ID + "服务已恢复")
}
}
func SeriousError(c *gin.Context){
ID := c.PostForm("ID")
msg := c.PostForm("msg")
dingding.Dingding(ID + msg)
email.Email(ID + msg)
}
使用读写锁来保证数据安全
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/defending/article/details/81015723
猜你喜欢
转载自blog.csdn.net/defending/article/details/81015723
今日推荐
周排行