Example #1
0
        private object ResolveLogical(LogicalTypeSchema writerSchema, LogicalTypeSchema readerSchema, IReader reader, Type type)
        {
            var value = Resolve(writerSchema.BaseTypeSchema, readerSchema.BaseTypeSchema, reader, type);

            var result = writerSchema.ConvertToLogicalValue(value, writerSchema, type);

            return(result);
        }
        public object ConvertToBaseValue(object logicalValue, LogicalTypeSchema schema)
        {
            var time = (TimeSpan)logicalValue;

            if (time > _maxTime)
            {
                throw new ArgumentOutOfRangeException(nameof(logicalValue), "A 'time-micros' value can only have the range '00:00:00' to '23:59:59'.");
            }

            return((long)(time - DateTimeExtensions.UnixEpochDateTime.TimeOfDay).TotalMilliseconds * 1000);
        }
Example #3
0
        internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type)
        {
            var buffer = AvroType.Bytes == schema.BaseTypeSchema.Type
                ? (byte[])baseValue
                : ((AvroFixed)baseValue).Value;

            Array.Reverse(buffer);
            var avroDecimal = new AvroDecimal(new BigInteger(buffer), Scale);


            return(AvroDecimal.ToDecimal(avroDecimal));
        }
Example #4
0
        internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type)
        {
            var noMicroseconds = (long)baseValue;
            var result         = DateTimeExtensions.UnixEpochDateTime.AddMilliseconds(noMicroseconds / 1000);

            if (type == typeof(DateTimeOffset) || type == typeof(DateTimeOffset?))
            {
                return(DateTimeOffset.FromUnixTimeMilliseconds(noMicroseconds / 1000));
            }
            else
            {
                return(result);
            }
        }
        internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type)
        {
            byte[] baseBytes = (byte[])baseValue;
            if (!BitConverter.IsLittleEndian)
            {
                Array.Reverse(baseBytes); //reverse it so we get big endian.
            }
            int months       = BitConverter.ToInt32(baseBytes.Skip(0).Take(4).ToArray(), 0);
            int days         = BitConverter.ToInt32(baseBytes.Skip(4).Take(4).ToArray(), 0);
            int milliseconds = BitConverter.ToInt32(baseBytes.Skip(8).Take(4).ToArray(), 0);

            var result = new TimeSpan(months * 30 + days, 0, 0, 0, milliseconds);

            return(result);
        }
        internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type)
        {
            var noMs = (long)baseValue / 1000;

            return(DateTimeExtensions.UnixEpochDateTime.TimeOfDay.Add(TimeSpan.FromMilliseconds(noMs)));
        }
Example #7
0
        private object ResolveLogical(LogicalTypeSchema readerSchema, IReader reader)
        {
            var baseValue = Resolve(readerSchema.BaseTypeSchema, reader);

            return(readerSchema.ConvertToLogicalValue(baseValue, readerSchema, readerSchema.RuntimeType));
        }
Example #8
0
        internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type)
        {
            var noDays = (int)baseValue;

            return(DateTimeExtensions.UnixEpochDateTime.AddDays(noDays));
        }
Example #9
0
        public object ConvertToBaseValue(object logicalValue, LogicalTypeSchema schema)
        {
            var date = ((DateTime)logicalValue).Date;

            return((date - DateTimeExtensions.UnixEpochDateTime).Days);
        }
Example #10
0
 internal override object ConvertToLogicalValue(object baseValue, LogicalTypeSchema schema, Type type)
 {
     return(Guid.Parse((string)baseValue));
 }