| | |
| | | "errors" |
| | | "fmt" |
| | | |
| | | "github.com/long/test/httpclient" |
| | | "github.com/long/test/protomsg" |
| | | // "github.com/long/test/httpclient" |
| | | "github.com/long/test/tasktag" |
| | | "github.com/long/test/util" |
| | | |
| | | "github.com/golang/protobuf/proto" |
| | | "github.com/long/test/deliver" |
| | | |
| | | "basic.com/valib/deliver.git" |
| | | "basic.com/pubsub/protomsg.git" |
| | | "basic.com/dbapi.git" |
| | | ) |
| | | |
| | | //var doOnce sync.Once |
| | | const ( |
| | | postPull="_1.ipc" |
| | | postPush="_2.ipc" |
| | | ) |
| | | |
| | | var SocketManage = make(map[string]SocketContext) |
| | | |
| | | var sdkapi dbapi.SdkApi |
| | | |
| | | type SocketContext struct { |
| | | Sock deliver.Deliver |
| | |
| | | |
| | | func Init() { |
| | | |
| | | fmt.Println("============= init sdk info =====================") |
| | | sdklist := SdkAll() //获取所有sdk |
| | | fmt.Println("sdk list have: ", sdklist) |
| | | |
| | | SdkCreateTopic(sdklist) // 创建主题 |
| | | |
| | | for _, sdkid := range sdklist { // 创建sdk server |
| | | url := fmt.Sprintf("%s%d", "tcp://192.168.1.124:", UrlPort) |
| | | url := fmt.Sprintf("ipc:///tmp/%s%s",sdkid,postPull) |
| | | sdkidser, socketser, err := NewSdkSocketListen(deliver.PushPull, sdkid, url) |
| | | if err != nil { |
| | | continue |
| | | } |
| | | UrlPort++ |
| | | go Send(sdkidser, socketser, SdkMap[sdkid]) |
| | | |
| | | url = fmt.Sprintf("%s%d", "tcp://192.168.1.124:", UrlPortR) |
| | | url = fmt.Sprintf("ipc:///tmp/%s%s",sdkid,postPush) |
| | | _, socketdial, err := NewSdkSocketListen(deliver.PushPull, sdkid, url) |
| | | if err != nil { |
| | | continue |
| | | } |
| | | UrlPortR++ |
| | | go Recv(socketdial) |
| | | |
| | | } |
| | | |
| | | go es(SdkMap["es"]) |
| | | |
| | | } |
| | | |
| | | //单独处理 es 主题的情况 |
| | |
| | | for _ = range sdkmsgchan { |
| | | fmt.Println("this data is finish all sdk! ") |
| | | } |
| | | |
| | | } |
| | | |
| | | //动态处理 |
| | |
| | | sdkmsg.Tasklab = nil |
| | | return sdkmsg |
| | | } |
| | | |
| | | sdkmsg.Tasklab = tasktag.TaskMapLab[taskid] |
| | | sdkmsg.Data = data |
| | | return sdkmsg |
| | |
| | | } else { |
| | | sdksend = "es" |
| | | } |
| | | fmt.Println() |
| | | fmt.Println("分发的主题是: ", sdksend) |
| | | fmt.Println() |
| | | return |
| | | } |
| | | |
| | | // 调用 http 借口获取摄像机信息 |
| | | func SdkAll() (sdklist []string) { |
| | | sdklist = httpclient.GetSdk("http://127.0.0.1:8000/data/api-v/sdk/findskdid") |
| | | //sdklist = httpclient.GetSdk("http://192.168.1.124:8000/data/api-v/sdk/findskdid") |
| | | sdklist = sdkapi.GetAllSdkIds() |
| | | return |
| | | } |
| | | |
| | |
| | | return nil |
| | | } |
| | | |
| | | var UrlPort = 9000 |
| | | var UrlPortR = 9500 |
| | | |
| | | // create server |
| | | func NewSdkSocketListen(mode int, sdkid string, url string) (sid string, socket SocketContext, err error) { |
| | |
| | | |
| | | fmt.Println("send len of data: ", len(data)) |
| | | if err := socket.Sock.Send(data); err != nil { |
| | | fmt.Println(socket.Sock) |
| | | fmt.Println("failed send") |
| | | continue |
| | | } |