public static extern LttngReaderStatusCode read_next_event(ref LTTngTraceHandle trace_handle, ref EventRecord evDesc, StringBuilder unstructured_event_text, [MarshalAs(UnmanagedType.LPStr)] StringBuilder taskname_eventname, ref ulong timestamp_unix_epoch_nano_s, ref bool is_unstructured);
public EventRecordEventArgs(EventRecord record) { this.Record = record; }
public static extern int TdhGetEventInformation( ref EventRecord Event, uint TdhContextCount, IntPtr TdhContext, [Out] IntPtr eventInfoPtr, ref int BufferSize);
internal string FormatEvent(EventRecord eventRecord, ValueMaps valueMaps, out string eventType, out string eventText, int formatVersion) { return(this.description.FormatEvent(this.stack, eventRecord, valueMaps, out eventType, out eventText, formatVersion)); }
private uint EventRecordCallback([In] ref EventRecord eventRecord) { this.EventRead(this, new EventRecordEventArgs(eventRecord)); return(uint.MaxValue); }
public static bool IsStringEvent(EventRecord eventRecord) { return((eventRecord.EventHeader.Flags & ManifestCache.EventHeaderFlagStringOnly) == ManifestCache.EventHeaderFlagStringOnly); }
private LttngReaderStatusCode ProcessTrace(DateTime startTime, DateTime endTime, ref LTTngTraceHandle traceHandle, out ulong eventReadFailureCount) { EventRecord eventRecord = new EventRecord(); ulong lastReadTimestamp = 0; // needed for processing unstructured events in Linux bool isUnstructured = false; StringBuilder unstructuredRecord = new StringBuilder(LttngReaderBindings.MAX_LTTNG_UNSTRUCTURED_EVENT_LEN + 1); StringBuilder taskNameEventName = new StringBuilder(LttngReaderBindings.MAX_LTTNG_TASK_EVENT_NAME_LEN + 1); ulong startTimeEpochNanoS = LttngTraceFolderEventReader.ConvertToUnixEpoch(startTime); ulong endTimeEpochNanoS = LttngTraceFolderEventReader.ConvertToUnixEpoch(endTime); // set start and end time for reading traces LttngReaderStatusCode res = LttngReaderBindings.set_start_end_time(ref traceHandle, startTimeEpochNanoS, endTimeEpochNanoS); eventReadFailureCount = 0; if (res != LttngReaderStatusCode.SUCCESS) { return(res); } res = LttngReaderBindings.read_next_event(ref traceHandle, ref eventRecord, unstructuredRecord, taskNameEventName, ref lastReadTimestamp, ref isUnstructured); while (res == LttngReaderStatusCode.SUCCESS || res == LttngReaderStatusCode.FAILED_TO_READ_EVENT) { if (res == LttngReaderStatusCode.FAILED_TO_READ_EVENT) { eventReadFailureCount++; continue; } EventRecordEventArgs eventRecordEventArgs; this.lastEventReadTimestamp = lastReadTimestamp; if (isUnstructured) { try { eventRecord.EventHeader.TimeStamp = LttngTraceFolderEventReader.ConvertFromUnixEpoch(lastReadTimestamp).ToFileTimeUtc(); } catch (Exception) { // Flagging error with minimum timestamp so we can continue processing other events. eventRecord.EventHeader.TimeStamp = 0; } eventRecordEventArgs = new EventRecordEventArgs(eventRecord); eventRecordEventArgs.IsUnstructured = isUnstructured; eventRecordEventArgs.TaskNameEventName = taskNameEventName.ToString(); eventRecordEventArgs.UnstructuredRecord = unstructuredRecord.ToString(); } else { eventRecordEventArgs = new EventRecordEventArgs(eventRecord); } this.EventRead(this, eventRecordEventArgs); if (eventRecordEventArgs.Cancel) { return(LttngReaderStatusCode.SUCCESS); } res = LttngReaderBindings.read_next_event(ref traceHandle, ref eventRecord, unstructuredRecord, taskNameEventName, ref lastReadTimestamp, ref isUnstructured); } return(res); }
internal static string FormatEvent(FormatVersion formatVersion, IFormatProvider provider, EventRecord eventRecord, string eventSourceName, string eventLevel, string eventTaskName, string opcodeName, string keywordsName, string type, string text) { switch (formatVersion) { case FormatVersion.TaskBasedFormatting: { return(string.Format( provider, "{0},{1},{2},{3},{4}.{5},{6}", EventFormatter.FormatTimeStamp(provider, eventRecord.EventHeader.TimeStamp), eventLevel, eventRecord.EventHeader.ThreadId, eventRecord.EventHeader.ProcessId, eventTaskName, type, text)); } case FormatVersion.EventSourceBasedFormatting: { return(string.Format( provider, "{0},{1},{2},{3},{4}.{5},{6}", EventFormatter.FormatTimeStamp(provider, eventRecord.EventHeader.TimeStamp), eventLevel, eventRecord.EventHeader.ThreadId, eventRecord.EventHeader.ProcessId, eventSourceName, type, text)); } default: { return(string.Format( provider, "{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}", EventFormatter.FormatTimeStamp(provider, eventRecord.EventHeader.TimeStamp), eventRecord.EventHeader.ThreadId, eventRecord.EventHeader.ProcessId, eventRecord.EventHeader.EventDescriptor.Id, eventRecord.EventHeader.ActivityId, GetRelatedActivityId(eventRecord), eventLevel, String.IsNullOrEmpty(eventTaskName) ? eventRecord.EventHeader.EventDescriptor.Task.ToString(provider) : eventTaskName, String.IsNullOrEmpty(opcodeName) ? eventRecord.EventHeader.EventDescriptor.Opcode.ToString(provider) : opcodeName, String.IsNullOrEmpty(keywordsName) ? eventRecord.EventHeader.EventDescriptor.Keyword.ToString("X", provider) : keywordsName, type, text)); } } }
internal string FormatEvent(EventStack stack, EventRecord eventRecord, ValueMaps valueMaps, out string eventType, out string eventText, int formatVersion) { try { // This inefficient code is only a placeholder // once we make it work on all primitive types this will be // pre-compiled Linq Expression EventRecord->String ApplicationDataReader reader = new ApplicationDataReader(eventRecord.UserData, eventRecord.UserDataLength); eventType = this.eventName; string type = this.originalEventName; string id = string.Empty; string[] values = new string[fields.Count]; for (int i = 0; i < this.fields.Count; i++) { FieldDefinition fieldDef = this.fields[i]; values[i] = fieldDef.FormatField(CultureInfo.InvariantCulture, reader, valueMaps); } if (this.isParentEvent) { for (int i = this.fields.Count - 1; i >= 0; i--) { if (this.fields[i].IsContextField) { values[i] = stack.Pop(eventRecord.EventHeader.ProcessId, eventRecord.EventHeader.ThreadId, values[i], this.firstContextFieldIndex == i); if (values[i] == null) { values[i] = " !!!Context Data Not Found!!! "; } } } } if (this.typeFieldIndex != -1) { type = eventType = values[typeFieldIndex]; } eventText = FormatWithFieldValues(values, out id); if (id.Length > 0) { type += "@" + id; } if (this.isChildEvent) { stack.Push(eventRecord.EventHeader.ProcessId, eventRecord.EventHeader.ThreadId, values[0], eventText); return(null); } return(EventFormatter.FormatEvent( string.IsNullOrEmpty(this.eventSourceName) ? (EventFormatter.FormatVersion)formatVersion : EventFormatter.FormatVersion.EventSourceBasedFormatting, CultureInfo.InvariantCulture, eventRecord, this.eventSourceName, this.level, this.taskName, this.opcodeName, this.keywordsName, type, eventText)); } catch (Exception e) { throw new InvalidDataException( string.Format(CultureInfo.InvariantCulture, "Unable to parse event {0}.{1} id {2} eventsource {3}", this.TaskName, this.EventName, this.id, this.eventSourceName), e); } }