MCPcopy Create free account
hub / github.com/LagrangeDev/LagrangeGo / Encode

Method Encode

internal/proto/dynamic.go:24–105  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

22}
23
24func (msg DynamicMessage) Encode() []byte {
25 en := encoder{}
26
27 // sort all items
28 type pair struct {
29 key uint64
30 value any
31 }
32 all := make([]pair, 0, len(msg))
33 for k, v := range msg {
34 all = append(all, pair{key: k, value: v})
35 }
36 sort.Slice(all, func(i, j int) bool {
37 return all[i].key < all[j].key
38 })
39
40 //nolint:staticcheck
41 for _, item := range all {
42 key := item.key << 3
43 switch v := item.value.(type) {
44 case bool:
45 en.uvarint(key)
46 vi := uint64(0)
47 if v {
48 vi = 1
49 }
50 en.uvarint(vi)
51 case int:
52 en.uvarint(key)
53 en.uvarint(uint64(v))
54 case uint:
55 en.uvarint(key)
56 en.uvarint(uint64(v))
57 case int32:
58 en.uvarint(key)
59 en.uvarint(uint64(v))
60 case int64:
61 en.uvarint(key)
62 en.uvarint(uint64(v))
63 case uint32:
64 en.uvarint(key)
65 en.uvarint(uint64(v))
66 case uint64:
67 en.uvarint(key)
68 en.uvarint(v)
69 case SInt:
70 en.uvarint(key)
71 en.svarint(int64(v))
72 case SInt32:
73 en.uvarint(key)
74 en.svarint(int64(v))
75 case SInt64:
76 en.uvarint(key)
77 en.svarint(int64(v))
78 case float32:
79 en.uvarint(key | 5)
80 en.u32(math.Float32bits(v))
81 case float64:

Callers 7

PackPacketMethod · 0.95
GetGroupNoticeMethod · 0.80
MarshalMethod · 0.80
Td1Function · 0.80
BuildRegisterRequestFunction · 0.80
httpGetFunction · 0.80

Calls 4

uvarintMethod · 0.95
svarintMethod · 0.95
u32Method · 0.95
u64Method · 0.95

Tested by 1