public void ReceiveMessage(MockClient client, byte[] bytesReceived) { var total = new MemoryStream(bytesReceived); var reader = new BinaryReader(total); var messageLength = reader.ReadNumberMostlyBelow255(); var messageBytes = reader.ReadBytes(messageLength); foreach (var connection in connectedClients.OfType<MockConnection>()) if (connection.Client == client) OnClientDataReceived(connection, messageBytes.ToBinaryData()); }
private static IDictionary LoadDictionary(IDictionary data, BinaryReader reader) { var count = reader.ReadNumberMostlyBelow255(); data.Clear(); if (count == 0) return data; var valuesType = (BinaryDataSaver.ArrayElementType)reader.ReadByte(); if (valuesType == BinaryDataSaver.ArrayElementType.AllTypesAreDifferent) LoadDictionaryWhereAllValuesAreNotTheSameType(data, reader, count); else LoadDictionaryWhereAllValuesAreTheSameType(data, reader, count); return data; }
private static object LoadArray(IList list, Type arrayType, BinaryReader reader) { var count = reader.ReadNumberMostlyBelow255(); if (list == null) list = Activator.CreateInstance(arrayType, new object[] { count }) as IList; if (count == 0) return list; var arrayElementType = (BinaryDataSaver.ArrayElementType)reader.ReadByte(); if (arrayElementType == BinaryDataSaver.ArrayElementType.AllTypesAreNull) return list; if (arrayElementType == BinaryDataSaver.ArrayElementType.AllTypesAreDifferent) LoadArrayWhereAllElementsAreNotTheSameType(list, arrayType, reader, count); else { Type elementType = arrayElementType == BinaryDataSaver.ArrayElementType.AllTypesAreTypes ? typeof(Type) : BinaryDataExtensions.GetTypeFromShortNameOrFullNameIfNotFound(reader.ReadString()); LoadArrayWhereAllElementsAreTheSameType(list, arrayType, reader, count, elementType); } return list; }
private static char[] LoadCharArray(BinaryReader reader) { int count = reader.ReadNumberMostlyBelow255(); return reader.ReadChars(count); }
private static byte[] LoadByteArray(BinaryReader reader) { int length = reader.ReadNumberMostlyBelow255(); return reader.ReadBytes(length); }
private static MemoryStream LoadMemoryStream(BinaryReader reader) { int length = reader.ReadNumberMostlyBelow255(); return new MemoryStream(reader.ReadBytes(length)); }
public void WriteAndReadNumberMostlyBelow255WithANumberOver255() { var data = new MemoryStream(); var writer = new BinaryWriter(data); const int NumberOver255 = 123456; writer.WriteNumberMostlyBelow255(NumberOver255); data.Position = 0; var reader = new BinaryReader(data); Assert.AreEqual(NumberOver255, reader.ReadNumberMostlyBelow255()); }