/// <summary> /// Process a message received by the server. /// </summary> /// <param name="message">The message to process.</param> /// <param name="channel">The server communication channel.</param> private static void HandleMessage(IStringMessage message, ITransportChannel channel) { switch (message.Header) { case InjectionCompleteNotification.InjectionComplete: var messageData = InjectionCompleteNotification.ParseMessage(message); if (messageData.Completed) { InjectionCompleted(messageData.ProcessId); } else { throw new InjectionLoadException($"Injection into process {messageData.ProcessId} failed."); } break; case LogMessageNotification.Message: var logMessageData = LogMessageNotification.ParseMessage(message); Log($"{logMessageData.Level}: {logMessageData.Message}"); break; default: { throw new InvalidOperationException($"Message type {message.Header} is not supported"); } } }
/// <inheritdoc /> public bool TryWrite(IStringMessage message) { try { Write(message); return(true); } catch (IOException) { return(false); } }
/// <summary> /// Parse a message's data. /// </summary> /// <param name="message">The message data.</param> /// <returns>A new instance of a class representing a log message.</returns> public static LogMessage ParseMessage(IStringMessage message) { return(LogMessage.FromBody(message.Body)); }
private static bool SendPipeMessage(IMessageWriter writer, IStringMessage message) { return(writer.TryWrite(message)); }
/// <inheritdoc /> public void Write(IStringMessage message) { Write(message.ToString()); }
private static bool SendPipeMessage(IMessageHandler messageHandler, IStringMessage message) { return messageHandler.TryWrite(message); }
/// <inheritdoc /> public void Write(IStringMessage message) => _messageWriter.Write(message);
/// <inheritdoc /> public bool TryWrite(IStringMessage message) => _messageWriter.TryWrite(message);
/// <summary> /// Construct a <see cref="InjectionCompleteMessage"/> from string message data. /// </summary> /// <param name="message">The serialized message data.</param> /// <returns>The newly constructed message data container.</returns> public static InjectionCompleteMessage ParseMessage(IStringMessage message) { return(InjectionCompleteMessage.FromBody(message.Body)); }