Beispiel #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");
            }
            }
        }
Beispiel #2
0
 private static bool SendLogMessage(IMessageWriter writer, LogLevel level, string message)
 {
     return(writer.TryWrite(LogMessageNotification.CreateMessage(level, message)));
 }