From cd9b765f63ffd584b640898f745947f2a8b39365 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 09 十二月 2019 15:55:46 +0800
Subject: [PATCH] ---
---
cache/cache.go | 218 ++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 170 insertions(+), 48 deletions(-)
diff --git a/cache/cache.go b/cache/cache.go
index b0578cf..9f4381d 100644
--- a/cache/cache.go
+++ b/cache/cache.go
@@ -5,24 +5,29 @@
"basic.com/pubsub/cache.git/shardmap"
"basic.com/pubsub/protomsg.git"
"basic.com/valib/gopherdiscovery.git"
+ "basic.com/valib/logger.git"
+ "encoding/json"
"errors"
"fmt"
"github.com/gogo/protobuf/proto"
"github.com/satori/go.uuid"
"strconv"
)
+
const (
- PREFIX_CAMERA = "CAMERA_"
+ PREFIX_CAMERA = "CAMERA_"
PREFIX_POLYGON = "POLYGON_"
- PREFIX_TIME = "TIME_"
- PREFIX_RULE = "RULE_"
- SERVER_KEY = "SERVERINFO"
+ PREFIX_TIME = "TIME_"
+ PREFIX_RULE = "RULE_"
+ SERVER_KEY = "SERVERINFO"
+ PREFIX_SDK = "SDK_"
+ PREFIX_DIC = "DIC_"
+ PREFIX_SO = "SO"
)
var cMap *shardmap.ShardMap
-
-func Init(initChan chan bool,dbIp string,surveyPort int,pubSubPort int){
+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)
@@ -33,32 +38,40 @@
initCacheData(initChan)
peers, _ := client.Peers()
- for b := range peers{
- fmt.Println("peerMsg:",b)
+ for b := range peers {
+ fmt.Println("peerMsg:", b)
updateData(b)
}
}
func initCacheData(initChan chan bool) {
- initPolygons()//鍒濆鍖栨憚鍍忔満澶氳竟褰㈢紦瀛�
+ initPolygons() //鍒濆鍖栨憚鍍忔満澶氳竟褰㈢紦瀛�
- initTimeRules()//鍒濆鍖栨椂闂磋鍒欑紦瀛�
+ initTimeRules() //鍒濆鍖栨椂闂磋鍒欑紦瀛�
- initCameraTaskRules()//鍒濆鍖栨憚鍍忔満浠诲姟瑙勫垯缂撳瓨
+ initCameraTaskRules() //鍒濆鍖栨憚鍍忔満浠诲姟瑙勫垯缂撳瓨鎸夋憚鍍忔満
- initCamera()//鍒濆鍖栨憚鍍忔満淇℃伅
+ initCameraTaskRulesAll() // 鍒濆鍖栨憚鍍忔満浠诲姟瑙勫垯缂撳瓨鍏ㄩ儴
- initServerInfo()//鍒濆鍖栨湇鍔″櫒閰嶇疆淇℃伅
+ initCamera() //鍒濆鍖栨憚鍍忔満淇℃伅
+
+ initServerInfo() //鍒濆鍖栨湇鍔″櫒閰嶇疆淇℃伅
+
+ initSdks() //鍒濆鍖杝dk鍒楄〃淇℃伅
+
+ initSoData()
+
+ initDictionary() // 鍒濆鍖栧瓧鍏�
initChan <- true
}
var newUpdateMsg = &protomsg.DbChangeMessage{}
-func updateData(b []byte){
- if err :=proto.Unmarshal(b,newUpdateMsg);err !=nil{
- fmt.Println("dbChangeMsg unmarshal err:",err)
+func updateData(b []byte) {
+ if err := proto.Unmarshal(b, newUpdateMsg); err != nil {
+ fmt.Println("dbChangeMsg unmarshal err:", err)
return
}
switch newUpdateMsg.Table {
@@ -66,14 +79,17 @@
initServerInfo()
case protomsg.TableChanged_T_Camera:
initCamera()
- case protomsg.TableChanged_T_CameraPolygon://鏇存柊鎽勫儚鏈哄鍙樺舰
+ case protomsg.TableChanged_T_CameraPolygon: //鏇存柊鎽勫儚鏈哄鍙樺舰
initPolygons()
- case protomsg.TableChanged_T_TimeRule://鏇存柊鏃堕棿瑙勫垯
+ case protomsg.TableChanged_T_TimeRule: //鏇存柊鏃堕棿瑙勫垯
initTimeRules()
- case protomsg.TableChanged_T_CameraTask://鏇存柊鎽勫儚鏈鸿鍒欓厤缃弬鏁�
+ case protomsg.TableChanged_T_CameraTask: //鏇存柊鎽勫儚鏈鸿鍒欓厤缃弬鏁�
initCameraTaskRules()
- case protomsg.TableChanged_T_CameraTaskArgs://鏇存柊鎽勫儚鏈鸿鍒欓厤缃弬鏁�
+ case protomsg.TableChanged_T_CameraTaskArgs: //鏇存柊鎽勫儚鏈鸿鍒欓厤缃弬鏁�
initCameraTaskRules()
+ initCameraTaskRulesAll()
+ case protomsg.TableChanged_T_Sdk: //鏇存柊sdk閰嶇疆
+ initSdks()
default:
fmt.Println("unknown operation")
@@ -83,38 +99,49 @@
func initServerInfo() {
var api dbapi.SysSetApi
b, s := api.GetServerInfo()
- if b{
- cMap.Set(SERVER_KEY,s)
+ if b {
+ cMap.Set(SERVER_KEY, s)
}
}
func initCamera() {
var api dbapi.CameraApi
cameras := api.FindAll()
- for _,cam := range cameras {
- cMap.Set(PREFIX_CAMERA + cam.Id,cam)
+ for _, cam := range cameras {
+ cMap.Set(PREFIX_CAMERA+cam.Id, cam)
}
}
-func initPolygons(){
+func initPolygons() {
+ var api dbapi.CameraApi
+ data := api.FindAllPolygons()
+ pMap := make(map[string][]protomsg.CameraPolygon, 0)
+ for _, item := range data {
+ if item.Type != "line" {
+ cameraId := item.CameraId
+ if _, ok := pMap[cameraId]; ok {
+ pMap[cameraId] = append(pMap[cameraId], item)
+ } else {
+ pMap[cameraId] = []protomsg.CameraPolygon{item}
+ }
+ }
+ }
+ for k, v := range pMap {
+ cMap.Set(PREFIX_POLYGON+k, v)
+ }
+}
+// 缂撳瓨鍖哄煙骞朵笉鏍规嵁id
+func initPolygonsById() {
var api dbapi.CameraApi
data := api.FindAllPolygons()
for _, item := range data {
if item.Type != "line" {
- cameraId :=item.CameraId
- arr, b := cMap.Get(PREFIX_POLYGON + cameraId)
- if b {
- list := arr.([]protomsg.CameraPolygon)
- list = append(list,item)
- cMap.Set(PREFIX_POLYGON + cameraId,list)
- } else {
- cMap.Set(PREFIX_POLYGON + cameraId,[]protomsg.CameraPolygon{ item })
- }
+ cMap.Set(PREFIX_POLYGON+item.Id, item)
}
}
}
-func initTimeRules(){
+func initTimeRules() {
var api dbapi.CameraApi
flag, rules := api.FindAllTimeRules()
if flag {
@@ -124,35 +151,64 @@
}
}
-func initCameraTaskRules(){
+func initDictionary() {
+ var api dbapi.DicApi
+ flag, dics := api.FindByType("")
+ if flag {
+ var dicss map[string][]Dic
+ b, _ := json.Marshal(dics)
+ if err := json.Unmarshal(b, &dicss); err == nil {
+ for key, dics1 := range dicss {
+ for _, dic := range dics1 {
+ cMap.Set(PREFIX_DIC + key + dic.Value, dic)
+ }
+ }
+ }
+ }
+}
+
+func initCameraTaskRules() {
var api dbapi.CameraTaskArgsApi
all := api.FindAll()
for _, taskArg := range all {
- cMap.Set(PREFIX_RULE+taskArg.CameraId,taskArg.TaskArgs)
+ cMap.Set(PREFIX_RULE+taskArg.CameraId, taskArg.TaskArgs)
}
}
-func GetServerInfo() (con protomsg.LocalConfig,err error) {
+func initCameraTaskRulesAll() {
+ var api dbapi.CameraTaskArgsApi
+ all := api.FindAll()
+ cMap.Set(PREFIX_RULE, all)
+}
+func initSdks() {
+ var api dbapi.SdkApi
+ sdks := api.FindAll("")
+ for _, sdk := range sdks {
+ cMap.Set(PREFIX_SDK+sdk.Id, sdk)
+ }
+}
+
+func GetServerInfo() (con protomsg.LocalConfig, err error) {
config, b := cMap.Get(SERVER_KEY)
if b {
- return config.(protomsg.LocalConfig),nil
+ return config.(protomsg.LocalConfig), nil
} else {
- return con,errors.New("conf not found")
+ return con, errors.New("conf not found")
}
}
//閫氳繃cameraId鑾峰彇鎽勫儚鏈轰俊鎭�
-func GetCameraById(cameraId string) (c protomsg.Camera,err error) {
+func GetCameraById(cameraId string) (c protomsg.Camera, err error) {
cam, b := cMap.Get(PREFIX_CAMERA + cameraId)
if b {
- return cam.(protomsg.Camera),nil
+ return cam.(protomsg.Camera), nil
} else {
- return c,errors.New("camera not found")
+ return c, errors.New("camera not found")
}
}
-func GetPolygonsByCameraId(cameraId string) []protomsg.CameraPolygon{
+func GetPolygonsByCameraId(cameraId string) []protomsg.CameraPolygon {
obj, b := cMap.Get(PREFIX_POLYGON + cameraId)
if b {
return obj.([]protomsg.CameraPolygon)
@@ -161,13 +217,22 @@
}
}
+func GetPolygonsById(id string) *protomsg.CameraPolygon {
+ obj, b := cMap.Get(PREFIX_POLYGON + id)
+ if b {
+ return obj.(*protomsg.CameraPolygon)
+ } else {
+ return nil
+ }
+}
+
//浠庣紦瀛樹腑鑾峰彇鏃堕棿瑙勫垯
-func GetTimeRuleById(id string) (exist bool,rule protomsg.CameraTimerule){
+func GetTimeRuleById(id string) (exist bool, rule protomsg.CameraTimerule) {
obj, b := cMap.Get(PREFIX_TIME + id)
if b {
- return true,obj.(protomsg.CameraTimerule)
+ return true, obj.(protomsg.CameraTimerule)
} else {
- return false,rule
+ return false, rule
}
}
@@ -179,4 +244,61 @@
} else {
return nil
}
-}
\ No newline at end of file
+}
+//鏍规嵁鎽勫儚鏈篿d浠庣紦瀛樹腑鑾峰彇鎽勫儚鏈虹殑浠诲姟瑙勫垯璁剧疆
+func GetCameraTaskRulesAll() []*protomsg.TaskGroupArgs {
+ obj, b := cMap.Get(PREFIX_RULE)
+ if b {
+ return obj.([]*protomsg.TaskGroupArgs)
+ } else {
+ return nil
+ }
+}
+
+func GetSdkById(sdkId string) (sdk protomsg.Sdk, err error) {
+ obj, b := cMap.Get(PREFIX_SDK + sdkId)
+ if b {
+ return obj.(protomsg.Sdk), nil
+ } else {
+ return sdk, errors.New("sdk not found")
+ }
+}
+
+// 鑾峰彇瀛楀吀鍊�
+func GetDic(key string) (name string) {
+ obj, b := cMap.Get(PREFIX_DIC + key)
+ if b {
+ return obj.(Dic).Name
+ } else {
+ return ""
+ }
+}
+
+func initSoData() {
+ var api dbapi.SoApi
+ soinfos := api.FindAll()
+ logger.Debug("=====================娉ㄥ唽琛ㄤ俊鎭細")
+ for _, soinfo := range soinfos {
+ logger.Debug(soinfo)
+ cMap.Set(PREFIX_SO+soinfo.SdkId, soinfo)
+ }
+}
+
+func GetSoInfoById(sdkId string) (sdk protomsg.SoInfo, err error) {
+ obj, b := cMap.Get(PREFIX_SO + sdkId)
+ if b {
+ return obj.(protomsg.SoInfo), nil
+ } else {
+ return sdk, errors.New("sdk not found")
+ }
+}
+
+type Dic struct {
+ Id string `json:"id"`
+ Value string `json:"value"`
+ Name string `json:"name"`
+ Type string `json:"type"`
+ Description string `json:"description"`
+ Sort int `json:"sort"`
+ Parent_id string `json:"parent_id"`
+}
--
Gitblit v1.8.0