private void OnEventRead(object sender, EventRecordEventArgs e) { if (!this.canceled) { this.rwLock.EnterReadLock(); RealTimeEventReader.hasProcessEventLock = true; try { if (this.traceSession != null) { this.EventsLost = this.traceSession.EventsLost; // Guaranteed non-null due to check in Start() this.EventRead(this, e); } } finally { RealTimeEventReader.hasProcessEventLock = false; this.rwLock.ExitReadLock(); } this.StopIfCanceled(e.Cancel); } }
private void OnEventRead(object sender, EventRecordEventArgs e) { string s = this.cache.FormatEvent(e.Record); if (s != null) { s = s.Replace("\n", "\t"); this.traceDispatcher(s); } }
private uint EventRecordCallback([In] ref EventRecord eventRecord) { uint returnValue = uint.MaxValue; if (eventRecord.EventHeader.ProviderId != EventTraceSystem) { var e = new EventRecordEventArgs(eventRecord); // Guaranteed non-null due to check in ReadEvents() this.EventRead(this, e); if (e.Cancel) { // Return 'FALSE' to cancel returnValue = 0; } } return(returnValue); }
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); }