123456789101112131415161718192021222324252627282930313233343536 |
- package opentelemetry
- import (
- "context"
- "go.opentelemetry.io/otel/attribute"
- "go.opentelemetry.io/otel/trace"
- "google.golang.org/protobuf/proto"
- )
- var (
- // MessageSent is the type of sent messages.
- MessageSent = messageType(RPCMessageTypeSent)
- // MessageReceived is the type of received messages.
- MessageReceived = messageType(RPCMessageTypeReceived)
- )
- type messageType attribute.KeyValue
- // Event adds an event of the messageType to the span associated with the
- // passed context with id and size (if message is a proto message).
- func (m messageType) Event(ctx context.Context, id int, message interface{}) {
- span := trace.SpanFromContext(ctx)
- if p, ok := message.(proto.Message); ok {
- span.AddEvent("message", trace.WithAttributes(
- attribute.KeyValue(m),
- RPCMessageIDKey.Int(id),
- RPCMessageUncompressedSizeKey.Int(proto.Size(p)),
- ))
- } else {
- span.AddEvent("message", trace.WithAttributes(
- attribute.KeyValue(m),
- RPCMessageIDKey.Int(id),
- ))
- }
- }
|