From 19445d14e73f4bb96e218a65e126ae526f89537d Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期三, 08 五月 2019 14:14:59 +0800 Subject: [PATCH] context使用 --- decoder/main.go | 18 +++++++++--------- decoder/work/service/ipcsender.go | 19 ++++++------------- decoder/work/service/common.go | 10 ---------- 3 files changed, 15 insertions(+), 32 deletions(-) diff --git a/decoder/main.go b/decoder/main.go index 3f5f252..eb39bae 100644 --- a/decoder/main.go +++ b/decoder/main.go @@ -84,11 +84,11 @@ goffmpeg.InitFFmpeg() - if testIt { - test() - } - ctx, cancel := context.WithCancel(context.Background()) + + if testIt { + test(ctx) + } ch := make(chan CameraInfo) @@ -119,7 +119,7 @@ url := strings.TrimSpace(c.URL) id := strings.TrimSpace(c.ID) addr := strings.TrimSpace(ipcAddr) - go runSender(id, url, addr) + go runSender(ctx, id, url, addr) } } } @@ -128,18 +128,18 @@ cancel() } -func runSender(cameraID, rtspURL, ipcLabel string) { - d := srv.NewSender(cameraID, rtspURL, ipcLabel) +func runSender(ctx context.Context, cameraID, rtspURL, ipcLabel string) { + d := srv.NewSender(ctx, cameraID, rtspURL, ipcLabel) if asServer { d.RunAsServer() } d.RunAsClient() } -func test() { +func test(ctx context.Context) { fmt.Println("start test") fmt.Println(picFolder) - runSender("cameraid", streamURL, ipcURL) + runSender(ctx, "cameraid", streamURL, ipcURL) } diff --git a/decoder/work/service/common.go b/decoder/work/service/common.go index cd5bcf2..a6bff1c 100644 --- a/decoder/work/service/common.go +++ b/decoder/work/service/common.go @@ -1,9 +1,5 @@ package service -import ( - "context" -) - // ImageInfo deocded image data type ImageInfo struct { Data []byte @@ -11,10 +7,4 @@ Height int // CameraID string -} - -// ContextIPC server context -type ContextIPC struct { - ctx context.Context - cancel context.CancelFunc } diff --git a/decoder/work/service/ipcsender.go b/decoder/work/service/ipcsender.go index d65b892..a582c28 100644 --- a/decoder/work/service/ipcsender.go +++ b/decoder/work/service/ipcsender.go @@ -12,7 +12,7 @@ // Sender decoder ingo type Sender struct { - ctxIPC *ContextIPC + ctx context.Context cameraID string streamURL string @@ -22,13 +22,12 @@ } // NewSender Sender -func NewSender(cameraID, streamURL, ipcURL string) *Sender { - ctx, cancel := context.WithCancel(context.Background()) +func NewSender(ctx context.Context, cameraID, streamURL, ipcURL string) *Sender { fmt.Printf("create ipc %s for decode : %s, on camera id %s\n", ipcURL, streamURL, cameraID) return &Sender{ - ctxIPC: &ContextIPC{ctx, cancel}, + ctx: ctx, cameraID: cameraID, streamURL: streamURL, @@ -39,7 +38,7 @@ func (s *Sender) serializeImageInfo(img <-chan ImageInfo, data chan<- []byte) { for { select { - case <-s.ctxIPC.ctx.Done(): + case <-s.ctx.Done(): fmt.Println("stop Sender") return case i := <-img: @@ -92,7 +91,7 @@ // RunAsServer run a IPC server func (s *Sender) RunAsServer() { - i := ipc.NewServer(s.ctxIPC.ctx, s.ipcURL) + i := ipc.NewServer(s.ctx, s.ipcURL) fmt.Println("ipc :", s.ipcURL, " cameraid:", s.cameraID) s.run(i) @@ -100,13 +99,7 @@ // RunAsClient run as a IPC client func (s *Sender) RunAsClient() { - i := ipc.NewClient(s.ctxIPC.ctx, s.ipcURL) + i := ipc.NewClient(s.ctx, s.ipcURL) fmt.Println("ipc :", s.ipcURL, " cameraid:", s.cameraID) s.run(i) -} - -// Stop stop run decoder, must run in goroutine -func (s *Sender) Stop() { - s.ffmpeg.Free() - s.ctxIPC.cancel() } -- Gitblit v1.8.0