Exemple #1
0
        /// <inheritdoc />
        public void End(Exception ex = null)
        {
            if (ex != null)
            {
                log.Debug("Exception occurred - skipping operation auditing");
                return;
            }
            log.Debug("Processing incoming message");
            var now         = DateTime.Now;
            var operationId = GetCurrentOperationId();

            log.DebugFormat("Current operation ID = {0}", operationId);
            if (string.IsNullOrEmpty(operationId))
            {
                return;
            }
            var operation = operationProvider.Find(operationId);

            if (operation == null)
            {
                log.WarnFormat("Unable to find an operation with ID = {0}. Some tracking " +
                               "information may be lost.", operationId);
                return;
            }
            Operation.Current = operation;
            var messageTypes = GetEnclosedMessageTypes();

            foreach (var receivedMessageType in messageTypes)
            {
                var typeName = receivedMessageType.FullName;
                var stage    = new OperationStage(typeName, now);
                log.DebugFormat("Pushing operation stage, received message type = {0}",
                                typeName);
                operation.Push(stage);
            }
        }