public IScope AroundReceive(IActorContext context, TracedMessage tracedMessage, Type actorType)
        {
            var actorPath = context.Self.Path.ToString().Substring(context.Self.Path.Address.ToString().Length);

            string operationName = $"{actorPath}:{tracedMessage.Message.GetType().Name}";

            string parent  = "no";
            var    builder = _tracer.BuildSpan(operationName);

            if (tracedMessage.Span != null)
            {
                parent  = tracedMessage.Span.Context.SpanId;
                builder = builder.AsChildOf(tracedMessage.Span);
            }
            else if (tracedMessage.Context.Count != 0)
            {
                ISpanContext spanContext = _tracer.Extract(BuiltinFormats.TextMap, new TextMapExtractAdapter(tracedMessage.Context));
                parent  = spanContext.SpanId;
                builder = builder.AsChildOf(spanContext);
            }

            IScope ret = builder.StartActive(true);

            ret.Span.SetTag("sender.path", GetSenderPath(context.Sender));
            ret.Span.SetTag("receiver.path", GetLocalActorPath(context.Self));
            ret.Span.SetTag("receiver.type", actorType.ToString());
            ret.Span.SetTag("message.type", tracedMessage.Message.GetType().ToString());

            LocalLog($"> {context.Self.Path}.Tell({tracedMessage.Message}) Thread={Thread.CurrentThread.ManagedThreadId}, parent={parent}");

            return(ret);
        }
 private bool AddSpan(IActorRef receiver, IActorRef sender, ref object message)
 {
     if (!(message is TracedMessage))
     {
         IScope scope = _tracer.ScopeManager.Active;
         message = new TracedMessage(message, scope?.Span);
         return(true);
     }
     return(false);
 }
        private bool AddSpanContext(IActorRef receiver, IActorRef sender, ref object message)
        {
            IScope scope = _tracer.ScopeManager.Active;

            if (!(message is TracedMessage) && scope?.Span != null)
            {
                var tm = new TracedMessage(message, null);
                _tracer.Inject(scope.Span.Context, BuiltinFormats.TextMap, new TextMapInjectAdapter(tm.Context));
                message = tm;
                return(true);
            }
            return(false);
        }