/// <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); }
/// <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); }