counter
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 2m1s

This commit is contained in:
matst80
2024-11-11 21:40:13 +01:00
parent 3b31053fd4
commit 7abe075ed9

View File

@@ -14,7 +14,7 @@ type CartPacketQueue struct {
const CurrentPacketVersion = 2 const CurrentPacketVersion = 2
type CartListener map[CartId]chan []byte type CartListener map[CartId]Listener
func NewCartPacketQueue(connection net.Conn) *CartPacketQueue { func NewCartPacketQueue(connection net.Conn) *CartPacketQueue {
@@ -58,13 +58,16 @@ func (p *CartPacketQueue) HandleConnection(connection net.Conn) error {
func (p *CartPacketQueue) HandleData(t uint32, id CartId, data []byte) { func (p *CartPacketQueue) HandleData(t uint32, id CartId, data []byte) {
p.mu.Lock() p.mu.Lock()
defer p.mu.Unlock() defer p.mu.Unlock()
l, ok := p.expectedPackages[t] pl, ok := p.expectedPackages[t]
if ok { if ok {
ch, ok := (*l)[id] l, ok := (*pl)[id]
if ok { if ok {
ch <- data l.Chan <- data
close(ch) l.Count--
delete(*l, id) if l.Count == 0 {
close(l.Chan)
delete(*pl, id)
}
} }
} }
data = nil data = nil
@@ -75,17 +78,24 @@ func (p *CartPacketQueue) Expect(messageType uint32, id CartId) <-chan []byte {
defer p.mu.Unlock() defer p.mu.Unlock()
l, ok := p.expectedPackages[messageType] l, ok := p.expectedPackages[messageType]
if ok { if ok {
if ch, idOk := (*l)[id]; idOk { if idl, idOk := (*l)[id]; idOk {
return ch idl.Count++
return idl.Chan
} }
ch := make(chan []byte) ch := make(chan []byte)
(*l)[id] = ch (*l)[id] = Listener{
Chan: ch,
Count: 1,
}
return ch return ch
} }
ch := make(chan []byte) ch := make(chan []byte)
p.expectedPackages[messageType] = &CartListener{ p.expectedPackages[messageType] = &CartListener{
id: ch, id: Listener{
Chan: ch,
Count: 1,
},
} }
return ch return ch