change mutex
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 5m35s
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 5m35s
This commit is contained in:
@@ -168,7 +168,7 @@ type PacketWithData struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type PacketQueue struct {
|
type PacketQueue struct {
|
||||||
mu sync.Mutex
|
mu sync.RWMutex
|
||||||
Packets []PacketWithData
|
Packets []PacketWithData
|
||||||
connection net.Conn
|
connection net.Conn
|
||||||
}
|
}
|
||||||
@@ -185,7 +185,6 @@ func NewPacketQueue(connection net.Conn) *PacketQueue {
|
|||||||
log.Printf("Error receiving packet: %v\n", err)
|
log.Printf("Error receiving packet: %v\n", err)
|
||||||
//return
|
//return
|
||||||
}
|
}
|
||||||
log.Printf("Received packet %d\n", messageType)
|
|
||||||
queue.mu.Lock()
|
queue.mu.Lock()
|
||||||
queue.Packets = append(queue.Packets, PacketWithData{
|
queue.Packets = append(queue.Packets, PacketWithData{
|
||||||
MessageType: messageType,
|
MessageType: messageType,
|
||||||
@@ -198,13 +197,13 @@ func NewPacketQueue(connection net.Conn) *PacketQueue {
|
|||||||
go func(queueTimer *time.Ticker) {
|
go func(queueTimer *time.Ticker) {
|
||||||
for {
|
for {
|
||||||
<-queueTimer.C
|
<-queueTimer.C
|
||||||
queue.mu.Lock()
|
queue.mu.RLock()
|
||||||
for i, packet := range queue.Packets {
|
for i, packet := range queue.Packets {
|
||||||
if time.Since(packet.Added) > time.Second*5 {
|
if time.Since(packet.Added) > time.Second*5 {
|
||||||
queue.Packets = append(queue.Packets[:i], queue.Packets[i+1:]...)
|
queue.Packets = append(queue.Packets[:i], queue.Packets[i+1:]...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
queue.mu.Unlock()
|
queue.mu.RUnlock()
|
||||||
}
|
}
|
||||||
}(time.NewTicker(time.Second))
|
}(time.NewTicker(time.Second))
|
||||||
return queue
|
return queue
|
||||||
|
|||||||
Reference in New Issue
Block a user