private static void checkAlternateDeserializers <S>(S expected, Stream input, long startPos, Schema ws, Schema rs) where S : class, ISpecificRecord { input.Position = startPos; var reader = new SpecificDatumReader <S>(ws, rs); Decoder d = new BinaryDecoder(input); S output = reader.Read(null, d); Assert.AreEqual(input.Length, input.Position); // Ensure we have read everything. AssertSpecificRecordEqual(expected, output); }
public TestEvent DeserializeAvro() { using (var stream = new MemoryStream(AvroData)) { var avroEvent = _avroDeserializer.Read(new Avro.TestEvent(), new BinaryDecoder(stream)); var result = new TestEvent { Id = new Guid(avroEvent.id), Name = avroEvent.name, X = avroEvent.x, Y = avroEvent.y, Z = avroEvent.z, TimeStamp = DateTimeOffset.FromUnixTimeMilliseconds(avroEvent.timeStamp) }; return(result); } }
public object Deserialize(byte[] bytes) { if (bytes != null) { try { int function = BitConverter.ToInt32(bytes, 0); ObjectType type = (ObjectType)function; Schema schema = staticMap[type]; reader = new SpecificDatumReader <ISpecificRecord>(schema, schema); using (MemoryStream ms = new MemoryStream(bytes, 4, bytes.Length - 4, false)) { BinaryDecoder decoder = new BinaryDecoder(ms); return(reader.Read(null, decoder)); } } catch (Exception) { } } return(null); }
public static void test () { //Schema schema = Schema.Parse ("schema json"); SpecificDatumWriter<User> w = new SpecificDatumWriter<User> (User._SCHEMA); User input = new User (); input.name = "mm"; input.favorite_color = "red"; input.favorite_number = 11; MemoryStream stream = new MemoryStream (); w.Write (input, new BinaryEncoder (stream)); stream.Seek (0, SeekOrigin.Begin); SpecificDatumReader<User> r = new SpecificDatumReader<User> (User._SCHEMA, User._SCHEMA); User output = r.Read (null, new BinaryDecoder (stream)); Console.WriteLine (output.name); }
protected override object DoDecode(byte[] raw, Type type) { using (MemoryStream stream = new MemoryStream(raw)) { byte magicByte = (byte)stream.ReadByte(); if (magicByte != MAGIC_BYTE) { throw new InvalidDataException("Unknown magic byte!"); } byte[] schemaIdBytes = new byte[4]; stream.Read(schemaIdBytes, 0, 4); if (BitConverter.IsLittleEndian) { Array.Reverse(schemaIdBytes); } int schemaId = BitConverter.ToInt32(schemaIdBytes, 0); Schema schema = Schema.Parse(schemaCache.GetSchemaString(schemaId)); SpecificDatumReader<object> r = new SpecificDatumReader<object>(schema, schema); return r.Read(null, new BinaryDecoder(stream)); } }