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......") globals.SugarLogger.Debugf("begin listenTcp port 8000......")
go HandleTcpMessages() go HandleTcpMessages()
go t.HandleCallback()
go t.HandleCheckTcpHeart() go t.HandleCheckTcpHeart()
go t.doPrint2(printMsgChan) go t.doPrint2(printMsgChan)
//go t.doPrint(printMsgChanFail) //go t.doPrint(printMsgChanFail)
@@ -118,9 +117,9 @@ func (t *TcpClient) handleConn(c net.Conn) {
} else if strings.Contains(data, printText) { } else if strings.Contains(data, printText) {
globals.SugarLogger.Debugf("handleConn print callback: %v", data) globals.SugarLogger.Debugf("handleConn print callback: %v", data)
_, printNo = getCallbackMsgInfo(data) _, printNo = getCallbackMsgInfo(data)
if backChan, ok := t.CallBackMap.Load(printNo); ok { t.RLock()
backChan.(chan string) <- data t.CallBackMap[printNo] <- data
} t.RUnlock()
//printMsgCallbackChan <- printMsgCallbackMap //printMsgCallbackChan <- printMsgCallbackMap
//changePrintMsg(data) //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)) globals.SugarLogger.Debugf("handleTcpMessages success, data: %v", hex.EncodeToString(data))
//printMsg.Status = printMsgAlreadySend //printMsg.Status = printMsgAlreadySend
//dao.UpdateEntity(db, printMsg, "Status") //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 //dataStr := <-printMsgCallbackChan
} }
} }
@@ -309,17 +314,6 @@ func (t *TcpClient) doPrint2(printMsgChan chan *model.PrintMsg) (err error) {
return err 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() { func (t *TcpClient) HandleCheckTcpHeart() {
for { for {
keys := []string{} keys := []string{}

View File

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