| | |
| | | "basic.com/pubsub/cache.git/shardmap" |
| | | "basic.com/pubsub/protomsg.git" |
| | | "basic.com/valib/gopherdiscovery.git" |
| | | "errors" |
| | | "fmt" |
| | | "github.com/gogo/protobuf/proto" |
| | | "github.com/satori/go.uuid" |
| | | "strconv" |
| | | ) |
| | | const ( |
| | | PREFIX_CAMERA = "CAMERA_" |
| | | PREFIX_POLYGON = "POLYGON_" |
| | | PREFIX_TIME = "TIME_" |
| | | PREFIX_RULE = "RULE_" |
| | | SERVER_KEY = "SERVERINFO" |
| | | PREFIX_SDK = "SDK_" |
| | | ) |
| | | |
| | | var cMap *shardmap.ShardMap |
| | | |
| | | |
| | | func Init(initChan chan bool,dbIp string,surveyPort int,pubSubPort int){ |
| | | urlSurvey := dbIp + strconv.Itoa(surveyPort) |
| | | urlPubSub := dbIp + strconv.Itoa(pubSubPort) |
| | | cMap = shardmap.New(uint8(32)) |
| | | urlSurvey := "tcp://" + dbIp + ":" + strconv.Itoa(surveyPort) |
| | | urlPubSub := "tcp://" + dbIp + ":" + strconv.Itoa(pubSubPort) |
| | | client, _ := gopherdiscovery.ClientWithSub(urlSurvey, urlPubSub, uuid.NewV4().String()) |
| | | recvMsg := client.HeartBeatMsg() |
| | | fmt.Println(<-recvMsg) |
| | |
| | | |
| | | initCameraTaskRules()//初始化摄像机任务规则缓存 |
| | | |
| | | initCamera()//初始化摄像机信息 |
| | | |
| | | initServerInfo()//初始化服务器配置信息 |
| | | |
| | | initSdks() //初始化sdk列表信息 |
| | | |
| | | initChan <- true |
| | | } |
| | | |
| | |
| | | return |
| | | } |
| | | switch newUpdateMsg.Table { |
| | | case protomsg.TableChanged_T_Server: |
| | | initServerInfo() |
| | | case protomsg.TableChanged_T_Camera: |
| | | initCamera() |
| | | case protomsg.TableChanged_T_CameraPolygon://更新摄像机多变形 |
| | | initPolygons() |
| | | case protomsg.TableChanged_T_TimeRule://更新时间规则 |
| | | initTimeRules() |
| | | case protomsg.TableChanged_T_CameraTask://更新摄像机规则配置参数 |
| | | initCameraTaskRules() |
| | | case protomsg.TableChanged_T_CameraTaskArgs://更新摄像机规则配置参数 |
| | | initCameraTaskRules() |
| | | 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) |
| | | } |
| | | } |
| | | |
| | | func initCamera() { |
| | | var api dbapi.CameraApi |
| | | cameras := api.FindAll() |
| | | for _,cam := range cameras { |
| | | cMap.Set(PREFIX_CAMERA + cam.Id,cam) |
| | | } |
| | | } |
| | | |
| | | func initPolygons(){ |
| | | var api dbapi.CameraApi |
| | | data := api.FindAllPolygons() |
| | | pMap :=make(map[string][]protomsg.CameraPolygon,0) |
| | | for _, item := range data { |
| | | 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 }) |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | 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 |
| | | } else { |
| | | return con,errors.New("conf not found") |
| | | } |
| | | } |
| | | |
| | | //通过cameraId获取摄像机信息 |
| | | func GetCameraById(cameraId string) (c protomsg.Camera,err error) { |
| | | cam, b := cMap.Get(PREFIX_CAMERA + cameraId) |
| | | if b { |
| | | return cam.(protomsg.Camera),nil |
| | | } else { |
| | | return c,errors.New("camera not found") |
| | | } |
| | | } |
| | | |
| | | func GetPolygonsByCameraId(cameraId string) []protomsg.CameraPolygon{ |
| | | obj, b := cMap.Get(PREFIX_POLYGON + cameraId) |
| | |
| | | } 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") |
| | | } |
| | | } |