public void StreamDataExchange_OneWayStream() { bool success = false; bool completed = false; string message = GenerateMessage(); var stream = new MemoryStream(); var reading = new Task(async delegate() { try { byte[] data = null; while (data == null) { data = await StreamHandler.StreamReaderAsync(stream); Thread.Sleep(5); } string receivedMessage = BinaryHandler.FromByteArray <string>(data); success = receivedMessage.Equals(message); completed = true; } catch (Exception ex) { Assert.Fail(ex.Message); return; } }); var writing = new Task(async delegate() { await StreamHandler.StreamWriterAsync( stream, StreamChanelMode.Oneway, BinaryHandler.ToByteArray(message)); }); reading.Start(); writing.Start(); while (!completed) { Thread.Sleep(5); } stream.Dispose(); Assert.IsTrue(success); }
public void Serizlize() { byte[] binary; try { binary = BinaryHandler.ToByteArray(new BlobType()); } catch (Exception ex) { Assert.Fail(ex.Message); return; } Assert.IsTrue(binary != null && binary.Length > 0); }
public void Deserialize() { byte[] binary; BlobType blob; try { binary = BinaryHandler.ToByteArray(new BlobType() { s = "DeserTest" }); blob = BinaryHandler.FromByteArray <BlobType>(binary); } catch (Exception ex) { Assert.Fail(ex.Message); return; } Assert.IsTrue(blob != null && blob.s.Equals("DeserTest")); }
/// <summary> /// Writing asynchronicly binary data to stream. /// </summary> /// <param name="stream">Target stream.</param> /// <param name="nonBinaryData">Non binary object that would be shared via stream.</param> /// <returns>Asynchronous operation of data writing.</returns> public static async Task StreamWriterAsync(PipeStream stream, object nonBinaryData) { //var bs = BinaryHandler.ToMemoryStream(nonBinaryData); //// Write header. //await stream.WriteAsync(BitConverter.GetBytes(bs.Length), 0, 4); //await bs.CopyToAsync(stream); //await stream.FlushAsync(); // Convert data to binary format. byte[] data = BinaryHandler.ToByteArray(nonBinaryData); // Write header. await stream.WriteAsync(BitConverter.GetBytes(data.Length), 0, 4); //// Write data. await stream.WriteAsync(data, 0, data.Length); // Send data to device. await stream.FlushAsync(); }