trpc.group/trpc-go/trpc-go@v1.0.3/rpcz/id_generator.go (about) 1 // 2 // 3 // Tencent is pleased to support the open source community by making tRPC available. 4 // 5 // Copyright (C) 2023 THL A29 Limited, a Tencent company. 6 // All rights reserved. 7 // 8 // If you have downloaded a copy of the tRPC source code from Tencent, 9 // please note that tRPC source code is licensed under the Apache 2.0 License, 10 // A copy of the Apache 2.0 License is included in this file. 11 // 12 // 13 14 package rpcz 15 16 import ( 17 "math/rand" 18 "sync" 19 ) 20 21 // randomIDGenerator generates random span ID. 22 type randomIDGenerator struct { 23 sync.Mutex 24 randSource *rand.Rand 25 } 26 27 // newSpanID returns a non-negative span ID randomly. 28 func (gen *randomIDGenerator) newSpanID() SpanID { 29 gen.Lock() 30 defer gen.Unlock() 31 return SpanID(gen.randSource.Int63()) 32 } 33 34 func newRandomIDGenerator(seed int64) *randomIDGenerator { 35 return &randomIDGenerator{randSource: rand.New(rand.NewSource(seed))} 36 }