public void Example() { var context = new FudgeContext(); // Create a message var msg = new FudgeMsg(new Field("name", "Eric"), new Field("age", 14), new Field("address", new Field("line1", "29 Acacia Road"), new Field("city", "London"))); // Serialise it var stream = new MemoryStream(); context.Serialize(msg, stream); // Get the raw bytes var bytes = stream.ToArray(); // Deserialise it var msg2 = context.Deserialize(bytes).Message; // Get some data int age = msg2.GetInt("age") ?? 0; }
private FudgeMsg CycleMessage(FudgeMsg msg, FudgeContext context, short?taxonomy) { MemoryStream outputStream = new MemoryStream(); context.Serialize(msg, taxonomy, outputStream); byte[] content = outputStream.ToArray(); MemoryStream inputStream = new MemoryStream(content); FudgeMsgEnvelope outputMsgEnvelope = context.Deserialize(inputStream); Assert.NotNull(outputMsgEnvelope); Assert.NotNull(outputMsgEnvelope.Message); return(outputMsgEnvelope.Message); }
protected static FudgeMsg CycleMessage(FudgeMsg msg, string filename) //throws IOException { Assembly assembly = Assembly.GetExecutingAssembly(); Stream stream = assembly.GetManifestResourceStream("Fudge.Tests.Resources." + filename); BinaryReader referenceReader = new FudgeBinaryReader(stream); Stream memoryStream = new MemoryStream(); // set the last parameter of the following line to true to see the full diff report between streams and not fail at the first difference. BinaryWriter bw = new StreamComparingBinaryNBOWriter(referenceReader, memoryStream, false); fudgeContext.Serialize(msg, bw); bw.Close(); // Reload as closed above stream = assembly.GetManifestResourceStream("Fudge.Tests.Resources." + filename); FudgeMsg outputMsg = fudgeContext.Deserialize(stream).Message; // Load the message from the resource rather than our output return(outputMsg); }
private FudgeMsg CycleMessage(FudgeMsg msg, FudgeContext context, short? taxonomy) { MemoryStream outputStream = new MemoryStream(); context.Serialize(msg, taxonomy, outputStream); byte[] content = outputStream.ToArray(); MemoryStream inputStream = new MemoryStream(content); FudgeMsgEnvelope outputMsgEnvelope = context.Deserialize(inputStream); Assert.NotNull(outputMsgEnvelope); Assert.NotNull(outputMsgEnvelope.Message); return outputMsgEnvelope.Message; }
private static int FudgeCycle(bool useNames, bool useOrdinals) { MemoryStream outputStream = new MemoryStream(); var bw = new FudgeBinaryWriter(outputStream); SmallFinancialTick tick = new SmallFinancialTick(); FudgeMsg msg = new FudgeMsg(fudgeContext); if (useNames && useOrdinals) { msg.Add("ask", (short)1, tick.Ask); msg.Add("askVolume", (short)2, tick.AskVolume); msg.Add("bid", (short)3, tick.Bid); msg.Add("bidVolume", (short)4, tick.BidVolume); msg.Add("ts", (short)5, tick.Timestamp); } else if (useNames) { msg.Add("ask", tick.Ask); msg.Add("askVolume", tick.AskVolume); msg.Add("bid", tick.Bid); msg.Add("bidVolume", tick.BidVolume); msg.Add("ts", tick.Timestamp); } else if (useOrdinals) { msg.Add(1, tick.Ask); msg.Add(2, tick.AskVolume); msg.Add(3, tick.Bid); msg.Add(4, tick.BidVolume); msg.Add(5, tick.Timestamp); } fudgeContext.Serialize(msg, bw); byte[] data = outputStream.ToArray(); MemoryStream inputstream = new MemoryStream(data); var br = new FudgeBinaryReader(inputstream); msg = fudgeContext.Deserialize(inputstream).Message; tick = new SmallFinancialTick(); if (useOrdinals) { tick.Ask = msg.GetDouble(1).Value; tick.AskVolume = msg.GetDouble(2).Value; tick.Bid = msg.GetDouble(3).Value; tick.BidVolume = msg.GetDouble(4).Value; tick.Timestamp = msg.GetLong(5).Value; } else if (useNames) { tick.Ask = msg.GetDouble("ask").Value; tick.AskVolume = msg.GetDouble("askVolume").Value; tick.Bid = msg.GetDouble("bid").Value; tick.BidVolume = msg.GetDouble("bidVolume").Value; tick.Timestamp = msg.GetLong("ts").Value; } else { throw new InvalidOperationException("Names or ordinals, pick at least one."); } return(data.Length); }