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 }));
        }