// otherwise not exposed explicitly. // NB: the string value is what's actually shared between implementations const zipkinSpanFormat = "zipkin-span-format" // Span is an internal representation of Zipkin-compatible OpenTracing Span. // It is used as OpenTracing inject/extract Carrier with ZipkinSpanFormat. type Span struct { traceID uint64 parentID uint64 spanID uint64 flags byte } var ( // traceRng is a thread-safe random number generator for generating trace IDs. traceRng = trand.NewSeeded() // emptySpan is returned from CurrentSpan(ctx) when there is no OpenTracing // Span in ctx, to avoid returning nil. emptySpan Span ) func (s Span) String() string { return fmt.Sprintf("TraceID=%x,ParentID=%x,SpanID=%x", s.traceID, s.parentID, s.spanID) } func (s *Span) read(r *typed.ReadBuffer) error { s.spanID = r.ReadUint64() s.parentID = r.ReadUint64() s.traceID = r.ReadUint64() s.flags = r.ReadSingleByte()
func newPeerHeap() *peerHeap { return &peerHeap{rng: trand.NewSeeded()} }
"golang.org/x/net/context" ) var ( // ErrInvalidConnectionState indicates that the connection is not in a valid state. // This may be due to a race between selecting the connection and it closing, so // it is a network failure that can be retried. ErrInvalidConnectionState = NewSystemError(ErrCodeNetwork, "connection is in an invalid state") // ErrNoPeers indicates that there are no peers. ErrNoPeers = errors.New("no peers available") // ErrPeerNotFound indicates that the specified peer was not found. ErrPeerNotFound = errors.New("peer not found") peerRng = trand.NewSeeded() ) // Connectable is the interface used by peers to create connections. type Connectable interface { // Connect tries to connect to the given hostPort. Connect(ctx context.Context, hostPort string) (*Connection, error) // Logger returns the logger to use. Logger() Logger } // PeerList maintains a list of Peers. type PeerList struct { sync.RWMutex parent *RootPeerList