aa
This commit is contained in:
@@ -25,6 +25,7 @@ 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)
|
||||||
@@ -117,7 +118,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)
|
||||||
t.CallBackMap[printNo] <- data
|
if backChan, ok := t.CallBackMap.Load(printNo); ok {
|
||||||
|
backChan.(chan string) <- data
|
||||||
|
}
|
||||||
//printMsgCallbackChan <- printMsgCallbackMap
|
//printMsgCallbackChan <- printMsgCallbackMap
|
||||||
//changePrintMsg(data)
|
//changePrintMsg(data)
|
||||||
}
|
}
|
||||||
@@ -217,7 +220,7 @@ func (t *TcpClient) changePrintMsg(data string, orderNo int64, printNo string) (
|
|||||||
func HandleTcpMessages() {
|
func HandleTcpMessages() {
|
||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
offset, pageSize = 0, 10
|
offset, pageSize = 0, 1
|
||||||
)
|
)
|
||||||
for {
|
for {
|
||||||
//一直读?
|
//一直读?
|
||||||
@@ -275,7 +278,7 @@ func (t *TcpClient) doPrint2(printMsgChan chan *model.PrintMsg) (err error) {
|
|||||||
err = fmt.Errorf("未查询到此printMsg")
|
err = fmt.Errorf("未查询到此printMsg")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("111111111111111111111111111111111111111111111", utils.Format4Output(t.Clients[printMsg.PrintNo], true))
|
fmt.Println("111111111111111111111111111111111111111111111", utils.Format4Output(t.Clients[printMsg.PrintNo], true), err.Error())
|
||||||
//t.delConn(printMsg.PrintNo)
|
//t.delConn(printMsg.PrintNo)
|
||||||
printMsg.Status = printMsgErr
|
printMsg.Status = printMsgErr
|
||||||
printMsg.Comment = err.Error()
|
printMsg.Comment = err.Error()
|
||||||
@@ -293,18 +296,9 @@ func (t *TcpClient) doPrint2(printMsgChan chan *model.PrintMsg) (err error) {
|
|||||||
//c.Close()
|
//c.Close()
|
||||||
} else {
|
} else {
|
||||||
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", "Comment")
|
//dao.UpdateEntity(db, printMsg, "Status")
|
||||||
//if t.CallBackMap[printMsg.PrintNo] != nil {
|
//if t.CallBackMap[printMsg.PrintNo] != nil {
|
||||||
t.RLock()
|
|
||||||
select {
|
|
||||||
case dataStr := <-t.CallBackMap[printMsg.PrintNo]:
|
|
||||||
a, b := getCallbackMsgInfo(dataStr)
|
|
||||||
t.changePrintMsg(dataStr, a, b)
|
|
||||||
case <-timeoutChan:
|
|
||||||
}
|
|
||||||
t.RUnlock()
|
|
||||||
|
|
||||||
//}
|
//}
|
||||||
//dataStr := <-printMsgCallbackChan
|
//dataStr := <-printMsgCallbackChan
|
||||||
}
|
}
|
||||||
@@ -315,6 +309,17 @@ 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{}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ type PrintInfo struct {
|
|||||||
//连接的客户端,吧每个客户端都放进来
|
//连接的客户端,吧每个客户端都放进来
|
||||||
type TcpClient struct {
|
type TcpClient struct {
|
||||||
Clients map[string]*PrintInfo
|
Clients map[string]*PrintInfo
|
||||||
CallBackMap map[string]chan string
|
CallBackMap sync.Map
|
||||||
*sync.RWMutex
|
*sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,11 +145,8 @@ 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[key] = dataChan
|
t.CallBackMap.Store(key, dataChan)
|
||||||
timeoutChan <- 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TcpClient) getPrintStatus(key string) int {
|
func (t *TcpClient) getPrintStatus(key string) int {
|
||||||
@@ -195,8 +192,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: make(map[string]chan string, 1024),
|
//CallBackMap: new(sync.Map),
|
||||||
}
|
}
|
||||||
t.RWMutex = new(sync.RWMutex)
|
t.RWMutex = new(sync.RWMutex)
|
||||||
return t
|
return t
|
||||||
|
|||||||
Reference in New Issue
Block a user