From 833a46544df2ed2a7afdba08ebfe02ed7741d86a Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Tue, 8 Nov 2022 22:48:20 +0300 Subject: net/svc messages --- packets/messages/types/SvcClassInfo.go | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 packets/messages/types/SvcClassInfo.go (limited to 'packets/messages/types/SvcClassInfo.go') diff --git a/packets/messages/types/SvcClassInfo.go b/packets/messages/types/SvcClassInfo.go new file mode 100644 index 0000000..58e43b7 --- /dev/null +++ b/packets/messages/types/SvcClassInfo.go @@ -0,0 +1,42 @@ +package types + +import ( + "math" + + "github.com/pektezol/bitreader" +) + +type SvcClassInfo struct { + Length uint16 + CreateOnClient bool + ServerClasses []ServerClass +} + +type ServerClass struct { + ClassId int32 + ClassName string + DataTableName string +} + +func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo { + var serverclasses []ServerClass + svcclassinfo := SvcClassInfo{ + Length: reader.TryReadInt16(), + CreateOnClient: reader.TryReadBool(), + } + if svcclassinfo.CreateOnClient { + for i := 0; i < int(svcclassinfo.Length); i++ { + id, err := reader.ReadBits(int(math.Log2(float64(svcclassinfo.Length))) + 1) + if err != nil { + panic(err) + } + serverclasses = append(serverclasses, ServerClass{ + ClassId: int32(id), + ClassName: reader.TryReadString(), + DataTableName: reader.TryReadString(), + }) + } + } + svcclassinfo.ServerClasses = serverclasses + return svcclassinfo +} -- cgit v1.2.3