change locks
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 4m18s

This commit is contained in:
matst80
2024-11-09 22:14:19 +01:00
parent 59348ad341
commit 1984d39182

View File

@@ -197,13 +197,14 @@ func NewPacketQueue(connection net.Conn) *PacketQueue {
go func(queueTimer *time.Ticker) {
for {
<-queueTimer.C
queue.mu.RLock()
queue.mu.Lock()
for i, packet := range queue.Packets {
if time.Since(packet.Added) > time.Second*5 {
queue.Packets = append(queue.Packets[:i], queue.Packets[i+1:]...)
if time.Since(packet.Added) < time.Second*3 {
queue.Packets = queue.Packets[i:]
break
}
}
queue.mu.RUnlock()
queue.mu.Unlock()
}
}(time.NewTicker(time.Second))
return queue
@@ -211,22 +212,19 @@ func NewPacketQueue(connection net.Conn) *PacketQueue {
func (p *PacketQueue) Expect(messageType uint16, timeToWait time.Duration) (*PacketWithData, error) {
start := time.Now()
for {
if time.Since(start) > timeToWait {
return nil, fmt.Errorf("timeout waiting for message type %d", messageType)
}
for i, packet := range p.Packets {
p.mu.RLock()
for _, packet := range p.Packets {
if packet.MessageType == messageType && packet.Added.After(start) {
toReturn := PacketWithData{
MessageType: packet.MessageType,
Data: packet.Data,
}
p.mu.Lock()
p.Packets = append(p.Packets[:i], p.Packets[i+1:]...)
p.mu.Unlock()
return &toReturn, nil
p.mu.RUnlock()
return &packet, nil
}
}
p.mu.RUnlock()
time.Sleep(time.Millisecond * 5)
}
}