Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
 }
Beispiel #4
0
        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));
            }
        }