implement statuscode in packets
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 2m2s
All checks were successful
Build and Publish / BuildAndDeploy (push) Successful in 2m2s
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user