98 lines
2.4 KiB
Go
98 lines
2.4 KiB
Go
package event
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
PrintObject *PrintObjectStruct // 缓存的打印机对象
|
|
PrintAddrAndIp *PrintAddrAndIpStruct // 缓存打印机地址:[ip:printNo] event 文件包,connect只能获取到addr
|
|
PrintIpAndAddr *PrintIpAndAddrStruct // 缓存打印机地址:[printNo:ip] api_controller 只能获取到printNo
|
|
)
|
|
|
|
func init() {
|
|
fmt.Println("初始化打印机对象")
|
|
PrintObject = &PrintObjectStruct{
|
|
PrintObject: make(map[string]*TcpClient),
|
|
RWMutex: new(sync.RWMutex),
|
|
}
|
|
PrintAddrAndIp = &PrintAddrAndIpStruct{
|
|
PrintObject: make(map[string]string),
|
|
RWMutex: new(sync.RWMutex),
|
|
}
|
|
PrintIpAndAddr = &PrintIpAndAddrStruct{
|
|
PrintObject: make(map[string]string),
|
|
RWMutex: new(sync.RWMutex),
|
|
}
|
|
}
|
|
|
|
type PrintObjectStruct struct {
|
|
PrintObject map[string]*TcpClient
|
|
*sync.RWMutex
|
|
}
|
|
|
|
func (p *PrintObjectStruct) GetPrintObj(printNo string) (*TcpClient, bool) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
tcpObj, ok := PrintObject.PrintObject[printNo]
|
|
return tcpObj, ok
|
|
}
|
|
func (p *PrintObjectStruct) SetPrintObj(printNo string, tcpObj *TcpClient) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
PrintObject.PrintObject[printNo] = tcpObj
|
|
}
|
|
|
|
func (p *PrintObjectStruct) DelPrintObj(printNo string) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
delete(PrintObject.PrintObject, printNo)
|
|
}
|
|
|
|
type PrintAddrAndIpStruct struct {
|
|
PrintObject map[string]string
|
|
*sync.RWMutex
|
|
}
|
|
|
|
func (p *PrintAddrAndIpStruct) GetPrintAddrAndIp(ip string) (string, bool) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
printNo, ok := PrintAddrAndIp.PrintObject[ip]
|
|
return printNo, ok
|
|
}
|
|
func (p *PrintAddrAndIpStruct) SetPrintAddrAndIp(ip string, printNo string) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
PrintAddrAndIp.PrintObject[ip] = printNo
|
|
}
|
|
|
|
func (p *PrintAddrAndIpStruct) DelPrintAddrAndIp(ip string) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
delete(PrintAddrAndIp.PrintObject, ip)
|
|
}
|
|
|
|
type PrintIpAndAddrStruct struct {
|
|
PrintObject map[string]string
|
|
*sync.RWMutex
|
|
}
|
|
|
|
func (p *PrintIpAndAddrStruct) GetPrintIpAndAddr(printNo string) (string, bool) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
tcpObj, ok := PrintIpAndAddr.PrintObject[printNo]
|
|
return tcpObj, ok
|
|
}
|
|
func (p *PrintIpAndAddrStruct) SetPrintIpAndAddr(printNo string, ip string) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
PrintIpAndAddr.PrintObject[printNo] = ip
|
|
}
|
|
|
|
func (p *PrintIpAndAddrStruct) DelPrintIpAndAddr(printNo string) {
|
|
p.RLock()
|
|
defer p.RUnlock()
|
|
delete(PrintIpAndAddr.PrintObject, printNo)
|
|
}
|