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 |   91 ++++++++++++++++++++++++++++++++++++---------
 1 files changed, 72 insertions(+), 19 deletions(-)

diff --git a/logc.go b/logc.go
index 99ce25d..494c91f 100644
--- a/logc.go
+++ b/logc.go
@@ -2,10 +2,10 @@
 
 import (
 	"basic.com/valib/bhomebus.git"
-
 	"encoding/json"
 	"fmt"
 	uuid "github.com/satori/go.uuid"
+	"sync"
 	"time"
 )
 
@@ -18,13 +18,13 @@
 )
 
 const (
-	TypeManual = iota + 1
-	TypeLoginOut
-	TypePollInfo
-	TypeStackInfo
-	TypeWarnInfo
-	TypeRunInfo
-	TypeSysInfo
+	TypeManual = iota + 1  //浜哄伐鎿嶄綔鏃ュ織,绯荤粺鍗囩骇,鎽勫儚鏈轰慨鏀�,绠楁硶淇敼...
+	TypeLoginOut //鐧诲綍鐧诲嚭鏃ュ織
+	TypePollInfo //杞贰鎽勫儚鏈哄強鍏跺搴旂殑绠楁硶
+	TypeStackInfo //鏁版嵁鏍堝鐞嗘儏鍐�
+	TypeWarnInfo //鏁呴殰淇℃伅
+	TypeRunInfo //杩愯鎯呭喌,gpu,mem,cpu
+	TypeSysInfo //绯荤粺鍙傛暟鍙樻洿,ip,server name,寮�鍏虫満淇℃伅
 )
 
 type LogInfo struct {
@@ -39,21 +39,62 @@
 	Info      string `gorm:"column:info" json:"info"`         // 璇︽儏
 }
 
+type LogRegister struct {
+	Nodes      []bhomebus.NetNode
+	Topic      string
+	Payload     []byte
+}
+
+type LogReportCallback func(*LogRegister)
+
 var (
 	msgChan chan []byte
-	bhSock *bhomebus.Socket
+	//bhSock *bhomebus.Socket
+	//pubFn func(nodes []bhomebus.NetNode, topic string, data []byte, milliseconds int) int
 	ProcName string
 	ProcID string
+
 )
 
-func Init(sock *bhomebus.Socket, procId string, procName string) {
+
+func Init(flogWriter LogReportCallback, procId string, procName string, wg *sync.WaitGroup, done  chan struct{}) bool {
 	msgChan = make(chan []byte, 100)
 	ProcName = procName
 	ProcID = procId
-	bhSock = sock
 
-	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
+//	}
+//
+//	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)
@@ -96,19 +137,31 @@
 	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{
-				Key: 8,
-			})
-			bhSock.PubTimeout(nodes, LogSaveTopic, data, 1000)
+			nodes = append(nodes, bhomebus.NetNode{})
+
+			reg := &LogRegister {
+				nodes,
+				LogSaveTopic,
+				data,
+			}
+
+			logCallback(reg)
+
 		default:
 			time.Sleep(10*time.Millisecond)
 		}
 	}
 }
-
-

--
Gitblit v1.8.0