aboutsummaryrefslogtreecommitdiff
path: root/pkg/packets
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-23 10:06:39 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-23 10:06:39 +0300
commit9991801e4037d8dc530876584f21c1674c9e3bba (patch)
treeefa20cd6aa6556cfdea81f4c99251e0688847ca6 /pkg/packets
parentorganize packets and classes (#9) (diff)
downloadsdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.tar.gz
sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.tar.bz2
sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.zip
init: will look at this laterverification
Diffstat (limited to 'pkg/packets')
-rw-r--r--pkg/packets/headers.go3
-rw-r--r--pkg/packets/packets.go48
2 files changed, 27 insertions, 24 deletions
diff --git a/pkg/packets/headers.go b/pkg/packets/headers.go
index d92b22d..124eb95 100644
--- a/pkg/packets/headers.go
+++ b/pkg/packets/headers.go
@@ -2,7 +2,6 @@ package packets
2 2
3import ( 3import (
4 "github.com/pektezol/bitreader" 4 "github.com/pektezol/bitreader"
5 "github.com/pektezol/demoparser/pkg/writer"
6) 5)
7 6
8type Headers struct { 7type Headers struct {
@@ -42,6 +41,6 @@ func ParseHeaders(reader *bitreader.Reader) Headers {
42 if headers.NetworkProtocol != 2001 { 41 if headers.NetworkProtocol != 2001 {
43 panic("this parser only supports demos from portal 2") 42 panic("this parser only supports demos from portal 2")
44 } 43 }
45 writer.AppendLine("Headers: %+v", headers) 44
46 return headers 45 return headers
47} 46}
diff --git a/pkg/packets/packets.go b/pkg/packets/packets.go
index b1d6a40..06eb48d 100644
--- a/pkg/packets/packets.go
+++ b/pkg/packets/packets.go
@@ -3,7 +3,7 @@ package packets
3import ( 3import (
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/writer" 6 "github.com/pektezol/demoparser/pkg/messages"
7) 7)
8 8
9type PacketMessageInfo struct { 9type PacketMessageInfo struct {
@@ -18,42 +18,46 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo {
18 slotNumber := reader.TryReadUInt8() 18 slotNumber := reader.TryReadUInt8()
19 switch packetType { 19 switch packetType {
20 case 1: // SignOn 20 case 1: // SignOn
21 writer.AppendLine("[%d] %s (%d):", tickNumber, "SIGNON", packetType) 21 for count := 0; count < 2; count++ {
22 signOn := classes.SignOn{} 22 reader.SkipBytes(76)
23 signOn.ParseSignOn(reader) 23 }
24 reader.SkipBytes(8)
25 packetReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(reader.TryReadUInt32())), true)
26 for {
27 messageType, err := packetReader.ReadBits(6)
28 if err != nil {
29 break
30 }
31 messages.ParseMessages(messageType, packetReader)
32 }
24 case 2: // Packet 33 case 2: // Packet
25 writer.AppendLine("[%d] %s (%d):", tickNumber, "PACKET", packetType) 34 for count := 0; count < 2; count++ {
26 packet := classes.Packet{} 35 reader.SkipBytes(76)
27 packet.ParsePacket(reader) 36 }
37 reader.SkipBytes(8)
38 reader.TryReadBytesToSlice(uint64(reader.TryReadUInt32()))
28 case 3: // SyncTick 39 case 3: // SyncTick
29 writer.AppendLine("[%d] %s (%d):", tickNumber, "SYNCTICK", packetType)
30 syncTick := classes.SyncTick{}
31 syncTick.ParseSyncTick()
32 case 4: // ConsoleCmd 40 case 4: // ConsoleCmd
33 writer.AppendLine("[%d] %s (%d):", tickNumber, "CONSOLECMD", packetType) 41
34 consoleCmd := classes.ConsoleCmd{} 42 consoleCmd := classes.ConsoleCmd{}
35 consoleCmd.ParseConsoleCmd(reader) 43 consoleCmd.ParseConsoleCmd(reader)
36 case 5: // UserCmd 44 case 5: // UserCmd
37 writer.AppendLine("[%d] %s (%d):", tickNumber, "USERCMD", packetType) 45
38 userCmd := classes.UserCmd{} 46 userCmd := classes.UserCmd{}
39 userCmd.ParseUserCmd(reader) 47 userCmd.ParseUserCmd(reader)
40 case 6: // DataTables 48 case 6: // DataTables
41 writer.AppendLine("[%d] %s (%d):", tickNumber, "DATATABLES", packetType) 49 reader.SkipBytes(uint64(reader.TryReadUInt32()))
42 dataTables := classes.DataTables{}
43 dataTables.ParseDataTables(reader)
44 case 7: // Stop 50 case 7: // Stop
45 writer.AppendLine("[%d] %s (%d):", tickNumber, "STOP", packetType) 51 if reader.TryReadBool() {
46 stop := classes.Stop{} 52 reader.TryReadBitsToSlice(uint64(reader.TryReadRemainingBits()))
47 stop.ParseStop(reader) 53 }
48 case 8: // CustomData TODO: not sar data 54 case 8: // CustomData TODO: not sar data
49 customData := classes.CustomData{} 55 customData := classes.CustomData{}
50 customData.ParseCustomData(reader, tickNumber, packetType) 56 customData.ParseCustomData(reader, tickNumber, packetType)
51 case 9: // StringTables TODO: parsing string table data 57 case 9: // StringTables TODO: parsing string table data
52 writer.AppendLine("[%d] %s (%d):", tickNumber, "STRINGTABLES", packetType) 58 reader.SkipBytes(uint64(reader.TryReadUInt32()))
53 stringTables := classes.StringTables{}
54 stringTables.ParseStringTables(reader)
55 default: // Invalid 59 default: // Invalid
56 writer.AppendLine("[%d] %s (%d):", tickNumber, "INVALID", packetType) 60
57 panic("invalid packet type") 61 panic("invalid packet type")
58 } 62 }
59 return PacketMessageInfo{ 63 return PacketMessageInfo{