1
This commit is contained in:
@@ -65,15 +65,10 @@ func (t *TcpClient) handleConn(c net.Conn) {
|
|||||||
//}
|
//}
|
||||||
//看是心跳还是打印回调
|
//看是心跳还是打印回调
|
||||||
data := hex.EncodeToString(buffer[:n])
|
data := hex.EncodeToString(buffer[:n])
|
||||||
globals.SugarLogger.Debugf("===========n := %d", n)
|
|
||||||
globals.SugarLogger.Debugf("===========buffer := %s", string(buffer))
|
|
||||||
globals.SugarLogger.Debugf("===========data := %s", data)
|
|
||||||
//证明是心跳
|
//证明是心跳
|
||||||
if strings.Contains(data, heartText) || strings.Contains(data, heartTextNew) {
|
if strings.Contains(data, heartText) || strings.Contains(data, heartTextNew) {
|
||||||
globals.SugarLogger.Debugf("handleConn heart: %v", data)
|
|
||||||
printNoData, _ := hex.DecodeString(data[len(heartText) : len(data)-8])
|
printNoData, _ := hex.DecodeString(data[len(heartText) : len(data)-8])
|
||||||
printNo = string(printNoData)
|
printNo = string(printNoData)
|
||||||
globals.SugarLogger.Debugf("handleConn printno :[%v]", printNo)
|
|
||||||
status := printStatus2JxStatus(data[len(data)-8 : len(data)-6])
|
status := printStatus2JxStatus(data[len(data)-8 : len(data)-6])
|
||||||
//如果没在连接池里
|
//如果没在连接池里
|
||||||
//1、加到连接池中,不同的打印机no开不同的goroutine
|
//1、加到连接池中,不同的打印机no开不同的goroutine
|
||||||
@@ -84,7 +79,6 @@ func (t *TcpClient) handleConn(c net.Conn) {
|
|||||||
//6、监听心跳时间,超过1分多钟就clear掉
|
//6、监听心跳时间,超过1分多钟就clear掉
|
||||||
//globals.SugarLogger.Debugf("handleConn timeout channel...: %v", t.TimeoutMap[printNo])
|
//globals.SugarLogger.Debugf("handleConn timeout channel...: %v", t.TimeoutMap[printNo])
|
||||||
if t.Clients[printNo] == nil {
|
if t.Clients[printNo] == nil {
|
||||||
globals.SugarLogger.Debugf("==========print_no:%s", printNo)
|
|
||||||
t.addConn(c, printNo, status)
|
t.addConn(c, printNo, status)
|
||||||
t.buildAllMap(printNo)
|
t.buildAllMap(printNo)
|
||||||
t.HandleTcpMessages(printNo)
|
t.HandleTcpMessages(printNo)
|
||||||
@@ -104,19 +98,15 @@ func (t *TcpClient) handleConn(c net.Conn) {
|
|||||||
}
|
}
|
||||||
//状态不一致再更新状态(可能缺纸了,过热了等)
|
//状态不一致再更新状态(可能缺纸了,过热了等)
|
||||||
if t.getPrintStatus(printNo) != status {
|
if t.getPrintStatus(printNo) != status {
|
||||||
globals.SugarLogger.Debugf("==========getPrintStatus:%s", printNo)
|
|
||||||
t.setPrintStatus(printNo, status)
|
t.setPrintStatus(printNo, status)
|
||||||
changePrinterStatus(printNo, status)
|
changePrinterStatus(printNo, status)
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("handleConn print model %v", utils.Format4Output(t.Clients[printNo], true))
|
|
||||||
} else if strings.Contains(data, printText) || strings.Contains(data, printTextNew) { //打印回调
|
} else if strings.Contains(data, printText) || strings.Contains(data, printTextNew) { //打印回调
|
||||||
globals.SugarLogger.Debugf("handleConn print callback: %v", data)
|
|
||||||
//打印消息发送后,打印机会回调该条打印消息的状态(打印成功or失败,失败原因..)
|
//打印消息发送后,打印机会回调该条打印消息的状态(打印成功or失败,失败原因..)
|
||||||
//将回调的信息放到回调channel中,打印成功后再打印下一条消息
|
//将回调的信息放到回调channel中,打印成功后再打印下一条消息
|
||||||
_, printNo = getCallbackMsgInfo(data)
|
_, printNo = getCallbackMsgInfo(data)
|
||||||
//更新打印机心跳时间(打印机本身不会在打印的同时,或回调的同时发心跳消息,会导致心跳判断超时,这里更新一下)
|
//更新打印机心跳时间(打印机本身不会在打印的同时,或回调的同时发心跳消息,会导致心跳判断超时,这里更新一下)
|
||||||
t.setPrintStatusTime(printNo)
|
t.setPrintStatusTime(printNo)
|
||||||
globals.SugarLogger.Debugf("handleConn print callback statusTime: %v", t.Clients[printNo].StatusTime)
|
|
||||||
t.addCallbackChan(printNo, data)
|
t.addCallbackChan(printNo, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,7 +196,6 @@ func (t *TcpClient) doPrint(key string) (err error) {
|
|||||||
if !t.isExistMsg(key) {
|
if !t.isExistMsg(key) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("doPrint printNo: %s", key)
|
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
@@ -216,10 +205,6 @@ func (t *TcpClient) doPrint(key string) (err error) {
|
|||||||
default:
|
default:
|
||||||
select {
|
select {
|
||||||
case printMsg, ok := <-t.MsgMap[key]:
|
case printMsg, ok := <-t.MsgMap[key]:
|
||||||
globals.SugarLogger.Debugf("printMsg == %s ,ok = %v", utils.Format4Output(printMsg, false), ok)
|
|
||||||
globals.SugarLogger.Debugf("printclien == %s", utils.Format4Output(t.Clients[printMsg.PrintNo], false))
|
|
||||||
globals.SugarLogger.Debugf("printMsg == %s ,ok = %v", utils.Format4Output(printMsg, false), ok)
|
|
||||||
globals.SugarLogger.Debugf("printMsg == %s ,ok = %v", utils.Format4Output(printMsg, false), ok)
|
|
||||||
if !ok {
|
if !ok {
|
||||||
globals.SugarLogger.Debugf("doPrint err !ok ...")
|
globals.SugarLogger.Debugf("doPrint err !ok ...")
|
||||||
return
|
return
|
||||||
@@ -246,7 +231,6 @@ func (t *TcpClient) doPrint(key string) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
globals.SugarLogger.Debugf("doPrint2 err printNo:%s, msgID:%s, err: %s", printMsg.PrintNo, printMsg.MsgID, err.Error())
|
|
||||||
//t.delConn(printMsg.PrintNo)
|
//t.delConn(printMsg.PrintNo)
|
||||||
printMsg.Status = printMsgErr
|
printMsg.Status = printMsgErr
|
||||||
printMsg.Comment = err.Error()
|
printMsg.Comment = err.Error()
|
||||||
@@ -266,9 +250,7 @@ func (t *TcpClient) doPrint(key string) (err error) {
|
|||||||
//t.delConn(printMsg.PrintNo)
|
//t.delConn(printMsg.PrintNo)
|
||||||
close(t.TimeoutMap[key])
|
close(t.TimeoutMap[key])
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Debugf("handleTcpMessages success, data: %v", hex.EncodeToString(data))
|
|
||||||
//等待回调
|
//等待回调
|
||||||
globals.SugarLogger.Debugf("hui %v", hex.EncodeToString(data))
|
|
||||||
dataStr := <-t.CallBackMap[printMsg.PrintNo]
|
dataStr := <-t.CallBackMap[printMsg.PrintNo]
|
||||||
if dataStr != "" {
|
if dataStr != "" {
|
||||||
a, b := getCallbackMsgInfo(dataStr)
|
a, b := getCallbackMsgInfo(dataStr)
|
||||||
@@ -327,7 +309,6 @@ func (t *TcpClient) HandleCheckTcpHeart(key string) {
|
|||||||
close(t.MsgMap[key])
|
close(t.MsgMap[key])
|
||||||
close(t.CallBackMap[key])
|
close(t.CallBackMap[key])
|
||||||
delete(t.Clients, key)
|
delete(t.Clients, key)
|
||||||
globals.SugarLogger.Debugf("HandleCheckTcpHeart timeout")
|
|
||||||
return
|
return
|
||||||
default:
|
default:
|
||||||
statusTime := t.getPrintStatusTime(key)
|
statusTime := t.getPrintStatusTime(key)
|
||||||
@@ -335,7 +316,6 @@ func (t *TcpClient) HandleCheckTcpHeart(key string) {
|
|||||||
//1分钟内没心跳判断打印机掉线了
|
//1分钟内没心跳判断打印机掉线了
|
||||||
if time.Now().Sub(statusTime) > time.Minute+time.Second*10 {
|
if time.Now().Sub(statusTime) > time.Minute+time.Second*10 {
|
||||||
changePrinterStatus(key, printerStatusOffline)
|
changePrinterStatus(key, printerStatusOffline)
|
||||||
globals.SugarLogger.Debugf("HandleCheckTcpHeart clear...")
|
|
||||||
//t.clear(key)
|
//t.clear(key)
|
||||||
close(t.TimeoutMap[key])
|
close(t.TimeoutMap[key])
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user