implement statuscode in packets
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 2m2s

This commit is contained in:
matst80
2024-11-11 23:24:03 +01:00
parent 9c15251f67
commit 0b290a32bf
17 changed files with 295 additions and 226 deletions

View File

@@ -7,33 +7,24 @@ import (
"sync"
)
// type PacketWithData struct {
// MessageType uint32
// Added time.Time
// Consumed bool
// Data []byte
// }
type PacketQueue struct {
mu sync.RWMutex
expectedPackages map[uint32]*Listener
//Packets []PacketWithData
//connection net.Conn
}
//const cap = 150
type CallResult struct {
StatusCode uint32
Data []byte
}
type Listener struct {
Count int
Chan chan []byte
Chan chan CallResult
}
func NewPacketQueue(connection net.Conn) *PacketQueue {
queue := &PacketQueue{
expectedPackages: make(map[uint32]*Listener),
//Packets: make([]PacketWithData, 0, cap+1),
//connection: connection,
}
go queue.HandleConnection(connection)
return queue
@@ -57,7 +48,10 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error {
continue
}
if packet.DataLength == 0 {
go p.HandleData(packet.MessageType, []byte{})
go p.HandleData(packet.MessageType, CallResult{
StatusCode: packet.StatusCode,
Data: []byte{},
})
continue
}
data, err := GetPacketData(connection, packet.DataLength)
@@ -65,12 +59,15 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error {
log.Printf("Error receiving packet data: %v\n", err)
//return err
} else {
go p.HandleData(packet.MessageType, data)
go p.HandleData(packet.MessageType, CallResult{
StatusCode: packet.StatusCode,
Data: data,
})
}
}
}
func (p *PacketQueue) HandleData(t uint32, data []byte) {
func (p *PacketQueue) HandleData(t uint32, data CallResult) {
p.mu.Lock()
defer p.mu.Unlock()
l, ok := p.expectedPackages[t]
@@ -83,10 +80,9 @@ func (p *PacketQueue) HandleData(t uint32, data []byte) {
}
return
}
data = nil
}
func (p *PacketQueue) Expect(messageType uint32) <-chan []byte {
func (p *PacketQueue) Expect(messageType uint32) <-chan CallResult {
p.mu.Lock()
defer p.mu.Unlock()
l, ok := p.expectedPackages[messageType]
@@ -95,7 +91,7 @@ func (p *PacketQueue) Expect(messageType uint32) <-chan []byte {
return l.Chan
}
ch := make(chan []byte)
ch := make(chan CallResult)
p.expectedPackages[messageType] = &Listener{
Count: 1,
Chan: ch,