| | |
| | | "encoding/json" |
| | | "fmt" |
| | | uuid "github.com/satori/go.uuid" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | |
| | | |
| | | 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) |
| | |
| | | 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) |
| | | } |