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); }
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 }
public void Send(IAbstractMessageType message) => SendInternal(message);
private void SendInternal(IAbstractMessageType message, bool canEnqueue = false) { using (IpcLogger.CriticalOperation(Log, "RES", message, canEnqueue)) { PostMessage(message, canEnqueue); } }
public virtual void PostMessage(IAbstractMessageType message, bool canEnqueue = false) { PostMessage(message.AsJson(), canEnqueue); }
public static string ToLoggableString(this IAbstractMessageType message) { return(message == null ? null : message.ToLoggableDictionary(null, false).ToKeyValueString()); }