Ejemplo n.º 1
0
        internal virtual void WriteBytes(ByteWriter writer)
        {
            foreach (var field in GetType().GetFields(BindingFlags.Public | BindingFlags.Instance))
            {
                var type  = field.FieldType;
                var value = field.GetValue(this);
                if (value == null)
                {
                    throw new Exception($"Field is null: {type}.{field.Name}");
                }
                if (value.GetType() != type)
                {
                    throw new Exception($"Value type [{value.GetType()}] differs from field type [{type}] in field: {type}.{field.Name}.");
                }

                if (value is DataNode)
                {
                    (value as DataNode).WriteBytes(writer);
                }
                else
                {
                    var serializer = CustomSerializer.Get(type);
                    serializer.WriteBytes(value, writer);
                }
            }
        }
Ejemplo n.º 2
0
 internal override void ReadBytes(ByteReader reader)
 {
     if (serializer == null)
     {
         serializer = CustomSerializer.Get <T>();
     }
     Value = (T)serializer.ReadBytes(reader);
 }
Ejemplo n.º 3
0
 internal override void WriteBytes(ByteWriter writer)
 {
     if (serializer == null)
     {
         serializer = CustomSerializer.Get <T>();
     }
     serializer.WriteBytes(Value, writer);
 }
Ejemplo n.º 4
0
        internal override void WriteBytes(ByteWriter writer)
        {
            if (keySerializer == null)
            {
                keySerializer = CustomSerializer.Get <K>();
            }

            writer.WriteInt(Count);
            foreach (var pair in nodes)
            {
                keySerializer.WriteBytes(pair.Key, writer);
                pair.Value.WriteBytes(writer);
            }
        }
Ejemplo n.º 5
0
        internal override void ReadBytes(ByteReader reader)
        {
            if (keySerializer == null)
            {
                keySerializer = CustomSerializer.Get <K>();
            }

            Clear();
            int count = reader.ReadInt();

            for (int i = 0; i < count; ++i)
            {
                var key   = (K)keySerializer.ReadBytes(reader);
                var value = Add(key, false);
                value.ReadBytes(reader);
            }
        }