MCPcopy Create free account
hub / github.com/clrxbl/blockgametracker / EncodeBatch

Function EncodeBatch

internal/queue/encode.go:22–58  ·  view source on GitHub ↗

EncodeBatch builds a flatbuffers PingBatch root containing the given results.

(source string, results []ping.Result)

Source from the content-addressed store, hash-verified

20
21// EncodeBatch builds a flatbuffers PingBatch root containing the given results.
22func EncodeBatch(source string, results []ping.Result) []byte {
23 builder := flatbuffers.NewBuilder(1024)
24
25 pingOffsets := make([]flatbuffers.UOffsetT, 0, len(results))
26 for _, r := range results {
27 serverOff := builder.CreateString(r.Name)
28 addrOff := builder.CreateString(r.QueryAddress)
29 asNameOff := builder.CreateString(r.ASName)
30
31 pb.PingStart(builder)
32 pb.PingAddTime(builder, uint64(r.Time.Unix()))
33 pb.PingAddServer(builder, serverOff)
34 pb.PingAddServerAddress(builder, addrOff)
35 pb.PingAddPlatform(builder, platformFor(r.Edition))
36 pb.PingAddAsNumber(builder, r.ASNum)
37 pb.PingAddAsName(builder, asNameOff)
38 if r.PlayerCount != nil {
39 pb.PingAddPlayerCount(builder, uint32(*r.PlayerCount))
40 }
41 pingOffsets = append(pingOffsets, pb.PingEnd(builder))
42 }
43
44 pb.PingBatchStartPingsVector(builder, len(pingOffsets))
45 for i := len(pingOffsets) - 1; i >= 0; i-- {
46 builder.PrependUOffsetT(pingOffsets[i])
47 }
48 pingsVec := builder.EndVector(len(pingOffsets))
49
50 sourceOff := builder.CreateString(source)
51 pb.PingBatchStart(builder)
52 pb.PingBatchAddSource(builder, sourceOff)
53 pb.PingBatchAddPings(builder, pingsVec)
54 root := pb.PingBatchEnd(builder)
55
56 builder.Finish(root)
57 return builder.FinishedBytes()
58}

Callers 1

tickMethod · 0.85

Calls 1

platformForFunction · 0.85

Tested by

no test coverage detected