| | |
| | | "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" |
| | | ) |
| | | |
| | | 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()//初始化服务器配置信息 |
| | | |
| | | 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() |
| | | 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 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) |