Пример #1
0
 public void AddEvent(Event @event)
 {
     ParameterConversion.ConvertEvent(@event, internalEvent =>
     {
         CEventTrace.EventTracerAddEvent(eventTracer, internalEvent);
     });
 }
Пример #2
0
        // Returns the SpanId of the newly-created Span in the EventTracer
        public SpanId AddSpan(SpanId[] causes)
        {
            unsafe
            {
                if (causes == null)
                {
                    return(AddSpan());
                }

                var causeIds = new CEventTrace.SpanId[causes.Length];
                for (var i = 0; i < causes.Length; i++)
                {
                    causeIds[i] = ParameterConversion.ConvertSpanId(causes[i]);
                }

                CEventTrace.SpanId createdSpanId;
                fixed(CEventTrace.SpanId *fixedCauseIds = causeIds)
                {
                    createdSpanId = CEventTrace.EventTracerAddSpan(eventTracer, fixedCauseIds, (uint)causeIds.Length);
                }

                var newSpanId = new SpanId();
                ApiInterop.Memcpy(newSpanId.Data, createdSpanId.Data, SpanId.SpanIdSize);

                return(newSpanId);
            }
        }
Пример #3
0
        public bool ShouldSampleEvent(Event @event)
        {
            bool shouldSampleEvent = false;

            ParameterConversion.ConvertEvent(@event, internalEvent =>
            {
                shouldSampleEvent = CEventTrace.EventTracerShouldSampleEvent(eventTracer, internalEvent) > 0;
            });

            return(shouldSampleEvent);
        }
Пример #4
0
 public EventTracer(EventTracerParameters[] parameters)
 {
     unsafe
     {
         ParameterConversion.ConvertEventTracerParameters(parameters, (internalParameters, handles) =>
         {
             eventTracer = CEventTrace.EventTracerCreate(internalParameters);
             handleList  = handles;
         });
     }
 }
Пример #5
0
        public SpanId AddSpan()
        {
            var newSpanId = new SpanId();

            unsafe
            {
                var createdSpanId = CEventTrace.EventTracerAddSpan(eventTracer, null, 0);
                ApiInterop.Memcpy(newSpanId.Data, createdSpanId.Data, SpanId.SpanIdSize);
            }

            return(newSpanId);
        }
Пример #6
0
        private static SpanId GetNullSpanId()
        {
            var nativeSpanId = new SpanId();
            var nullSpanId   = CEventTrace.SpanIdNull();

            unsafe
            {
                ApiInterop.Memcpy(nativeSpanId.Data, nullSpanId.Data, SpanIdSize);
            }

            return(nativeSpanId);
        }
Пример #7
0
        public SpanId GetActiveSpanId()
        {
            var nativeSpanId = CEventTrace.EventTracerGetActiveSpanId(eventTracer);
            var spanId       = new SpanId();

            unsafe
            {
                ApiInterop.Memcpy(spanId.Data, nativeSpanId.Data, SpanId.SpanIdSize);
            }

            return(spanId);
        }
Пример #8
0
        public SpanId AddSpan(SpanId spanId)
        {
            var newSpanId = new SpanId();

            unsafe
            {
                var internalSpanId = ParameterConversion.ConvertSpanId(spanId);
                var createdSpanId  = CEventTrace.EventTracerAddSpan(eventTracer, &internalSpanId, 1);
                ApiInterop.Memcpy(newSpanId.Data, createdSpanId.Data, SpanId.SpanIdSize);
            }

            return(newSpanId);
        }
Пример #9
0
        public static Item DeserializeNextItemFromStream(IOStream stream)
        {
            unsafe
            {
                var itemContainer = GetThreadLocalItem();
                var itemSize      = CEventTrace.GetNextSerializedItemSize(stream.Stream);

                var deserializeStatus = CEventTrace.DeserializeItemFromStream(stream.Stream, itemContainer, itemSize);
                if (deserializeStatus != 1)
                {
                    var errorMessage = CEventTrace.GetLastError();
                    throw new IOException(ApiInterop.FromUtf8Cstr(errorMessage));
                }

                return(ParameterConversion.ConvertItem(itemContainer));
            }
        }
Пример #10
0
        public static Item Create(IOStorage storage, Item?itemToConvert = null)
        {
            unsafe
            {
                var newItem = new Item();
                if (itemToConvert != null)
                {
                    ParameterConversion.ConvertItem(itemToConvert.Value, nativeItem =>
                    {
                        newItem = ParameterConversion.ConvertItem(CEventTrace.ItemCreate(storage.Storage, nativeItem));
                    });
                }
                else
                {
                    newItem = ParameterConversion.ConvertItem(CEventTrace.ItemCreate(storage.Storage, null));
                }

                return(newItem);
            }
        }
Пример #11
0
        public void SerializeToStream(IOStream stream)
        {
            unsafe
            {
                var serializedItemResult = 0;
                ParameterConversion.ConvertItem(this, nativeItem =>
                {
                    var itemSize         = CEventTrace.GetSerializedItemSize(nativeItem);
                    serializedItemResult = CEventTrace.SerializeItemToStream(stream.Stream, nativeItem, itemSize);
                });

                if (serializedItemResult == 1)
                {
                    return;
                }

                var errorMessage = CEventTrace.GetLastError();
                throw new IOException(ApiInterop.FromUtf8Cstr(errorMessage));
            }
        }
Пример #12
0
        internal static unsafe CEventTrace.Item *GetThreadLocalItem()
        {
            var item = CEventTrace.ItemGetThreadLocal();

            switch (item->ItemType)
            {
            case CEventTrace.ItemType.Span:
                item->ItemUnion.Span.Id         = CEventTrace.SpanIdNull();
                item->ItemUnion.Span.Causes     = null;
                item->ItemUnion.Span.CauseCount = 0;
                break;

            case CEventTrace.ItemType.Event:
                item->ItemUnion.Event.Data    = IntPtr.Zero;
                item->ItemUnion.Event.Id      = CEventTrace.SpanIdNull();
                item->ItemUnion.Event.Message = null;
                item->ItemUnion.Event.Type    = null;
                break;
            }

            item->ItemType = 0;
            return(item);
        }
Пример #13
0
 public TraceEventData()
 {
     EventData = CEventTrace.EventDataCreate();
 }
Пример #14
0
 public override int GetHashCode()
 {
     return(CEventTrace.SpanIdHash(ParameterConversion.ConvertSpanId(this)));
 }
Пример #15
0
 public bool Equals(SpanId other)
 {
     return(CEventTrace.SpanIdEqual(
                ParameterConversion.ConvertSpanId(this),
                ParameterConversion.ConvertSpanId(other)) > 0);
 }
Пример #16
0
 public void Enable()
 {
     CEventTrace.EventTracerEnable(eventTracer);
     IsEnabled = true;
 }
Пример #17
0
 public void Disable()
 {
     CEventTrace.EventTracerDisable(eventTracer);
     IsEnabled = false;
 }
Пример #18
0
 public void SetActiveSpanId(SpanId spanId)
 {
     CEventTrace.EventTracerSetActiveSpanId(eventTracer, ParameterConversion.ConvertSpanId(spanId));
 }
Пример #19
0
 public void ClearActiveSpanId()
 {
     CEventTrace.EventTracerClearActiveSpanId(eventTracer);
 }