示例#1
0
        public static Dictionary <string, object> ToLoggableDictionary(this IAbstractMessageType message, string name, bool canEnqueue)
        {
            if (message == null)
            {
                return(null);
            }
            var result = new Dictionary <string, object> {
            };

            if (name != null)
            {
                result.Add(nameof(name), name);
            }
            if (!message.Id.IsNullOrWhiteSpace())
            {
                result.Add(nameof(message.Id), message.Id);
            }
            if (!message.Method.IsNullOrWhiteSpace())
            {
                result.Add(nameof(message.Method), message.Method);
            }
            if (!message.Error.IsNullOrWhiteSpace())
            {
                result.Add(nameof(message.Error), message.Error);
            }
            if (canEnqueue)
            {
                result.Add(nameof(canEnqueue), "true");
            }
            return(result);
        }
示例#2
0
        public static IDisposable CriticalOperation(ILogger logger, string name, IAbstractMessageType message, bool canEnqueue = false)
        {
            if (logger == null || !logger.IsEnabled(LogEventLevel.Verbose))
            {
                return(null);
            }
#if DEBUG
            if (Application.DeveloperOptions.MuteIpcLogs)
            {
                return(null);
            }

            // NOTE: this will add timings to these messages, but, it has a perf. impact
            //return Core.Logging.LogExtensions.CriticalOperation(logger, message.ToLoggableDictionary(name, canEnqueue));
            logger.Verbose(message.ToLoggableString());
            return(null);
#else
            logger.Verbose(message.ToLoggableString());
            return(null);
#endif
        }
示例#3
0
 public void Send(IAbstractMessageType message) => SendInternal(message);
示例#4
0
 private void SendInternal(IAbstractMessageType message, bool canEnqueue = false)
 {
     using (IpcLogger.CriticalOperation(Log, "RES", message, canEnqueue)) {
         PostMessage(message, canEnqueue);
     }
 }
示例#5
0
 public virtual void PostMessage(IAbstractMessageType message, bool canEnqueue = false)
 {
     PostMessage(message.AsJson(), canEnqueue);
 }
示例#6
0
 public static string ToLoggableString(this IAbstractMessageType message)
 {
     return(message == null ? null : message.ToLoggableDictionary(null, false).ToKeyValueString());
 }