yanghui
2021-04-26 09a13020cc8810839af97afc28ab62cd83a0f344
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)
      }