public VisualizerData(object o, Config?config = null)
 {
     Config = config ?? new Config();
     if (!Config.Path.IsNullOrWhitespace())
     {
         o = ((Expression)ResolvePath(o, Config.Path)).ExtractValue();
     }
     Source = WriterBase.Create(o, Config.Formatter, Config.Language, out var pathSpans).ToString();
     Root   = new ExpressionNodeData(o, ("", ""), this, pathSpans, false);
 }
 public void Serialize(WriterBase writer, object graph, Type expectedType)
 {
     try
     {
         GraphWriter graphWriter = new GraphWriter(this.TypeBinder, writer, this.SurrogateSelector, this.Context, this.WellKnownContents);
         graphWriter.Serialize(graph, expectedType);
     }
     catch (Exception inner)
     {
         throw new SerializationException(inner.Message, inner);
     }
 }
        internal static WriterBase WritePrimitive(WriterBase writer, object primitiveObj, TypeCode code)
        {
            switch (code)
            {
            case TypeCode.Boolean:
                return(writer.Write((Boolean)primitiveObj));

            case TypeCode.Byte:
                return(writer.Write((Byte)primitiveObj));

            case TypeCode.Char:
                return(writer.Write((Char)primitiveObj));

            case TypeCode.DateTime:
                return(writer.Write((DateTime)primitiveObj));

            case TypeCode.Decimal:
                return(writer.Write((Decimal)primitiveObj));

            case TypeCode.Double:
                return(writer.Write((Double)primitiveObj));

            case TypeCode.Int16:
                return(writer.Write((Int16)primitiveObj));

            case TypeCode.Int32:
                return(writer.Write((Int32)primitiveObj));

            case TypeCode.Int64:
                return(writer.Write((Int64)primitiveObj));

            case TypeCode.SByte:
                return(writer.Write((SByte)primitiveObj));

            case TypeCode.Single:
                return(writer.Write((Single)primitiveObj));

            case TypeCode.String:
                return(writer.Write((String)primitiveObj));

            case TypeCode.UInt16:
                return(writer.Write((UInt16)primitiveObj));

            case TypeCode.UInt32:
                return(writer.Write((UInt32)primitiveObj));

            case TypeCode.UInt64:
                return(writer.Write((UInt64)primitiveObj));
            }
            return(writer);
        }
Пример #4
0
        public void ReaderBase_ReadHeader_InvalidDataExceptions()
        {
            var stream = new MemoryStream();
            var writer = new WriterBase(stream, SerializationPolicy.Default);

            writer.WriteHeader();
            var bytes = stream.ToArray();

            // AD 1.0.0.0 ...
            bytes[0] = b('A');
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes), SerializationPolicy.Default).ReadHeader());
            bytes[0] = b('B');

            // BD 0.9.0.0 ...
            bytes[2] = 0;
            bytes[6] = 9;
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes), SerializationPolicy.Default).ReadHeader());
            bytes[2] = 1;
            bytes[6] = 0;
        }
Пример #5
0
 internal GraphWriter(TypeBinder binder, WriterBase writer, ISurrogateSelector selector, StreamingContext context, SerializationContents contents)
 {
     this._binder         = binder;
     this._objIdGenerator = new ObjectIDGenerator();
     if (contents == null)
     {
         this._writtenAssemblies = new List <string>();
         this._writtenTypes      = new List <string>();
         this._stringContents    = new List <string>();
     }
     else
     {
         this._writtenAssemblies = new List <string>(contents._AssemblyContents);
         this._writtenTypes      = new List <string>(contents._TypeContents);
         this._stringContents    = new List <string>(contents._StringContents);
     }
     this._selector = selector;
     this._writer   = writer;
     this._context  = context;
 }
Пример #6
0
        public void ReaderBase_ReadHeader_MissingHeaderExceptions()
        {
            var stream = new MemoryStream();
            var writer = new WriterBase(stream, SerializationPolicy.Default);

            writer.WriteHeader();
            var bytes = stream.ToArray();

            // B
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes.Take(1).ToArray()), SerializationPolicy.Default).ReadHeader());

            // BD 1.0
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes.Take(10).ToArray()), SerializationPolicy.Default).ReadHeader());

            // BD 1.0.0.0
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes.Take(18).ToArray()), SerializationPolicy.Default).ReadHeader());

            // BD 1.0.0.0 0 1.0
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes.Take(30).ToArray()), SerializationPolicy.Default).ReadHeader());
        }
Пример #7
0
        public void ReaderBase_ReadFooter_InvalidDataExceptions()
        {
            var stream = new MemoryStream();
            var writer = new WriterBase(stream, SerializationPolicy.Default);

            writer.Dispose();
            var bytes = stream.ToArray();

            bytes[0] = 0xDA;
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes), SerializationPolicy.Default).ReadFooter());
            bytes[0] = 0xDE;

            bytes[1] = 0xAE;
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes), SerializationPolicy.Default).ReadFooter());
            bytes[1] = 0xAD;

            bytes[2] = 0xDA;
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes), SerializationPolicy.Default).ReadFooter());
            bytes[2] = 0xDE;

            bytes[3] = 0xAE;
            Assert.ThrowsException <InvalidDataException>(() => new ReaderBase(new MemoryStream(bytes), SerializationPolicy.Default).ReadFooter());
            bytes[3] = 0xAD;
        }
 public void Serialize(Stream serializationStream, object graph, Type expectedType)
 {
     this.Serialize(WriterBase.StreamWriter(serializationStream), graph, expectedType);
 }
Пример #9
0
 internal virtual void Perform(WriterBase writer)
 {
 }
Пример #10
0
 /// <summary>Register service method with a service binder with or without implementation. Useful when customizing the  service binding logic.
 /// Note: this method is part of an experimental API that can change or be removed without any prior notice.</summary>
 /// <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
 /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
 public static void BindService(grpc::ServiceBinderBase serviceBinder, WriterBase serviceImpl)
 {
     serviceBinder.AddMethod(__Method_Send, serviceImpl == null ? null : new grpc::UnaryServerMethod <global::ActorPlayground.Remote.MessageEnvelope, global::ActorPlayground.Remote.MessageEnvelope>(serviceImpl.Send));
     serviceBinder.AddMethod(__Method_Emit, serviceImpl == null ? null : new grpc::UnaryServerMethod <global::ActorPlayground.Remote.MessageEnvelope, global::ActorPlayground.Remote.Unit>(serviceImpl.Emit));
 }
Пример #11
0
 /// <summary>Creates service definition that can be registered with a server</summary>
 /// <param name="serviceImpl">An object implementing the server-side handling logic.</param>
 public static grpc::ServerServiceDefinition BindService(WriterBase serviceImpl)
 {
     return(grpc::ServerServiceDefinition.CreateBuilder()
            .AddMethod(__Method_Send, serviceImpl.Send)
            .AddMethod(__Method_Emit, serviceImpl.Emit).Build());
 }
Пример #12
0
 public void Serialize(WriterBase writer, TSpecific graph)
 {
     this._realSerializer.Serialize(writer, graph, this._specificType);
 }
 internal static void Write256String(string str, WriterBase writer)
 {
     byte[] strBytes = Encoding.UTF8.GetBytes(str);
     writer.Write((byte)strBytes.Length);
     writer.Write(strBytes, 0, strBytes.Length);
 }
Пример #14
0
 internal GraphWriter(TypeBinder binder, WriterBase writer, ISurrogateSelector selector, StreamingContext context)
     : this(binder, writer, selector, context, null)
 {
 }
Пример #15
0
 internal GraphWriter(TypeBinder binder, WriterBase writer, ISurrogateSelector selector, SerializationContents contents)
     : this(binder, writer, selector, SerializationStaticHelpers.StreamingContext, contents)
 {
 }
 public void Serialize(Stream serializationStream, object graph)
 {
     this.Serialize(WriterBase.StreamWriter(serializationStream), graph, null);
 }
Пример #17
0
 public virtual void Perform(WriterBase writer)
 {
 }