Exemple #1
0
        /// <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");
            }
            }
        }
Exemple #2
0
 /// <inheritdoc />
 public bool TryWrite(IStringMessage message)
 {
     try
     {
         Write(message);
         return(true);
     }
     catch (IOException)
     {
         return(false);
     }
 }
Exemple #3
0
 /// <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));
 }
Exemple #4
0
 private static bool SendPipeMessage(IMessageWriter writer, IStringMessage message)
 {
     return(writer.TryWrite(message));
 }
Exemple #5
0
 /// <inheritdoc />
 public void Write(IStringMessage message)
 {
     Write(message.ToString());
 }
Exemple #6
0
 private static bool SendPipeMessage(IMessageHandler messageHandler, IStringMessage message)
 {
     return messageHandler.TryWrite(message);
 }
Exemple #7
0
 /// <inheritdoc />
 public void Write(IStringMessage message) => _messageWriter.Write(message);
Exemple #8
0
 /// <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));
 }