mirror of
https://github.com/PretendoNetwork/nex-go.git
synced 2025-04-02 11:02:14 -04:00
29 lines
877 B
Go
29 lines
877 B
Go
package nex
|
|
|
|
// SequenceIDManager implements an API for managing the sequence IDs of different packet streams on a client
|
|
type SequenceIDManager struct {
|
|
reliableCounter *Counter // TODO - NEX only uses one reliable stream, but Rendezvous supports many. This needs to be a slice!
|
|
pingCounter *Counter
|
|
// TODO - Unreliable packets for Rendezvous
|
|
}
|
|
|
|
// Next gets the next sequence ID for the packet. Returns 0 for an unsupported packet
|
|
func (s *SequenceIDManager) Next(packet PacketInterface) uint32 {
|
|
if packet.HasFlag(FlagReliable) {
|
|
return s.reliableCounter.Increment()
|
|
}
|
|
|
|
if packet.Type() == PingPacket {
|
|
return s.pingCounter.Increment()
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
// NewSequenceIDManager returns a new SequenceIDManager
|
|
func NewSequenceIDManager() *SequenceIDManager {
|
|
return &SequenceIDManager{
|
|
reliableCounter: NewCounter(0),
|
|
pingCounter: NewCounter(0),
|
|
}
|
|
}
|