public object Read(IPackStreamReader reader, byte signature, long size)
        {
            switch (signature)
            {
            case Point2DStructType:
            {
                PackStream.EnsureStructSize("Point2D", Point2DStructSize, size);
                var srId = reader.ReadInteger();
                var x    = reader.ReadDouble();
                var y    = reader.ReadDouble();

                return(new CypherPoint(srId, x, y));
            }

            case Point3DStructType:
            {
                PackStream.EnsureStructSize("Point3D", Point3DStructSize, size);
                var srId = reader.ReadInteger();
                var x    = reader.ReadDouble();
                var y    = reader.ReadDouble();
                var z    = reader.ReadDouble();

                return(new CypherPoint(srId, x, y, z));
            }

            default:
                throw new ProtocolException(
                          $"Unsupported struct signature {signature} passed to {nameof(PointHandler)}!");
            }
        }
Esempio n. 2
0
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("DateTimeWithOffset", StructSize, size);

            var epochSecondsUtc = reader.ReadLong();
            var nanosOfSecond   = reader.ReadInteger();
            var offsetSeconds   = reader.ReadInteger();

            return(new CypherDateTimeWithOffset(epochSecondsUtc, nanosOfSecond, offsetSeconds));
        }
        public object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("LocalDateTime", StructSize, size);

            var epochSeconds  = reader.ReadLong();
            var nanosOfSecond = reader.ReadInteger();

            return(TemporalHelpers.EpochSecondsAndNanoToDateTime(epochSeconds, nanosOfSecond));
        }
        public object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("Time", StructSize, size);

            var nanosOfDay    = reader.ReadLong();
            var offsetSeconds = reader.ReadInteger();

            return(new OffsetTime(TemporalHelpers.NanoOfDayToTime(nanosOfDay), offsetSeconds));
        }
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("Time", StructSize, size);

            var nanosOfDay    = reader.ReadLong();
            var offsetSeconds = reader.ReadInteger();

            return(new CypherTimeWithOffset(nanosOfDay, offsetSeconds));
        }
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("LocalDateTime", StructSize, size);

            var epochSeconds  = reader.ReadLong();
            var nanosOfSecond = reader.ReadInteger();

            return(new CypherDateTime(epochSeconds, nanosOfSecond));
        }
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("DateTimeWithZoneId", StructSize, size);

            var epochSecondsUtc = reader.ReadLong();
            var nanosOfSecond   = reader.ReadInteger();
            var zoneId          = reader.ReadString();

            return(new CypherDateTimeWithZoneId(epochSecondsUtc, nanosOfSecond, zoneId));
        }
        public object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("Duration", StructSize, size);

            var months  = reader.ReadLong();
            var days    = reader.ReadLong();
            var seconds = reader.ReadLong();
            var nanos   = reader.ReadInteger();

            return(new Duration(months, days, seconds, nanos));
        }
        public object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize($"ZonedDateTime[{(char) signature}]", StructSize, size);

            var epochSecondsUtc = reader.ReadLong();
            var nanosOfSecond   = reader.ReadInteger();

            switch (signature)
            {
            case StructTypeWithId:
                return(new ZonedDateTime(
                           TemporalHelpers.EpochSecondsAndNanoToDateTime(epochSecondsUtc, nanosOfSecond),
                           Zone.Of(reader.ReadString())));

            case StructTypeWithOffset:
                return(new ZonedDateTime(
                           TemporalHelpers.EpochSecondsAndNanoToDateTime(epochSecondsUtc, nanosOfSecond),
                           Zone.Of(reader.ReadInteger())));

            default:
                throw new ProtocolException(
                          $"Unsupported struct signature {signature} passed to {nameof(ZonedDateTimeSerializer)}!");
            }
        }