public void Offer(string messageStr)
{
var messageType = DetermineMessageType(messageStr);
if (messageType == MultiNodeTestRunnerMessageType.Unknown)
{
HandleUnknownMessageType(messageStr);
return;
}
if (messageType == MultiNodeTestRunnerMessageType.NodeLogMessage)
{
LogMessageForNode log;
if (!TryParseLogMessage(messageStr, out log)) throw new InvalidOperationException("could not parse log message: " + messageStr);
MessageSinkActorRef.Tell(log);
}
else if (messageType == MultiNodeTestRunnerMessageType.RunnerLogMessage)
{
LogMessageForTestRunner runnerLog;
if (!TryParseLogMessage(messageStr, out runnerLog)) throw new InvalidOperationException("could not parse test runner log message: " + messageStr);
MessageSinkActorRef.Tell(runnerLog);
}
else if (messageType == MultiNodeTestRunnerMessageType.NodePassMessage)
{
NodeCompletedSpecWithSuccess nodePass;
if (!TryParseSuccessMessage(messageStr, out nodePass)) throw new InvalidOperationException("could not parse node spec pass message: " + messageStr);
MessageSinkActorRef.Tell(nodePass);
}
else if (messageType == MultiNodeTestRunnerMessageType.NodeFailMessage)
{
NodeCompletedSpecWithFail nodeFail;
if (!TryParseFailureMessage(messageStr, out nodeFail)) throw new InvalidOperationException("could not parse node spec fail message: " + messageStr);
MessageSinkActorRef.Tell(nodeFail);
}
else if (messageType == MultiNodeTestRunnerMessageType.NodeFailureException)
{
NodeCompletedSpecWithFail nodeFail;
if (!TryParseFailureExceptionMessage(messageStr, out nodeFail)) throw new InvalidOperationException("could not parse node spec failure + EXCEPTION message: " + messageStr);
MessageSinkActorRef.Tell(nodeFail);
}
}