summaryrefslogtreecommitdiff
path: root/internal/packet/packet.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-27 07:47:30 +0200
committerKyren223 <Kyren223@proton.me>2024-11-27 07:47:30 +0200
commit8ed2527a8879e01f4f3f741feebaf86fee2bf18d (patch)
treea8b426c2f78745c3e4c475b5baf14c95cd27db17 /internal/packet/packet.go
parent195a2912b7c67393b806dedb058590d8bc201186 (diff)
Started working on refactoring packet types and some changes to the SQL
schema
Diffstat (limited to 'internal/packet/packet.go')
-rw-r--r--internal/packet/packet.go101
1 files changed, 53 insertions, 48 deletions
diff --git a/internal/packet/packet.go b/internal/packet/packet.go
index 58e83b4..8eb1a86 100644
--- a/internal/packet/packet.go
+++ b/internal/packet/packet.go
@@ -51,47 +51,34 @@ type PacketType uint8
const (
PacketError PacketType = iota
+
+ PacketCreateNetwork
+ PacketUpdateNetwork
+ PacketTransferNetwork
+ PacketDeleteNetwork
+ PacketSetNetworkUser
+ PacketNetworksInfo
+
+ PacketCreateFrequency
+ PacketUpdateFrequency
+ PacketDeleteFrequency
+ PacketSwapFrequencies
+
PacketSendMessage
- PacketPushedMessages
- PacketGetMessageRange
- PacketMessages
- PacketGetUserById
- PacketUsers
+ PacketEditMessage
+ PacketDeleteMessage
+ PacketRequestMessages
+ PacketMessagesInfo
+
+ PacketMax
)
-func (t PacketType) String() string {
- switch t {
- case PacketError:
- return "PacketError"
- case PacketSendMessage:
- return "PacketSendMessage"
- case PacketPushedMessages:
- return "PacketPushedMessages"
- case PacketGetMessageRange:
- return "PacketGetMessageRange"
- case PacketMessages:
- return "PacketMessages"
- case PacketGetUserById:
- return "PacketGetUserById"
- case PacketUsers:
- return "PacketUsers"
- default:
- return fmt.Sprintf("PacketInvalidType(%v)", byte(t))
- }
+func Init() {
+ assert.Assert(PacketMax <= 64, "packet types exceeded allowed limit of 64 types")
}
func (e PacketType) IsSupported() bool {
- return e <= PacketUsers
-}
-
-// True for all packets that a server may push passively to the client.
-func (e PacketType) IsPush() bool {
- switch e {
- case PacketPushedMessages:
- return true
- default:
- return false
- }
+ return e < PacketMax
}
const (
@@ -166,7 +153,7 @@ func (p Packet) Payload() []byte {
}
func (p Packet) String() string {
- return fmt.Sprintf("Packet(v%v %v %v [%v bytes...])", p.Version(), p.Encoding().String(), p.Type().String(), p.PayloadLength())
+ return fmt.Sprintf("Packet(v%v t%v %v [%v bytes...])", p.Version(), p.Encoding().String(), p.Type(), p.PayloadLength())
}
func (p Packet) Into(writer io.Writer) (int, error) {
@@ -196,21 +183,39 @@ func (p Packet) DecodedPayload() (Payload, error) {
var payload Payload
switch p.Type() {
case PacketError:
- payload = &ErrorMessage{}
- case PacketPushedMessages:
- payload = &PushedMessages{}
+ payload = &Error{}
+ case PacketCreateFrequency:
+ payload = &CreateFrequency{}
+ case PacketCreateNetwork:
+ payload = &CreateNetwork{}
+ case PacketDeleteFrequency:
+ payload = &DeleteFrequency{}
+ case PacketDeleteMessage:
+ payload = &DeleteMessage{}
+ case PacketDeleteNetwork:
+ payload = &DeleteNetwork{}
+ case PacketEditMessage:
+ payload = &EditMessage{}
+ case PacketMessagesInfo:
+ payload = &MessagesInfo{}
+ case PacketNetworksInfo:
+ payload = &NetworksInfo{}
+ case PacketRequestMessages:
+ payload = &RequestMessages{}
case PacketSendMessage:
payload = &SendMessage{}
- case PacketGetMessageRange:
- payload = &GetMessagesRange{}
- case PacketMessages:
- payload = &Messages{}
- case PacketGetUserById:
- payload = &GetUserByID{}
- case PacketUsers:
- payload = &Users{}
+ case PacketSetNetworkUser:
+ payload = &SetNetworkUser{}
+ case PacketSwapFrequencies:
+ payload = &SwapFrequencies{}
+ case PacketTransferNetwork:
+ payload = &TransferNetwork{}
+ case PacketUpdateFrequency:
+ payload = &UpdateFrequency{}
+ case PacketUpdateNetwork:
+ payload = &UpdateNetwork{}
default:
- assert.Never("packet type of a packet struct must always be valid")
+ assert.Never("unexpected packet.PacketType", "type", p.Type())
}
err := p.DecodePayloadInto(payload)
return payload, err