From f26a0cab5bca17b7eab57f6330e576271e17a17f Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期三, 13 十一月 2019 19:12:08 +0800
Subject: [PATCH] update ynSwagger,sync to master

---
 cache/cache.go |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/cache/cache.go b/cache/cache.go
index 08bf029..65ca7d7 100644
--- a/cache/cache.go
+++ b/cache/cache.go
@@ -1 +1,76 @@
 package cache
+
+import (
+	"basic.com/dbapi.git"
+	"basic.com/pubsub/protomsg.git"
+	"basic.com/valib/gopherdiscovery.git"
+	"basic.com/pubsub/cache.git/shardmap"
+	"basic.com/valib/logger.git"
+	"errors"
+	"github.com/gogo/protobuf/proto"
+	"fmt"
+	"github.com/satori/go.uuid"
+	"strconv"
+)
+
+const (
+	SERVER_KEY = "SERVERINFO"
+)
+
+var cMap *shardmap.ShardMap
+
+
+func Init(initChan chan bool,dbIp string,surveyPort int,pubSubPort int){
+	cMap = shardmap.New(uint8(32))
+	urlSurvey := "tcp://" + dbIp + ":" + strconv.Itoa(surveyPort)
+	urlPubSub := "tcp://" + dbIp + ":" + strconv.Itoa(pubSubPort)
+	client, _ := gopherdiscovery.ClientWithSub(urlSurvey, urlPubSub, "webServerProc_"+uuid.NewV4().String())
+	recvMsg := client.HeartBeatMsg()
+	fmt.Println(<-recvMsg)
+
+	initCacheData(initChan)
+
+	peers, _ := client.Peers()
+	for b := range peers{
+		updateData(b)
+	}
+}
+
+func initCacheData(initChan chan bool) {
+	initServerInfo()//鍒濆鍖栨湇鍔″櫒閰嶇疆淇℃伅
+
+	initChan <- true
+}
+
+var newUpdateMsg = &protomsg.DbChangeMessage{}
+
+func updateData(b []byte){
+	if err :=proto.Unmarshal(b,newUpdateMsg);err !=nil{
+		logger.Debug("dbChangeMsg unmarshal err:",err)
+		return
+	}
+	switch newUpdateMsg.Table {
+	case protomsg.TableChanged_T_Server:
+		initServerInfo()
+	default:
+		logger.Debug("other updateData operation")
+
+	}
+}
+
+func initServerInfo() {
+	var api dbapi.SysSetApi
+	b, s := api.GetServerInfo()
+	if b{
+		cMap.Set(SERVER_KEY,s)
+	}
+}
+
+func GetServerInfo() (conf protomsg.LocalConfig,err error) {
+	config, b := cMap.Get(SERVER_KEY)
+	if b {
+		return config.(protomsg.LocalConfig),nil
+	} else {
+		return conf,errors.New("conf not found")
+	}
+}
\ No newline at end of file

--
Gitblit v1.8.0