// interfaces internal void Serialize(MemoryStream stream, Mio meta, object data) { MemoryDataBuffer buffer = new MemoryDataBuffer(stream); MProto proto = new MBinaryProto(buffer); Write(proto, meta, data); }
internal object Deserialize(MemoryStream ms, Mio meta) { MemoryDataBuffer buffer = new MemoryDataBuffer(ms); MProto proto = new MBinaryProto(buffer); object res = Read(proto, meta); return(res); }
// Reads internal object Read(MProto proto, Mio meta) { if (meta == null) { return(null); } switch (meta.Type) { case MType.Binary: return(proto.ReadBinary()); case MType.Bool: return(proto.ReadBool()); case MType.Byte: return(proto.ReadByte()); case MType.Double: return(proto.ReadDouble()); case MType.Float: return(proto.ReadFloat()); case MType.I16: return(proto.ReadI16()); case MType.I32: return(proto.ReadI32()); case MType.I64: return(proto.ReadI64()); case MType.List: return(ReadList(proto, meta as MioList)); case MType.Map: return(ReadMap(proto, meta as MioMap)); case MType.Null: return(null); case MType.Set: return(ReadList(proto, meta as MioList)); case MType.String: return(proto.ReadString()); case MType.Struct: return(ReadStruct(proto, meta as MioStruct)); } return(null); }
// Writes internal void Write(MProto proto, Mio meta, object data) { if (meta == null) { return; } switch (meta.Type) { case MType.Binary: proto.WriteBinary((byte[])data); break; case MType.Bool: proto.WriteBool(Convert.ToBoolean(data)); break; case MType.Byte: proto.WriteByte((sbyte)Convert.ToByte(data)); break; case MType.Double: proto.WriteDouble(Convert.ToDouble(data)); break; case MType.Float: proto.WriteFloat(Convert.ToSingle(data)); break; case MType.I16: proto.WriteI16(Convert.ToInt16(data)); break; case MType.I32: proto.WriteI32(Convert.ToInt32(data)); break; case MType.I64: proto.WriteI64(Convert.ToInt64(data)); break; case MType.List: WriteList(proto, meta as MioList, data as List <object>); break; case MType.Map: WriteMap(proto, meta as MioMap, data as Dictionary <object, object>); break; case MType.Null: break; case MType.Set: WriteList(proto, meta as MioList, data as List <object>); break; case MType.String: proto.WriteString(Convert.ToString(data)); break; case MType.Struct: WriteStruct(proto, meta as MioStruct, data as MioObject); break; } }
internal MioMap(Mio key, Mio val) : base(MType.Map) { this.Key = key; this.Value = val; }
internal MioList(Mio element) : base(MType.List) { this.Element = element; }
// Writes internal void Write(MProto proto, Mio meta, object data) { if (meta == null) return; switch (meta.Type) { case MType.Binary: proto.WriteBinary((byte[])data); break; case MType.Bool: proto.WriteBool(Convert.ToBoolean(data)); break; case MType.Byte: proto.WriteByte((sbyte)Convert.ToByte(data)); break; case MType.Double: proto.WriteDouble(Convert.ToDouble(data)); break; case MType.Float: proto.WriteFloat(Convert.ToSingle(data)); break; case MType.I16: proto.WriteI16(Convert.ToInt16(data)); break; case MType.I32: proto.WriteI32(Convert.ToInt32(data)); break; case MType.I64: proto.WriteI64(Convert.ToInt64(data)); break; case MType.List: WriteList(proto, meta as MioList, data as List<object>); break; case MType.Map: WriteMap(proto, meta as MioMap, data as Dictionary<object,object>); break; case MType.Null: break; case MType.Set: WriteList(proto, meta as MioList, data as List<object>); break; case MType.String: proto.WriteString(Convert.ToString(data)); break; case MType.Struct: WriteStruct(proto, meta as MioStruct, data as MioObject); break; } }
// Reads internal object Read(MProto proto, Mio meta) { if (meta == null) return null; switch (meta.Type) { case MType.Binary: return proto.ReadBinary(); case MType.Bool: return proto.ReadBool(); case MType.Byte: return proto.ReadByte(); case MType.Double: return proto.ReadDouble(); case MType.Float: return proto.ReadFloat(); case MType.I16: return proto.ReadI16(); case MType.I32: return proto.ReadI32(); case MType.I64: return proto.ReadI64(); case MType.List: return ReadList(proto, meta as MioList); case MType.Map: return ReadMap(proto, meta as MioMap); case MType.Null: return null; case MType.Set: return ReadList(proto, meta as MioList); case MType.String: return proto.ReadString(); case MType.Struct: return ReadStruct(proto, meta as MioStruct); } return null; }
internal object Deserialize(MemoryStream ms, Mio meta) { MemoryDataBuffer buffer = new MemoryDataBuffer(ms); MProto proto = new MBinaryProto(buffer); object res = Read(proto, meta); return res; }
internal object Deserialize(byte[] bytes, Mio meta) { MemoryStream ms = new MemoryStream(bytes, false); return Deserialize(ms, meta); }
internal MioField(int id, Mio meta) { this.ID = id; this.Meta = meta; }
internal object Deserialize(byte[] bytes, Mio meta) { MemoryStream ms = new MemoryStream(bytes, false); return(Deserialize(ms, meta)); }