Exemplo n.º 1
0
        public void VisitValue(DateTime?value, VisitArgs args)
        {
            if (args.Index > 0)
            {
                BinaryZPacker.Pack(_writeBuffer, args.Index);
            }

            if (value == null)
            {
                _writeBuffer.WriteByte(BinaryZPacker.Null);
                return;
            }

            if (value.Value.Kind != DateTimeKind.Utc)
            {
                value = value.Value.ToUniversalTime();
            }

            var length = BinaryPV64Packer.GetSLength(value.Value.Ticks);

            _writeBuffer.WriteByte(length);
            var offset = _writeBuffer.Advance(length);

            BinaryPV64Packer.PackS(_writeBuffer.Buffer, offset, value.Value.Ticks, length);
        }
Exemplo n.º 2
0
        private static void AssertPackDS(Int64 value, byte expectedLength)
        {
            var actualLength = BinaryPV64Packer.GetSLength(value);

            Assert.Equal(expectedLength, actualLength);
            using (var stream = new MemoryStream()) {
                BinaryPV64Packer.PackS(stream, value, actualLength);
                stream.Seek(0, SeekOrigin.Begin);
                var actual = BinaryPV64Packer.UnpackS(stream, actualLength);
                Assert.Equal(value, actual);
            }
        }
Exemplo n.º 3
0
        public bool TryVisitValue(VisitArgs args, out DateTime?value)
        {
            if (args.Index > 0 && !MoveToIndex(args.Index))
            {
                value = null;
                return(false);
            }
            var length = _reader.ReadByte();

            if (length == BinaryZPacker.Null)
            {
                value = null;
                return(true);
            }
            value = new DateTime(BinaryPV64Packer.UnpackS(_stream, length), DateTimeKind.Utc).ToLocalTime();
            return(true);
        }
Exemplo n.º 4
0
        public bool TryVisitValue(VisitArgs args, out TimeSpan?value)
        {
            if (args.Index > 0 && !MoveToIndex(args.Index))
            {
                value = null;
                return(false);
            }
            var length = _reader.ReadByte();

            if (length == BinaryZPacker.Null)
            {
                value = null;
                return(true);
            }
            value = new TimeSpan(BinaryPV64Packer.UnpackS(_stream, length));
            return(true);
        }
Exemplo n.º 5
0
        public bool TryVisitValue(VisitArgs args, out uint?value)
        {
            if (args.Index > 0 && !MoveToIndex(args.Index))
            {
                value = null;
                return(false);
            }
            var length = _reader.ReadByte();

            if (length == BinaryZPacker.Null)
            {
                value = null;
                return(true);
            }
            value = (UInt32)BinaryPV64Packer.UnpackU(_stream, length);
            return(true);
        }
Exemplo n.º 6
0
        public void VisitValue(short?value, VisitArgs args)
        {
            if (args.Index > 0)
            {
                BinaryZPacker.Pack(_writeBuffer, args.Index);
            }

            if (value == null)
            {
                _writeBuffer.WriteByte(BinaryZPacker.Null);
                return;
            }

            var length = BinaryPV64Packer.GetSLength(value.Value);

            _writeBuffer.WriteByte(length);
            var offset = _writeBuffer.Advance(length);

            BinaryPV64Packer.PackS(_writeBuffer.Buffer, offset, value.Value, length);
        }