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