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); } }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(programId); writer.Write(vertexProgram); writer.Write(fragmentProgram); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(indexBufferId); writer.Write(firstIndex); writer.Write(numTriangles); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(count); writer.Write(dwordsPerVertex); writer.Write(resultId); }
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); } }
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); } }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(name); writer.Write(span); writer.Write(delta); }
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); } }
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); } }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(programType); writer.Write(firstRegister); writer.Write(data); writer.Write(numRegisters); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(indexBufferId); writer.Write(source); writer.Write(offset); writer.Write(count); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(xmin); writer.Write(xmax); writer.Write(ymin); writer.Write(ymax); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(index); writer.Write(vertexBufferId); writer.Write(bufferOffset); writer.Write(format); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(vertexBufferId); writer.Write(source); writer.Write(startVertex); writer.Write(countVertices); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(time); writer.Write(id); writer.Write(size); writer.Write(stackid); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(x); writer.Write(y); writer.Write(w); writer.Write(h); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(width); writer.Write(height); writer.Write(antialias); writer.Write(depthstencil); }
public void Serialize(Amf3Writer writer) { writer.WriteObjectHeader(ClassDef); writer.Write(time); writer.Write(numticks); writer.Write(ticktimes); writer.Write(callstack); }
private void TestInt32(byte[] expected, int number) { MemoryStream stream = new MemoryStream(); Amf3Writer writer = new Amf3Writer(stream); writer.TypelessWrite(number); CollectionAssert.AreEqual(expected, stream.ToArray()); }
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; }
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); }
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); }
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); }
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); }
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); } } }
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); } }
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); } }
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); } }
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); }
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); } } }