Example #1
0
        /// <summary>
        /// 创建本地
        /// </summary>
        /// <param name="operationName"></param>
        /// <returns></returns>
        public PartialContext CreateLocalPartialContext(string operationName)
        {
            if (operationName == null)
            {
                throw new ArgumentNullException(nameof(operationName));
            }
            PartialContext Context = GetParentPartialContext(ChannelType.Local);

            if (Context == null)
            {
                throw new NullReferenceException(nameof(PartialContext));
            }
            PartialContext Partial = new PartialContext(GetTraceId(Context), Context.HeaderValue, ChannelType.Local, operationName);

            if (Context != null)
            {
                ReferencePartialSpanContext Reference = new ReferencePartialSpanContext
                {
                    Component      = Context.Context.Component,
                    EntryServiceId = Context.RequirId,
                    LayerType      = Context.Context.LayerType,
                    OperationName  = Context.OperationName,
                    Tags           = Context.Context.Tags,
                    RequirId       = Guid.NewGuid()
                };
                Partial.References.Add(Reference);
            }
            LocalAccessor.Context = Partial;
            return(Partial);
        }
Example #2
0
        /// <summary>
        /// 创建退出
        /// </summary>
        /// <param name="operationName"></param>
        /// <returns></returns>
        public PartialContext CreateExitPartialContext(string operationName)
        {
            PartialContext Context = GetParentPartialContext(ChannelType.Exit);

            if (Context == null)
            {
                throw  new NullReferenceException(nameof(PartialContext));
            }
            PartialContext Partial = new PartialContext(GetTraceId(Context), Context.HeaderValue, ChannelType.Exit, operationName);

            if (Context != null)
            {
                var ParentReference = Context.References.FirstOrDefault();
                ReferencePartialSpanContext Reference = new ReferencePartialSpanContext
                {
                    Component      = Context.Context.Component,
                    EntryServiceId = Context.RequirId,
                    LayerType      = Context.Context.LayerType,
                    OperationName  = Context.OperationName,
                    Tags           = Context.Context.Tags,
                    RequirId       = Guid.NewGuid()
                };
                Partial.References.Add(Reference);
                if (ParentReference != null)
                {
                    Partial.References.Add(ParentReference);
                }
            }
            ExitAccessor.Context = Partial;
            return(Partial);
        }