From e67660d0bf785eb2feaceee1ae96d3a66b23ba49 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 06 五月 2019 17:43:39 +0800
Subject: [PATCH] code

---
 decoder/main.go |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/decoder/main.go b/decoder/main.go
index a9d8816..97b3496 100644
--- a/decoder/main.go
+++ b/decoder/main.go
@@ -19,6 +19,8 @@
 	proc   string
 
 	testIt bool
+
+	asServer bool
 )
 
 func init() {
@@ -28,6 +30,8 @@
 	flag.StringVar(&ipcURL, "ipc", "ipc:///tmp/pic.ipc", "ipc label")
 
 	flag.BoolVar(&testIt, "test", false, "use test")
+
+	flag.BoolVar(&asServer, "server", false, "run ipc as server")
 }
 
 // CameraInfo camera info
@@ -43,11 +47,13 @@
 }
 
 var (
-	mapCI = make(map[string]CameraInfo)
-	port  = 7001
+	mapCameraInfo = make(map[string]CameraInfo)
+
+	tcp  = `tcp://192.168.1.124`
+	port = 7000
 )
 
-func recvFromIPC(ctx context.Context, url string, ch chan<- CameraInfo) {
+func recvCameraInfoFromIPC(ctx context.Context, url string, ch chan<- CameraInfo) {
 	ipc := ipc.NewClient(ctx, url)
 
 	for {
@@ -79,25 +85,25 @@
 	ctx, cancel := context.WithCancel(context.Background())
 
 	ch := make(chan CameraInfo)
-	go recvFromIPC(ctx, "tcp://192.168.1.124:7000", ch)
+	tcpURL := tcp + strconv.Itoa(port)
+	port++
+	go recvCameraInfoFromIPC(ctx, tcpURL, ch)
 
-	// demo.SendByIPC("rtsp://admin:a1234567@192.168.1.188:554/h264/ch1/main/av_stream", "cid0",
-	// 	"tcp://192.168.1.140:7000", false)
 	for {
 		select {
 		case <-ctx.Done():
 			return
 		case c := <-ch:
-			if _, ok := mapCI[c.ID]; !ok {
-				mapCI[c.ID] = c
-				ipc := "tcp://192.168.1.124:" + strconv.Itoa(port)
+			if _, ok := mapCameraInfo[c.ID]; !ok {
+				mapCameraInfo[c.ID] = c
+				ipcAddr := tcp + strconv.Itoa(port)
 				port++
-				fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipc, c.URL, c.ID)
+				fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipcAddr, c.URL, c.ID)
 
 				url := strings.TrimSpace(c.URL)
 				id := strings.TrimSpace(c.ID)
-				i := strings.TrimSpace(ipc)
-				go runSender(id, url, i)
+				addr := strings.TrimSpace(ipcAddr)
+				go runSender(id, url, addr)
 			}
 		}
 	}
@@ -106,6 +112,9 @@
 
 func runSender(cameraID, rtspURL, ipcLabel string) {
 	d := srv.NewSender(cameraID, rtspURL, ipcLabel)
+	if asServer {
+		d.RunAsServer()
+	}
 	d.RunAsClient()
 }
 func test() {

--
Gitblit v1.8.0