From 09a13020cc8810839af97afc28ab62cd83a0f344 Mon Sep 17 00:00:00 2001
From: yanghui <yanghui@aiotlink.com>
Date: 星期一, 26 四月 2021 11:04:42 +0800
Subject: [PATCH] logc

---
 logc.go |   94 ++++++++++++++++++++++++-----------------------
 1 files changed, 48 insertions(+), 46 deletions(-)

diff --git a/logc.go b/logc.go
index 9210646..494c91f 100644
--- a/logc.go
+++ b/logc.go
@@ -5,6 +5,7 @@
 	"encoding/json"
 	"fmt"
 	uuid "github.com/satori/go.uuid"
+	"sync"
 	"time"
 )
 
@@ -48,60 +49,52 @@
 
 var (
 	msgChan chan []byte
-	bhSock *bhomebus.Socket
-	pubFn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int
+	//bhSock *bhomebus.Socket
+	//pubFn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int
 	ProcName string
 	ProcID string
 
-	logCallback LogReportCallback
 )
 
-func init() {
 
-}
-
-func Init(flogWriter LogReportCallback, procId string, procName string) bool {
+func Init(flogWriter LogReportCallback, procId string, procName string, wg *sync.WaitGroup, done  chan struct{}) bool {
 	msgChan = make(chan []byte, 100)
 	ProcName = procName
 	ProcID = procId
-	logCallback = flogWriter
-	if logCallback == nil {
-		return false
-	}
 
-	go saveLoop()
+	go saveLoop(flogWriter, wg, done)
 
 	return true
 }
 
-func InitBySock(sock *bhomebus.Socket, procId string, procName string) bool {
-	msgChan = make(chan []byte, 100)
-	ProcName = procName
-	ProcID = procId
-	bhSock = sock
-	if bhSock == nil {
-		return false
-	}
+//func InitBySock(sock *bhomebus.Socket, procId string, procName string) bool {
+//	msgChan = make(chan []byte, 100)
+//	ProcName = procName
+//	ProcID = procId
+//	bhSock = sock
+//	if bhSock == nil {
+//		return false
+//	}
+//
+//	go saveLoop()
+//
+//	return true
+//}
 
-	go saveLoop()
-
-	return true
-}
-
-func InitByPubFn(fn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int,
-				procId string, procName string) bool {
-	msgChan = make(chan []byte, 100)
-	ProcName = procName
-	ProcID = procId
-	pubFn = fn
-	if pubFn == nil {
-		return false
-	}
-
-	go saveLoop()
-
-	return true
-}
+//func InitByPubFn(fn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int,
+//				procId string, procName string) bool {
+//	msgChan = make(chan []byte, 100)
+//	ProcName = procName
+//	ProcID = procId
+//	pubFn = fn
+//	if pubFn == nil {
+//		return false
+//	}
+//
+//	go saveLoop()
+//
+//	return true
+//}
 
 func Save(level int, logType int, v ...interface{}) {
 	cache(level, logType, "", "", v)
@@ -144,20 +137,29 @@
 	LogSaveTopic = "logSaveTopic"
 )
 
-func saveLoop() {
+func saveLoop(logCallback LogReportCallback, wg *sync.WaitGroup, done  chan struct{}) {
+	defer wg.Done()
+
+	if nil == logCallback {
+		return
+	}
+
 	for {
 		select {
+		case <- done:
+			return
 		case data := <- msgChan:
 			var nodes []bhomebus.NetNode
 			nodes = append(nodes, bhomebus.NetNode{})
-			if bhSock != nil {
-				bhSock.PubTimeout(nodes, LogSaveTopic, data, 1000)
-			} else if pubFn != nil {
-				pubFn(nodes, LogSaveTopic, data, 1000)
-			} else {
-				fmt.Println("bhSock nil and pubFn nil")
+
+			reg := &LogRegister {
+				nodes,
+				LogSaveTopic,
+				data,
 			}
 
+			logCallback(reg)
+
 		default:
 			time.Sleep(10*time.Millisecond)
 		}

--
Gitblit v1.8.0