1
This commit is contained in:
@@ -121,17 +121,17 @@ func handleConn(c net.Conn, t *TcpClient) error {
|
|||||||
//5、修改数据库中打印机状态(没在连接池中说明是重新连接的)
|
//5、修改数据库中打印机状态(没在连接池中说明是重新连接的)
|
||||||
//6、监听心跳时间,超过1分多钟就clear掉
|
//6、监听心跳时间,超过1分多钟就clear掉
|
||||||
if t.getClients(printNo) == nil {
|
if t.getClients(printNo) == nil {
|
||||||
t.addConn(c, printNo, status)
|
addConn(c, t, printNo, status)
|
||||||
t.buildAllMap(printNo)
|
buildAllMap(t, printNo)
|
||||||
//t.TimeoutMap[printNo] <- true
|
//t.TimeoutMap[printNo] <- true
|
||||||
t.HandleTcpMessages(printNo)
|
HandleTcpMessages(t, printNo)
|
||||||
t.doPrint(printNo)
|
doPrint(t, printNo)
|
||||||
if status == printerStatusOnline {
|
if status == printerStatusOnline {
|
||||||
//t.printFail()
|
//t.printFail()
|
||||||
}
|
}
|
||||||
changePrinterStatus(printNo, status)
|
changePrinterStatus(printNo, status)
|
||||||
// todo 暂时关闭心跳检测
|
// todo 暂时关闭心跳检测
|
||||||
//t.HandleCheckTcpHeart(printNo)
|
HandleCheckTcpHeart(t, printNo)
|
||||||
// todo 证明打印机已经被激活,将激活打印机存入数据库,保证用户不能无限制绑定打印机
|
// todo 证明打印机已经被激活,将激活打印机存入数据库,保证用户不能无限制绑定打印机
|
||||||
if err := dao.NotExistsCreate(printNo); err != nil {
|
if err := dao.NotExistsCreate(printNo); err != nil {
|
||||||
globals.SugarLogger.Debugf("监听打印机心跳,不存在则创建 :[%v],printNo[%s]", err, printNo)
|
globals.SugarLogger.Debugf("监听打印机心跳,不存在则创建 :[%v],printNo[%s]", err, printNo)
|
||||||
@@ -201,7 +201,7 @@ func (t *TcpClient) changePrintMsg(data string, orderNo int64, printNo string) (
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TcpClient) HandleTcpMessages(printNo string) {
|
func HandleTcpMessages(t *TcpClient, printNo string) {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
offset, pageSize = 0, 10
|
offset, pageSize = 0, 10
|
||||||
@@ -267,7 +267,7 @@ func (t *TcpClient) readTimeoutMap(key string) bool {
|
|||||||
return t.TimeoutMap[key]
|
return t.TimeoutMap[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TcpClient) doPrint(key string) (err error) {
|
func doPrint(t *TcpClient, key string) (err error) {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
)
|
)
|
||||||
@@ -323,6 +323,7 @@ func (t *TcpClient) doPrint(key string) (err error) {
|
|||||||
globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err)
|
globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err)
|
||||||
//close(t.TimeoutMap[key])
|
//close(t.TimeoutMap[key])
|
||||||
delete(t.TimeoutMap, key)
|
delete(t.TimeoutMap, key)
|
||||||
|
t = nil
|
||||||
} else {
|
} else {
|
||||||
//等待回调
|
//等待回调
|
||||||
dataStr := <-t.CallBackMap[key]
|
dataStr := <-t.CallBackMap[key]
|
||||||
@@ -477,16 +478,17 @@ func (t *TcpClient) doPrint(key string) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//检测心跳
|
//检测心跳
|
||||||
func (t *TcpClient) HandleCheckTcpHeart(key string) {
|
func HandleCheckTcpHeart(t *TcpClient, key string) {
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
if t.TimeoutMap[key] == true {
|
if t.TimeoutMap[key] == true {
|
||||||
statusTime := t.getPrintStatusTime(key)
|
statusTime := t.getPrintStatusTime(key)
|
||||||
if !utils.IsTimeZero(statusTime) {
|
if !utils.IsTimeZero(statusTime) {
|
||||||
//1分钟内没心跳判断打印机掉线了
|
//1分钟内没心跳判断打印机掉线了
|
||||||
if time.Now().Sub(statusTime) > time.Minute+time.Second*10 {
|
if time.Now().Sub(statusTime) > time.Second*70 {
|
||||||
globals.SugarLogger.Debugf("超过一分十秒没有心跳的打印机[%s]", key)
|
globals.SugarLogger.Debugf("超过一分十秒没有心跳的打印机[%s]", key)
|
||||||
changePrinterStatus(key, printerStatusOffline)
|
changePrinterStatus(key, printerStatusOffline)
|
||||||
|
t = nil
|
||||||
delete(t.TimeoutMap, key)
|
delete(t.TimeoutMap, key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -495,6 +497,7 @@ func (t *TcpClient) HandleCheckTcpHeart(key string) {
|
|||||||
close(t.MsgMap[key])
|
close(t.MsgMap[key])
|
||||||
close(t.CallBackMap[key])
|
close(t.CallBackMap[key])
|
||||||
t.delConn(key)
|
t.delConn(key)
|
||||||
|
t = nil
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ func (t *TcpClient) delConn(key string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//添加到连接池中
|
//添加到连接池中
|
||||||
func (t *TcpClient) addConn(c net.Conn, key string, status int) {
|
func addConn(c net.Conn, t *TcpClient, key string, status int) {
|
||||||
t.Lock()
|
t.Lock()
|
||||||
defer t.Unlock()
|
defer t.Unlock()
|
||||||
t.Clients[key] = &PrintInfo{
|
t.Clients[key] = &PrintInfo{
|
||||||
@@ -190,7 +190,7 @@ func (t *TcpClient) getTimeOut(key string) bool {
|
|||||||
return t.TimeoutMap[key]
|
return t.TimeoutMap[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TcpClient) buildAllMap(key string) {
|
func buildAllMap(t *TcpClient, key string) {
|
||||||
t.Lock()
|
t.Lock()
|
||||||
defer t.Unlock()
|
defer t.Unlock()
|
||||||
t.MsgMap[key] = make(chan *model.PrintMsg, 1024)
|
t.MsgMap[key] = make(chan *model.PrintMsg, 1024)
|
||||||
|
|||||||
Reference in New Issue
Block a user