This commit is contained in:
suyl
2021-07-30 10:49:44 +08:00
parent cceb2db107
commit e092178d32
2 changed files with 18 additions and 21 deletions

View File

@@ -25,7 +25,6 @@ func ListenTcp() {
}
globals.SugarLogger.Debugf("begin listenTcp port 8000......")
go HandleTcpMessages()
go t.HandleCallback()
go t.HandleCheckTcpHeart()
go t.doPrint2(printMsgChan)
//go t.doPrint(printMsgChanFail)
@@ -118,9 +117,9 @@ func (t *TcpClient) handleConn(c net.Conn) {
} else if strings.Contains(data, printText) {
globals.SugarLogger.Debugf("handleConn print callback: %v", data)
_, printNo = getCallbackMsgInfo(data)
if backChan, ok := t.CallBackMap.Load(printNo); ok {
backChan.(chan string) <- data
}
t.RLock()
t.CallBackMap[printNo] <- data
t.RUnlock()
//printMsgCallbackChan <- printMsgCallbackMap
//changePrintMsg(data)
}
@@ -298,8 +297,14 @@ func (t *TcpClient) doPrint2(printMsgChan chan *model.PrintMsg) (err error) {
globals.SugarLogger.Debugf("handleTcpMessages success, data: %v", hex.EncodeToString(data))
//printMsg.Status = printMsgAlreadySend
//dao.UpdateEntity(db, printMsg, "Status")
//if t.CallBackMap[printMsg.PrintNo] != nil {
//}
if t.CallBackMap[printMsg.PrintNo] != nil {
select {
case dataStr := <-t.CallBackMap[printMsg.PrintNo]:
a, b := getCallbackMsgInfo(dataStr)
t.changePrintMsg(dataStr, a, b)
case <-timeoutChan:
}
}
//dataStr := <-printMsgCallbackChan
}
}
@@ -309,17 +314,6 @@ func (t *TcpClient) doPrint2(printMsgChan chan *model.PrintMsg) (err error) {
return err
}
func (t *TcpClient) HandleCallback() {
for {
t.CallBackMap.Range(func(key, value interface{}) bool {
dataStr := <-value.(chan string)
a, b := getCallbackMsgInfo(dataStr)
t.changePrintMsg(dataStr, a, b)
return true
})
}
}
func (t *TcpClient) HandleCheckTcpHeart() {
for {
keys := []string{}

View File

@@ -114,7 +114,7 @@ type PrintInfo struct {
//连接的客户端,吧每个客户端都放进来
type TcpClient struct {
Clients map[string]*PrintInfo
CallBackMap sync.Map
CallBackMap map[string]chan string
*sync.RWMutex
}
@@ -145,8 +145,11 @@ func (t *TcpClient) addConn(c net.Conn, key string, status int) {
}
func (t *TcpClient) buildCallBackMap(key string) {
t.Lock()
defer t.Unlock()
dataChan := make(chan string, 1024)
t.CallBackMap.Store(key, dataChan)
t.CallBackMap[key] = dataChan
timeoutChan <- 1
}
func (t *TcpClient) getPrintStatus(key string) int {
@@ -192,8 +195,8 @@ func (t *TcpClient) setPrintStatus(key string, status int) {
func NewTcpClient() *TcpClient {
t := &TcpClient{
Clients: make(map[string]*PrintInfo),
//CallBackMap: new(sync.Map),
Clients: make(map[string]*PrintInfo),
CallBackMap: make(map[string]chan string),
}
t.RWMutex = new(sync.RWMutex)
return t