public bool TryParseMessage(out RdapMessage message) { message = null; if (messageReader.BaseStream.Length <= 0) return false; for (var i = startCommandIndex; i < commands.Count; i++) { try { commands[i](); } catch (InsufficientRdapMessageException) { startCommandIndex = i; return false; } } message = currentRdapMessage; IntialiseStateObjects(); return true; }
public void RDAMessageParserShouldReturnFalseIfNoMessageToBuild() { var fifoStream = new FifoStream(); var desktopMessage = new RdapMessage( RdapMessageType.DesktopWindowImageFrameMessage, new byte[] { 1, 4, 0, 0, 0, 4, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 40, 0, 0, 0, 50, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 40, 0, 0, 0, 50, 0, 0, 0 } ); var mouseClickEventMessage = new RdapMessage( RdapMessageType.MouseClickEventMessage, new byte[] { 2, 56, 0, 0, 0, 67, 0, 0, 0 } ); var bytesToWrite1 = desktopMessage.ToBytes(); var bytesToWrite2 = mouseClickEventMessage.ToBytes(); var parser = new RdapMessageParser(fifoStream); fifoStream.Write(bytesToWrite1, 0, bytesToWrite1.Length - 10); RdapMessage desktopMessageOutput; var retVal = parser.TryParseMessage(out desktopMessageOutput); Assert.AreEqual(false, retVal); Assert.AreEqual(null, desktopMessageOutput); fifoStream.Write(bytesToWrite1, bytesToWrite1.Length - 10, 10); fifoStream.Write(bytesToWrite2, 0, bytesToWrite2.Length); parser.TryParseMessage(out desktopMessageOutput); Assert.AreEqual(RdapMessageType.DesktopWindowImageFrameMessage, desktopMessageOutput.MessageType); Assert.AreEqual(97, desktopMessageOutput.Data.Length); RdapMessage mouseClickEventMessageOutput; parser.TryParseMessage(out mouseClickEventMessageOutput); Assert.AreEqual(RdapMessageType.MouseClickEventMessage, mouseClickEventMessageOutput.MessageType); Assert.AreEqual(9, mouseClickEventMessageOutput.Data.Length); }
public void ShouldAbleToRetriveVariables() { var messageBuffer = new byte[] { 1, 4, 0, 0, 0, 4, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 40, 0, 0, 0, 50, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 40, 0, 0, 0, 50, 0, 0, 0 }; var message = new RdapMessage(RdapMessageType.DesktopWindowImageFrameMessage, messageBuffer); Assert.AreEqual(RdapMessageType.DesktopWindowImageFrameMessage, message.MessageType); Assert.AreEqual(messageBuffer.Length, message.Data.Length); for (var i = 0; i < messageBuffer.Length; i++) { if (messageBuffer[i] != message.Data[i]) Assert.Fail("Message contents is not same"); } }
private void IntialiseStateObjects() { startCommandIndex = 0; currentRdapMessage = new RdapMessage(); currentRdapMessageDataLength = 0; }
public void ShouldAbleToReadRDAMessageFromStream() { var fifoStream = new FifoStream(); var desktopMessage = new RdapMessage( RdapMessageType.DesktopWindowImageFrameMessage, new byte[] { 1, 4, 0, 0, 0, 4, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 40, 0, 0, 0, 50, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 40, 0, 0, 0, 50, 0, 0, 0 } ); var mouseClickEventMessage = new RdapMessage( RdapMessageType.MouseClickEventMessage, new byte[] { 2, 56, 0, 0, 0, 67, 0, 0, 0 } ); var bytesToWrite1 = desktopMessage.ToBytes(); var bytesToWrite2 = mouseClickEventMessage.ToBytes(); fifoStream.Write(bytesToWrite1, 0, bytesToWrite1.Length); fifoStream.Write(bytesToWrite2, 0, bytesToWrite2.Length); var parser = new RdapMessageParser(fifoStream); RdapMessage desktopMessageOutput; parser.TryParseMessage(out desktopMessageOutput); Assert.AreEqual(RdapMessageType.DesktopWindowImageFrameMessage, desktopMessageOutput.MessageType); Assert.AreEqual(97, desktopMessageOutput.Data.Length); RdapMessage mouseClickEventMessageOutput; parser.TryParseMessage(out mouseClickEventMessageOutput); Assert.AreEqual(RdapMessageType.MouseClickEventMessage, mouseClickEventMessageOutput.MessageType); Assert.AreEqual(9, mouseClickEventMessageOutput.Data.Length); }