public static void Encode(XdrDataOutputStream stream, Memo encodedMemo) { stream.WriteInt((int)encodedMemo.Discriminant.InnerValue); switch (encodedMemo.Discriminant.InnerValue) { case MemoType.MemoTypeEnum.MEMO_NONE: break; case MemoType.MemoTypeEnum.MEMO_TEXT: stream.WriteString(encodedMemo.Text); break; case MemoType.MemoTypeEnum.MEMO_ID: Uint64.Encode(stream, encodedMemo.Id); break; case MemoType.MemoTypeEnum.MEMO_HASH: Hash.Encode(stream, encodedMemo.Hash); break; case MemoType.MemoTypeEnum.MEMO_RETURN: Hash.Encode(stream, encodedMemo.RetHash); break; } }
public void XdrInputStreamPerformanceTest(int rounds, int iterations) { var testArray = new byte[32]; Array.Fill(testArray, (byte)100); var stream = new XdrDataOutputStream(); for (var i = 0; i < iterations; i++) { stream.WriteInt(435); stream.WriteString("oiewurouqwe"); stream.WriteVarOpaque(32, testArray); } var serialized = stream.ToArray(); PerfCounter.MeasureTime(() => { for (var r = 0; r < rounds; r++) { var reader = new XdrDataInputStream(serialized); for (var i = 0; i < iterations; i++) { reader.ReadInt(); reader.ReadString(); reader.ReadVarOpaque(32); } } }, () => $"({rounds} rounds, {iterations} iterations)"); }
public static void Encode(XdrDataOutputStream stream, Hello encodedHello) { Uint32.Encode(stream, encodedHello.LedgerVersion); Uint32.Encode(stream, encodedHello.OverlayVersion); Uint32.Encode(stream, encodedHello.OverlayMinVersion); Hash.Encode(stream, encodedHello.NetworkID); stream.WriteString(encodedHello.VersionStr); stream.WriteInt(encodedHello.ListeningPort); NodeID.Encode(stream, encodedHello.PeerID); AuthCert.Encode(stream, encodedHello.Cert); Uint256.Encode(stream, encodedHello.Nonce); }
public static string BackAndForthXdrStreaming(string inputString) { var xdrOutputStream = new XdrDataOutputStream(); xdrOutputStream.WriteString(inputString); var xdrByteOutput = xdrOutputStream.ToArray(); //XDR back to string var xdrInputStream = new XdrDataInputStream(xdrByteOutput); var outputString = xdrInputStream.ReadString(); return(outputString); }
public static void Encode(XdrDataOutputStream stream, Error encodedError) { ErrorCode.Encode(stream, encodedError.Code); stream.WriteString(encodedError.Msg); }
public static void Encode(XdrDataOutputStream stream, String64 encodedString64) { stream.WriteString(encodedString64.InnerValue); }
public void XdrCompatibilityTest() { var testArray = new byte[32]; Array.Fill(testArray, (byte)100); //forward compatibility var legacyXdrSerializationStream = new XdrDataOutputStream(); legacyXdrSerializationStream.WriteInt(435); legacyXdrSerializationStream.WriteUInt(435); legacyXdrSerializationStream.WriteLong(43546345634657565L); legacyXdrSerializationStream.WriteDoubleArray(new double[] { 435.15, 64656.11 }); legacyXdrSerializationStream.WriteString("oiewurouqwe"); legacyXdrSerializationStream.WriteVarOpaque(32, testArray); var bufferReader = new XdrBufferReader(legacyXdrSerializationStream.ToArray()); Assert.AreEqual(435, bufferReader.ReadInt32()); Assert.AreEqual((uint)435, bufferReader.ReadUInt32()); Assert.AreEqual(43546345634657565L, bufferReader.ReadInt64()); { var length = bufferReader.ReadInt32(); var value = new double[length]; for (var i = 0; i < length; i++) { value[i] = bufferReader.ReadDouble(); } Assert.AreEqual(new double[] { 435.15, 64656.11 }, value); } Assert.AreEqual("oiewurouqwe", bufferReader.ReadString()); Assert.AreEqual(testArray, bufferReader.ReadVariable()); using var streamReader = new XdrStreamReader(new MemoryStream(legacyXdrSerializationStream.ToArray())); Assert.AreEqual(435, streamReader.ReadInt32()); Assert.AreEqual((uint)435, streamReader.ReadUInt32()); Assert.AreEqual(43546345634657565L, streamReader.ReadInt64()); { var length = streamReader.ReadInt32(); var value = new double[length]; for (var i = 0; i < length; i++) { value[i] = streamReader.ReadDouble(); } Assert.AreEqual(new double[] { 435.15, 64656.11 }, value); } Assert.AreEqual("oiewurouqwe", streamReader.ReadString()); Assert.AreEqual(testArray, streamReader.ReadVariable()); //backward compatibility var bufferWriter = new XdrBufferWriter(); bufferWriter.WriteInt32(435); bufferWriter.WriteUInt32((uint)435); { var arr = new double[] { 435.15, 64656.11 }; bufferWriter.WriteInt32(arr.Length); foreach (var d in arr) { bufferWriter.WriteDouble(d); } } bufferWriter.WriteString("oiewurouqwe"); bufferWriter.WriteVariable(testArray); var legacyXdrReader = new XdrDataInputStream(bufferWriter.ToArray()); Assert.AreEqual(435, legacyXdrReader.ReadInt()); Assert.AreEqual((uint)435, legacyXdrReader.ReadUInt()); Assert.AreEqual(new double[] { 435.15, 64656.11 }, legacyXdrReader.ReadDoubleArray()); Assert.AreEqual("oiewurouqwe", legacyXdrReader.ReadString()); Assert.AreEqual(testArray, legacyXdrReader.ReadVarOpaque(32)); using var memoryStream = new MemoryStream(); var streamWriter = new XdrStreamWriter(memoryStream); streamWriter.WriteInt32(435); streamWriter.WriteUInt32((uint)435); { var arr = new double[] { 435.15, 64656.11 }; streamWriter.WriteInt32(arr.Length); foreach (var d in arr) { streamWriter.WriteDouble(d); } } streamWriter.WriteString("oiewurouqwe"); streamWriter.WriteVariable(testArray); var res = memoryStream.ToArray(); var reference = bufferWriter.ToArray(); CollectionAssert.AreEqual(reference, res); }