Exemplo n.º 1
0
        public void TestVectorAnyObject()
        {
            var writer = new Amf3Writer();
            var reader = new Amf3Reader();

            reader.RegisterTypedObject <TestCls>();

            var t = new TestCls()
            {
                T1 = 3.3,
                T2 = "abc",
                T3 = "abd",
                t4 = new Vector <int>()
                {
                    2000, 30000, 400000
                }
            };

            using (var sc = new SerializationContext())
            {
                var v = new Vector <object>()
                {
                    t, 3.2, 4.5
                };
                writer.WriteBytes(v, sc);
                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                reader.TryGetVectorObject(buffer, out var readVal, out var consumed);

                Assert.IsTrue(readVal.GetType().GetGenericArguments().First() == typeof(object));
                Assert.AreEqual(v, readVal);
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 2
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(programId);
     writer.Write(vertexProgram);
     writer.Write(fragmentProgram);
 }
Exemplo n.º 3
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(indexBufferId);
     writer.Write(firstIndex);
     writer.Write(numTriangles);
 }
Exemplo n.º 4
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(count);
     writer.Write(dwordsPerVertex);
     writer.Write(resultId);
 }
Exemplo n.º 5
0
        public void TestObject()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            var obj = new AmfObject
            {
                { "t1", (uint)2 },
                { "t2", 3.1 }
            };

            obj.AddDynamic("t3", new Vector <int>()
            {
                2, 3, 4
            });

            using (var sc = new SerializationContext())
            {
                writer.WriteBytes(obj, sc);
                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetObject(buffer, out var readVal, out var consumed));
                var readObj = (AmfObject)readVal;
                Assert.AreEqual(readObj.Fields["t1"], (uint)2);
                Assert.AreEqual(readObj.Fields["t2"], 3.1);
                Assert.AreEqual(readObj.DynamicFields["t3"], new Vector <int>()
                {
                    2, 3, 4
                });
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 6
0
        public void TestIExternalizable()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            reader.RegisterExternalizable <iexternalizable>();

            var ext = new iexternalizable()
            {
                v1 = 0.1,
                v2 = 1
            };

            using (var sc = new SerializationContext())
            {
                writer.WriteBytes(ext, sc);
                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetObject(buffer, out var readVal, out var consumed));
                var val = (iexternalizable)readVal;

                Assert.AreEqual(val.v1, ext.v1);
                Assert.AreEqual(val.v2, ext.v2);
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 7
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(name);
     writer.Write(span);
     writer.Write(delta);
 }
Exemplo n.º 8
0
        public void TestArray()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            var arr = new Amf3Array();

            arr["a"] = (uint)1;
            arr["b"] = 2.1;
            arr["d"] = null;

            arr.DensePart.Add(1);
            arr.DensePart.Add(1.2);

            using (var sc = new SerializationContext())
            {
                writer.WriteBytes(arr, sc);

                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetArray(buffer, out var readVal, out var consumed));
                Assert.AreEqual(arr["a"], readVal["a"]);
                Assert.AreEqual(arr["b"], readVal["b"]);
                Assert.AreEqual(arr["d"], readVal["d"]);
                Assert.AreEqual(1.0, readVal[0]);
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 9
0
        public void TestObject3()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            reader.RegisterTypedObject <TestCls>();

            var t = new TestCls()
            {
                T1 = 3.3,
                T2 = "abc",
                T3 = "abd",
                t4 = new Vector <int>()
                {
                    2000, 30000, 400000
                }
            };

            using (var sc = new SerializationContext())
            {
                writer.WriteBytes(t, sc);
                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetObject(buffer, out var readVal, out var consumed));
                Assert.AreEqual(t, readVal);
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 10
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(programType);
     writer.Write(firstRegister);
     writer.Write(data);
     writer.Write(numRegisters);
 }
Exemplo n.º 11
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(indexBufferId);
     writer.Write(source);
     writer.Write(offset);
     writer.Write(count);
 }
Exemplo n.º 12
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(xmin);
     writer.Write(xmax);
     writer.Write(ymin);
     writer.Write(ymax);
 }
Exemplo n.º 13
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(index);
     writer.Write(vertexBufferId);
     writer.Write(bufferOffset);
     writer.Write(format);
 }
Exemplo n.º 14
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(vertexBufferId);
     writer.Write(source);
     writer.Write(startVertex);
     writer.Write(countVertices);
 }
Exemplo n.º 15
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(time);
     writer.Write(id);
     writer.Write(size);
     writer.Write(stackid);
 }
Exemplo n.º 16
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(x);
     writer.Write(y);
     writer.Write(w);
     writer.Write(h);
 }
Exemplo n.º 17
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(width);
     writer.Write(height);
     writer.Write(antialias);
     writer.Write(depthstencil);
 }
Exemplo n.º 18
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(time);
     writer.Write(numticks);
     writer.Write(ticktimes);
     writer.Write(callstack);
 }
Exemplo n.º 19
0
        private void TestInt32(byte[] expected, int number)
        {
            MemoryStream stream = new MemoryStream();
            Amf3Writer   writer = new Amf3Writer(stream);

            writer.TypelessWrite(number);

            CollectionAssert.AreEqual(expected, stream.ToArray());
        }
Exemplo n.º 20
0
 private static void FlushLog(Amf3Writer output)
 {
     // write all log entries
     for (int i = 0; i < sLogCount; i++)
     {
         WriteLogEntry(ref sLog[i], ref sLogTimeBase, output);
     }
     // clear log
     sLogCount = 0;
 }
Exemplo n.º 21
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(width);
     writer.Write(height);
     writer.Write(format);
     writer.Write(optimizeForRenderToTexture);
     writer.Write(streamingLevels);
     writer.Write(resultId);
 }
Exemplo n.º 22
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(xmin);
     writer.Write(xmax);
     writer.Write(ymin);
     writer.Write(ymax);
     writer.Write(name);
     writer.Write(symbolname);
     writer.Write(modified);
 }
Exemplo n.º 23
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(red);
     writer.Write(green);
     writer.Write(blue);
     writer.Write(alpha);
     writer.Write(depth);
     writer.Write(stencil);
     writer.Write(mask);
 }
Exemplo n.º 24
0
 public void Serialize(Amf3Writer writer)
 {
     writer.WriteObjectHeader(ClassDef);
     writer.Write(textureId);
     writer.Write(srcdata);
     writer.Write(srcbytesperline);
     writer.Write(srcformat);
     writer.Write(srccompressedformat);
     writer.Write(srcw);
     writer.Write(srch);
     writer.Write(inverted);
     writer.Write(miplevel);
 }
Exemplo n.º 25
0
        private static void WriteLogEntry(ref LogEntry entry, ref int timeBase, Amf3Writer output)
        {
            if (entry.Span == LogValue)
            {
                // emit Value
                output.WriteObjectHeader(Protocol.Value.ClassDef);
                output.Write(entry.Name);
                output.Write(entry.Value);
            }
            else if (entry.Span == LogTime)
            {
                // emit Time
                int time  = ToMicroSeconds(entry.Time);
                int delta = time - timeBase;
                timeBase = time;

                output.WriteObjectHeader(Protocol.Time.ClassDef);
                output.Write(entry.Name);
                output.Write(delta);
            }
            else
            {
                // emit Span or SpanValue
                // convert times to microseconds for output
                int time      = ToMicroSeconds(entry.Time);
                int beginTime = ToMicroSeconds(entry.Time - entry.Span);

                // compute span and delta in microseconds
                // this must be done this exact way to preserve rounding errors across spans
                // if not, the server may produce an error if a span exceeds its expected length
                int span  = time - beginTime;
                int delta = time - timeBase;
                timeBase = time;

                if (entry.Value == null)
                {
                    output.WriteObjectHeader(Protocol.Span.ClassDef);
                    output.Write(entry.Name);
                    output.Write(span);
                    output.Write(delta);
                }
                else
                {
                    output.WriteObjectHeader(Protocol.SpanValue.ClassDef);
                    output.Write(entry.Name);
                    output.Write(span);
                    output.Write(delta);
                    output.Write(entry.Value);
                }
            }
        }
Exemplo n.º 26
0
        public void TestUndefined()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            using (var sc = new SerializationContext())
            {
                writer.WriteBytes(new Harmonic.Networking.Amf.Common.Undefined(), sc);
                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetUndefined(buffer, out var readVal, out var consumed));
                Assert.IsNotNull(readVal);
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 27
0
        public void TestNull()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            using (var sc = new SerializationContext())
            {
                writer.WriteBytes((object)null, sc);
                var buffer = new byte[sc.MessageLength];

                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetNull(buffer, out var readVal, out var consumed));
                Assert.IsNull(readVal);
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 28
0
        public void TestByteArray()
        {
            var reader = new Amf3Reader();
            var writer = new Amf3Writer();

            using (var sc = new SerializationContext())
            {
                var arr = new byte[] { 1, 2, 3 };
                writer.WriteBytes(arr, sc);

                var buffer = new byte[sc.MessageLength];
                sc.GetMessage(buffer);

                Assert.IsTrue(reader.TryGetByteArray(buffer, out var readVal, out var consumed));
                Assert.IsTrue(arr.SequenceEqual(readVal));
                Assert.AreEqual(buffer.Length, consumed);
            }
        }
Exemplo n.º 29
0
        public Log(Stream stream, bool autoCloseStream = true, int capacity = 1 * 1024)
        {
            mStream          = stream;
            mAutoCloseStream = autoCloseStream;

            // allocate log buffer (this can grow)
            mLog   = new LogEntry[capacity];
            mCount = 0;

            // create AMF writer from stream
            mOutput = new Amf3Writer(stream);
            mOutput.TrackArrayReferences = false;

            // set log start time
            mLogStartTime = Stopwatch.GetTimestamp();

            // set log timebase (in microseconds)
            mTimeBase = ToMicroSeconds(mLogStartTime);
        }
Exemplo n.º 30
0
        public void TestString()
        {
            var writer = new Amf3Writer();
            var reader = new Amf3Reader();

            using (var sc = new SerializationContext())
            {
                for (int i = 0; i < 1000; i++)
                {
                    var str = Guid.NewGuid().ToString();
                    writer.WriteBytes(str, sc);
                    var buffer = new byte[sc.MessageLength];
                    sc.GetMessage(buffer);

                    Assert.IsTrue(reader.TryGetString(buffer, out var readVal, out var consumed));
                    Assert.AreEqual(str, readVal);
                    Assert.AreEqual(buffer.Length, consumed);
                }
            }
        }