protected ReceiveMessageRecord(ReceiveMessageRecord record) : base(record) { }
void ProcessReceiveMessageTrace(NativeActivityContext executionContext, Guid receivedActivityId) { if (TraceUtility.MessageFlowTracing) { try { // ReceiveMessageRecord messageFlowTrackingRecord = new ReceiveMessageRecord(MessagingActivityHelper.MessageCorrelationReceiveRecord) { E2EActivityId = receivedActivityId }; executionContext.Track(messageFlowTrackingRecord); if (receivedActivityId != Guid.Empty && DiagnosticTraceBase.ActivityId != receivedActivityId) { DiagnosticTraceBase.ActivityId = receivedActivityId; } FxTrace.Trace.SetAndTraceTransfer(executionContext.WorkflowInstanceId, true); if (TraceUtility.ActivityTracing) { if (TD.StartSignpostEventIsEnabled()) { TD.StartSignpostEvent(new DictionaryTraceRecord(new Dictionary<string, string>(3) { { MessagingActivityHelper.ActivityName, this.DisplayName }, { MessagingActivityHelper.ActivityType, MessagingActivityHelper.MessagingActivityTypeActivityExecution }, { MessagingActivityHelper.ActivityInstanceId, executionContext.ActivityInstanceId } })); } } else if (TD.WfMessageReceivedIsEnabled()) { TD.WfMessageReceived(new EventTraceActivity(receivedActivityId), executionContext.WorkflowInstanceId); } } catch (Exception ex) { if (Fx.IsFatal(ex)) { throw; } FxTrace.Exception.AsInformation(ex); } } }
/// <summary> /// When implemented in a derived class, used to synchronously process the tracking record. /// </summary> /// <param name="record"> /// The generated tracking record. /// </param> /// <param name="timeout"> /// The time period after which the provider aborts the attempt. /// </param> protected virtual void Track(ReceiveMessageRecord record, TimeSpan timeout) { // Do nothing }