aboutsummaryrefslogtreecommitdiff
path: root/pkg/packets/packets.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-21 01:53:59 +0300
committerGitHub <noreply@github.com>2023-09-21 01:53:59 +0300
commit171e350e348afadb55967b9c13d5eadc7f7d2cf4 (patch)
tree14ec93df8ccc1aca0cf453f826d46a402b09dc8f /pkg/packets/packets.go
parentdefine todos on packets (diff)
downloadsdp.go-171e350e348afadb55967b9c13d5eadc7f7d2cf4.tar.gz
sdp.go-171e350e348afadb55967b9c13d5eadc7f7d2cf4.tar.bz2
sdp.go-171e350e348afadb55967b9c13d5eadc7f7d2cf4.zip
add strings builder, customize ALL outputs (#6)
Diffstat (limited to 'pkg/packets/packets.go')
-rw-r--r--pkg/packets/packets.go43
1 files changed, 29 insertions, 14 deletions
diff --git a/pkg/packets/packets.go b/pkg/packets/packets.go
index 3a01370..33350d5 100644
--- a/pkg/packets/packets.go
+++ b/pkg/packets/packets.go
@@ -4,6 +4,7 @@ import (
4 "github.com/pektezol/bitreader" 4 "github.com/pektezol/bitreader"
5 "github.com/pektezol/demoparser/pkg/classes" 5 "github.com/pektezol/demoparser/pkg/classes"
6 "github.com/pektezol/demoparser/pkg/messages" 6 "github.com/pektezol/demoparser/pkg/messages"
7 "github.com/pektezol/demoparser/pkg/writer"
7) 8)
8 9
9type PacketMessageInfo struct { 10type PacketMessageInfo struct {
@@ -23,6 +24,7 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo {
23 switch packetType { 24 switch packetType {
24 case 1: // SignOn 25 case 1: // SignOn
25 signOn := SignOn{} 26 signOn := SignOn{}
27 writer.AppendLine("[%d] %s (%d):", tickNumber, "SIGNON", packetType)
26 for count := 0; count < MSSC; count++ { 28 for count := 0; count < MSSC; count++ {
27 signOn.PacketInfo = append(signOn.PacketInfo, classes.ParseCmdInfo(reader)) 29 signOn.PacketInfo = append(signOn.PacketInfo, classes.ParseCmdInfo(reader))
28 } 30 }
@@ -41,6 +43,7 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo {
41 packetData = signOn 43 packetData = signOn
42 case 2: // Packet 44 case 2: // Packet
43 packet := Packet{} 45 packet := Packet{}
46 writer.AppendLine("[%d] %s (%d):", tickNumber, "PACKET", packetType)
44 for count := 0; count < MSSC; count++ { 47 for count := 0; count < MSSC; count++ {
45 packet.PacketInfo = append(packet.PacketInfo, classes.ParseCmdInfo(reader)) 48 packet.PacketInfo = append(packet.PacketInfo, classes.ParseCmdInfo(reader))
46 } 49 }
@@ -59,16 +62,18 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo {
59 packetData = packet 62 packetData = packet
60 case 3: // SyncTick 63 case 3: // SyncTick
61 syncTick := SyncTick{} 64 syncTick := SyncTick{}
65 writer.AppendLine("[%d] %s (%d):", tickNumber, "SYNCTICK", packetType)
62 packetData = syncTick 66 packetData = syncTick
63 case 4: // ConsoleCmd 67 case 4: // ConsoleCmd
64 size := reader.TryReadSInt32() 68 consoleCmd := ConsoleCmd{}
65 consoleCmd := ConsoleCmd{ 69 writer.AppendLine("[%d] %s (%d):", tickNumber, "CONSOLECMD", packetType)
66 Size: int32(size), 70 consoleCmd.Size = reader.TryReadSInt32()
67 Data: reader.TryReadStringLength(uint64(size)), 71 consoleCmd.Data = reader.TryReadStringLength(uint64(consoleCmd.Size))
68 } 72 writer.AppendLine("\t%s", consoleCmd.Data)
69 packetData = consoleCmd 73 packetData = consoleCmd
70 case 5: // UserCmd TODO: usercmdinfo refactor 74 case 5: // UserCmd TODO: usercmdinfo refactor
71 userCmd := UserCmd{} 75 userCmd := UserCmd{}
76 writer.AppendLine("[%d] %s (%d):", tickNumber, "USERCMD", packetType)
72 userCmd.Cmd = int32(reader.TryReadSInt32()) 77 userCmd.Cmd = int32(reader.TryReadSInt32())
73 userCmd.Size = int32(reader.TryReadSInt32()) 78 userCmd.Size = int32(reader.TryReadSInt32())
74 data := reader.TryReadBytesToSlice(uint64(userCmd.Size)) 79 data := reader.TryReadBytesToSlice(uint64(userCmd.Size))
@@ -76,6 +81,7 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo {
76 packetData = userCmd 81 packetData = userCmd
77 case 6: // DataTables TODO: prop stuff 82 case 6: // DataTables TODO: prop stuff
78 dataTables := DataTables{} 83 dataTables := DataTables{}
84 writer.AppendLine("[%d] %s (%d):", tickNumber, "DATATABLES", packetType)
79 dataTables.Size = int32(reader.TryReadSInt32()) 85 dataTables.Size = int32(reader.TryReadSInt32())
80 data := reader.TryReadBytesToSlice(uint64(dataTables.Size)) 86 data := reader.TryReadBytesToSlice(uint64(dataTables.Size))
81 dataTableReader := bitreader.NewReaderFromBytes(data, true) 87 dataTableReader := bitreader.NewReaderFromBytes(data, true)
@@ -84,43 +90,52 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo {
84 count++ 90 count++
85 dataTables.SendTable = append(dataTables.SendTable, classes.ParseSendTable(dataTableReader)) 91 dataTables.SendTable = append(dataTables.SendTable, classes.ParseSendTable(dataTableReader))
86 } 92 }
93 writer.AppendLine("\t%d Send Tables:", count)
94 writer.AppendOutputFromTemp()
87 numOfClasses := dataTableReader.TryReadBits(16) 95 numOfClasses := dataTableReader.TryReadBits(16)
88 for count = 0; count < int(numOfClasses); count++ { 96 for count = 0; count < int(numOfClasses); count++ {
89 dataTables.ServerClassInfo = append(dataTables.ServerClassInfo, classes.ParseServerClassInfo(dataTableReader, count, int(numOfClasses))) 97 dataTables.ServerClassInfo = append(dataTables.ServerClassInfo, classes.ParseServerClassInfo(dataTableReader, count, int(numOfClasses)))
90 } 98 }
99 writer.AppendLine("\t%d Classes:", count)
100 writer.AppendOutputFromTemp()
91 packetData = dataTables 101 packetData = dataTables
92 case 7: // Stop 102 case 7: // Stop
93 stop := Stop{} 103 stop := Stop{}
104 writer.AppendLine("[%d] %s (%d):", tickNumber, "STOP", packetType)
94 if reader.TryReadBool() { 105 if reader.TryReadBool() {
95 stop.RemainingData = reader.TryReadBitsToSlice(uint64(reader.TryReadRemainingBits())) 106 stop.RemainingData = reader.TryReadBitsToSlice(uint64(reader.TryReadRemainingBits()))
107 writer.AppendLine("\tRemaining Data: %v", stop.RemainingData)
96 } 108 }
97 packetData = stop 109 packetData = stop
98 case 8: // CustomData 110 case 8: // CustomData TODO: not sar data
99 customData := CustomData{ 111 customData := CustomData{}
100 Unknown: int32(reader.TryReadBits(32)), 112 customData.Type = reader.TryReadSInt32()
101 Size: int32(reader.TryReadBits(32)), 113 customData.Size = reader.TryReadSInt32()
102 } 114 if customData.Type != 0 || customData.Size == 8 {
103 if customData.Unknown != 0 || customData.Size == 8 {
104 // Not SAR data 115 // Not SAR data
116 writer.AppendLine("[%d] %s (%d):", tickNumber, "CUSTOMDATA", packetType)
105 customData.Data = string(reader.TryReadBytesToSlice(uint64(customData.Size))) 117 customData.Data = string(reader.TryReadBytesToSlice(uint64(customData.Size)))
118 writer.AppendLine("\t%s", customData.Data)
106 packetData = customData 119 packetData = customData
107 break 120 break
108 } 121 }
109 // SAR data 122 // SAR data
110 sarData := classes.SarData{} 123 sarData := classes.SarData{}
124 writer.AppendLine("[%d] %s (%d):", tickNumber, "SARDATA", packetType)
111 data := reader.TryReadBytesToSlice(uint64(customData.Size)) 125 data := reader.TryReadBytesToSlice(uint64(customData.Size))
112 sarReader := bitreader.NewReaderFromBytes(data, true) 126 sarReader := bitreader.NewReaderFromBytes(data, true)
113 sarData.ParseSarData(sarReader) 127 sarData.ParseSarData(sarReader)
114 packetData = sarData 128 packetData = sarData
115 case 9: // StringTables TODO: parsing string table data 129 case 9: // StringTables TODO: parsing string table data
116 stringTables := StringTables{ 130 stringTables := StringTables{}
117 Size: int32(reader.TryReadSInt32()), 131 writer.AppendLine("[%d] %s (%d):", tickNumber, "STRINGTABLES", packetType)
118 } 132 stringTables.Size = reader.TryReadSInt32()
119 data := reader.TryReadBytesToSlice(uint64(stringTables.Size)) 133 data := reader.TryReadBytesToSlice(uint64(stringTables.Size))
120 stringTableReader := bitreader.NewReaderFromBytes(data, true) 134 stringTableReader := bitreader.NewReaderFromBytes(data, true)
121 stringTables.Data = classes.ParseStringTables(stringTableReader) 135 stringTables.Data = classes.ParseStringTables(stringTableReader)
122 packetData = stringTables 136 packetData = stringTables
123 default: // invalid 137 default: // invalid
138 writer.AppendLine("[%d] %s (%d):", tickNumber, "INVALID", packetType)
124 panic("invalid packet type") 139 panic("invalid packet type")
125 } 140 }
126 return PacketMessageInfo{ 141 return PacketMessageInfo{