| | |
| | | "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_SDK = "SDK_" |
| | | PREFIX_SO = "SO" |
| | | 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) |
| | |
| | | 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() //初始化sdk列表信息 |
| | | |
| | | initSoData() |
| | | initSoData() // sopath |
| | | |
| | | initDictionary() // 初始化字典 |
| | | |
| | | initTaskSdkArgs() |
| | | 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 { |
| | |
| | | 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() |
| | | case protomsg.TableChanged_T_Sdk://更新sdk配置 |
| | | initCameraTaskRulesAll() |
| | | case protomsg.TableChanged_T_Sdk: //更新sdk配置 |
| | | initSdks() |
| | | default: |
| | | fmt.Println("unknown operation") |
| | |
| | | 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) |
| | | 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} |
| | | 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) |
| | | 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" { |
| | | cMap.Set(PREFIX_POLYGON+item.Id, item) |
| | | } |
| | | } |
| | | } |
| | | |
| | | func initTimeRules(){ |
| | | func initTimeRules() { |
| | | var api dbapi.CameraApi |
| | | flag, rules := api.FindAllTimeRules() |
| | | if flag { |
| | |
| | | } |
| | | } |
| | | |
| | | 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 initTaskSdkArgs() { |
| | | var api dbapi.TaskApi |
| | | all := api.FindAllTaskDefaultArgs("TASKRULE") |
| | | fmt.Println(all) |
| | | } |
| | | 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 initSdks(){ |
| | | 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) |
| | | for _, sdk := range sdks { |
| | | cMap.Set(PREFIX_SDK+sdk.Id, sdk) |
| | | } |
| | | } |
| | | |
| | | func GetServerInfo() (con protomsg.LocalConfig,err error) { |
| | | 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) |
| | |
| | | } |
| | | } |
| | | |
| | | 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 |
| | | } |
| | | } |
| | | |
| | |
| | | return nil |
| | | } |
| | | } |
| | | |
| | | func GetSdkById(sdkId string) (sdk protomsg.Sdk,err error){ |
| | | obj,b :=cMap.Get(PREFIX_SDK + sdkId) |
| | | //根据摄像机id从缓存中获取摄像机的任务规则设置 |
| | | func GetCameraTaskRulesAll() []*protomsg.TaskGroupArgs { |
| | | obj, b := cMap.Get(PREFIX_RULE) |
| | | if b { |
| | | return obj.(protomsg.Sdk),nil |
| | | return obj.([]*protomsg.TaskGroupArgs) |
| | | } else { |
| | | return sdk,errors.New("sdk not found") |
| | | 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 "" |
| | | } |
| | | } |
| | | |
| | |
| | | var api dbapi.SoApi |
| | | soinfos := api.FindAll() |
| | | logger.Debug("=====================注册表信息:") |
| | | for _,soinfo :=range soinfos { |
| | | for _, soinfo := range soinfos { |
| | | logger.Debug(soinfo) |
| | | cMap.Set(PREFIX_SO+soinfo.SdkId,soinfo) |
| | | cMap.Set(PREFIX_SO+soinfo.SdkId, soinfo) |
| | | } |
| | | } |
| | | |
| | | func GetSoInfoById(sdkId string) (sdk protomsg.SoInfo,err error){ |
| | | obj,b :=cMap.Get(PREFIX_SO + sdkId) |
| | | func GetSoInfoById(sdkId string) (sdk protomsg.SoInfo, err error) { |
| | | obj, b := cMap.Get(PREFIX_SO + sdkId) |
| | | if b { |
| | | return obj.(protomsg.SoInfo),nil |
| | | return obj.(protomsg.SoInfo), nil |
| | | } else { |
| | | return sdk,errors.New("sdk not found") |
| | | 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"` |
| | | } |