blob: 995c61da5e002015376fe645d94eb55f97ab1fbb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package messages
import (
"math"
"github.com/pektezol/bitreader"
"github.com/pektezol/sdp.go/pkg/types"
)
type SvcClassInfo struct {
ClassCount uint16 `json:"class_count"`
CreateOnClient bool `json:"create_on_client"`
ServerClasses []serverClass `json:"server_classes"`
}
type serverClass struct {
ClassId int16 `json:"class_id"`
ClassName string `json:"class_name"`
DataTableName string `json:"data_table_name"`
}
func ParseSvcClassInfo(reader *bitreader.Reader, demo *types.Demo) SvcClassInfo {
svcClassInfo := SvcClassInfo{
ClassCount: reader.TryReadUInt16(),
CreateOnClient: reader.TryReadBool(),
}
classes := []serverClass{}
demo.Writer.TempAppendLine("\t\tCreate On Client: %t", svcClassInfo.CreateOnClient)
if !svcClassInfo.CreateOnClient {
demo.Writer.TempAppendLine("\t\t%d Server Classes:", svcClassInfo.ClassCount)
for count := 0; count < int(svcClassInfo.ClassCount); count++ {
classes = append(classes, serverClass{
ClassId: int16(reader.TryReadBits(uint64(math.Log2(float64(svcClassInfo.ClassCount)) + 1))),
ClassName: reader.TryReadString(),
DataTableName: reader.TryReadString(),
})
demo.Writer.TempAppendLine("\t\t\t[%d] %s (%s)", classes[len(classes)-1].ClassId, classes[len(classes)-1].ClassName, classes[len(classes)-1].DataTableName)
}
} else {
demo.Writer.TempAppendLine("\t\t%d Server Classes", svcClassInfo.ClassCount)
}
svcClassInfo.ServerClasses = classes
return svcClassInfo
}
|