public MessageHandlerResult Handle(IMessage message) { return(message switch { LoadContextMessage loadMsg => HandleUnknownErrors(loadMsg, HandleLoadContextMessage), RunUnitTestsMessage runMsg => HandleUnknownErrors(runMsg, HandleRunUnitTestMessage), MeasureSolveMessage solveMsg => HandleUnknownErrors(solveMsg, HandleMeasureSolveMessage), TerminateMessage _ => new MessageHandlerResult(isDone: true), _ => throw new InvalidOperationException("Unknown message type!"), });
private void Terminate() { try { var terminateMessage = new TerminateMessage(_clientHostAddress); _outputChannel.SendOneWay(terminateMessage); } catch (IOException) { //Hide IOException when disposing a client while the server is not alive. } }
public static Message Create(IFrame frame, string side = "") { var messageType = (MessageType)frame.TakeByte(); var clientHostAddress = HostAddress.Read(frame); switch (messageType) { case MessageType.Hello: return(HelloMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Ack: return(AckMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Connect: return(ConnectMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Heartbeat: return(HeartbeatMessage.ReadInternal(clientHostAddress)); case MessageType.TerminateSession: return(TerminateMessage.ReadInternal(clientHostAddress)); case MessageType.ErrorMessage: return(ErrorMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Exception: return(ExceptionMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Event: return(EventMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Request: return(RequestMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Response: return(ResponseMessage.ReadInternal(clientHostAddress, frame)); case MessageType.SubscribeEvent: return(SubscribeEventMessage.ReadInternal(clientHostAddress, frame)); case MessageType.UnsubscribeEvent: return(UnsubscribeEventMessage.ReadInternal(clientHostAddress, frame)); case MessageType.Notification: return(NotificationMessage.ReadInternal(clientHostAddress, frame)); default: throw new IOException( $"Unknown Message type {messageType} is received"); } }
private Task Terminate( TerminateMessage arg ) { Program.IsFinished = true; return Task.Delay( 0 ); }
void HandleMessage(TerminateMessage message) { pipeClient.Stop(); }