public static byte[] PackRpcValues(params RpcValue[] values) { WireEncoder enc = new WireEncoder(); foreach (var value in values) { enc.WriteValue(value); } return enc.Buffer; }
public static byte[] PackRpcDefinition(NtRpcDefinition def, out UIntPtr packedLen) { WireEncoder enc = new WireEncoder(); enc.Write8((byte)def.Version); enc.WriteString(def.Name); int paramsSize = def.ParamsArray.Length; if (paramsSize > 0xff) paramsSize = 0xff; enc.Write8((byte)paramsSize); for (int i = 0; i < paramsSize; ++i) { enc.WriteType(def.ParamsArray[i].Value.Type); enc.WriteString(def.ParamsArray[i].Name); enc.WriteValue(def.ParamsArray[i].Value); } int resultsSize = def.ResultsArray.Length; if (resultsSize > 0xff) resultsSize = 0xff; enc.Write8((byte)resultsSize); for (int i = 0; i < resultsSize; ++i) { enc.WriteType(def.ResultsArray[i].Type); enc.WriteString(def.ResultsArray[i].Name); } packedLen = (UIntPtr)enc.Buffer.Length; return enc.Buffer; }
public void TestWriteStringValue() { WireEncoder e = new WireEncoder(); e.WriteValue(v_string); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(6)); Assert.That(e.Buffer, Is.EquivalentTo(new byte[] { 0x05, (byte)'h', (byte)'e', (byte)'l', (byte)'l', (byte)'o' })); }
public void TestWriteValueNull() { WireEncoder e = new WireEncoder(); e.WriteValue(null); Assert.That(e.Buffer.Length, Is.EqualTo(0)); Assert.That(e.Error, Is.Not.Null); }
public void TestWriteStringArrayValue() { WireEncoder e = new WireEncoder(); e.WriteValue(v_stringArray); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(1 + +6 + 8)); Assert.That(e.Buffer, Is.EquivalentTo(new byte[] { 0x02, 0x05, (byte)'h', (byte)'e', (byte)'l', (byte)'l', (byte)'o', 0x07, (byte)'g', (byte)'o', (byte)'o', (byte)'d', (byte)'b', (byte)'y', (byte)'e' })); e.Reset(); e.WriteValue(v_stringArrayBig); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(1 + 255 * 2)); Assert.That(new[] { e.Buffer[0], e.Buffer[1] }, Is.EquivalentTo(new byte[] { 0xff, 0x01 })); }
public void TestWriteDoubleValue() { WireEncoder e = new WireEncoder(); e.WriteValue(v_double); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(8)); Assert.That(e.Buffer, Is.EquivalentTo(new byte[] { 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })); }
public void TestWriteDoubleArrayValue() { WireEncoder e = new WireEncoder(); e.WriteValue(v_doubleArray); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(1 + 2 * 8)); Assert.That(e.Buffer, Is.EquivalentTo(new byte[] { 0x02, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })); e.Reset(); e.WriteValue(v_doubleArrayBig); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(1 + 255 * 8)); Assert.That(new[] { e.Buffer[0], e.Buffer[1] }, Is.EquivalentTo(new byte[] { 0xff, 0x00 })); }
public void TestWriteBooleanValue() { WireEncoder e = new WireEncoder(); e.WriteValue(v_boolean); var v_false = RpcValue.MakeBoolean(false); e.WriteValue(v_false); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(2)); Assert.That(e.Buffer, Is.EquivalentTo(new byte[] { 0x01, 0x00 })); }
public void TestWriteBooleanArrayValue() { WireEncoder e = new WireEncoder(); e.WriteValue(v_boolArray); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(1 + 3)); Assert.That(e.Buffer, Is.EquivalentTo(new byte[] { 0x03, 0x00, 0x01, 0x00 })); e.Reset(); e.WriteValue(v_boolArrayBig); Assert.That(e.Error, Is.Null); Assert.That(e.Buffer.Length, Is.EqualTo(1 + 255)); Assert.That(new[] { e.Buffer[0], e.Buffer[1] }, Is.EquivalentTo(new byte[] { 0xff, 0x00 })); }