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)}!");
            }
        }
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("Date", StructSize, size);

            var epochDays = reader.ReadLong();

            return(new CypherDate(epochDays));
        }
        public override object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            var urn     = reader.ReadLong();
            var relType = reader.ReadString();
            var props   = reader.ReadMap();

            return(new Relationship(urn, -1, -1, relType, props));
        }
Esempio n. 4
0
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("LocalTime", StructSize, size);

            var nanosOfDay = reader.ReadLong();

            return(new CypherTime(nanosOfDay));
        }
        public override object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            var values  = reader.ReadMap();
            var code    = values["code"]?.ToString();
            var message = values["message"]?.ToString();

            return(new FailureMessage(code, message));
        }
Esempio n. 6
0
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("Date", StructSize, size);

            var epochDays = reader.ReadLong();

            return(TemporalHelpers.EpochDaysToDate(epochDays));
        }
Esempio n. 7
0
        public object Read(IPackStreamReader reader, byte signature, long size)
        {
            PackStream.EnsureStructSize("LocalTime", StructSize, size);

            var nanosOfDay = reader.ReadLong();

            return(TemporalHelpers.NanoOfDayToTime(nanosOfDay));
        }
        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 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 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 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));
        }
Esempio n. 12
0
        public override object Read(IPackStreamReader reader, byte signature, long size)
        {
            var urn      = reader.ReadLong();
            var startUrn = reader.ReadLong();
            var endUrn   = reader.ReadLong();
            var relType  = reader.ReadString();
            var props    = reader.ReadMap();

            return(new Relationship(urn, startUrn, endUrn, relType, props));
        }
Esempio n. 13
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 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));
        }
Esempio n. 15
0
                public object Read(IPackStreamReader reader, byte signature, long size)
                {
                    var values = new List <object>();

                    for (var i = 0; i < size; i++)
                    {
                        values.Add(reader.Read());
                    }

                    return(new StructType(values));
                }
Esempio n. 16
0
        public BoltReader(IChunkReader chunkReader, int defaultBufferSize, int maxBufferSize, ILogger logger, bool supportBytes)
        {
            Throw.ArgumentNullException.IfNull(chunkReader, nameof(chunkReader));

            _logger            = logger;
            _chunkReader       = chunkReader;
            _defaultBufferSize = defaultBufferSize;
            _maxBufferSize     = maxBufferSize;
            _bufferStream      = new MemoryStream(_defaultBufferSize);
            _packStreamReader  = supportBytes ? new PackStreamReader(_bufferStream, StructHandlers) : new PackStreamReaderBytesIncompatible(_bufferStream, StructHandlers);
        }
        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));
        }
Esempio n. 18
0
        public MessageReader(IChunkReader chunkReader, int defaultBufferSize, int maxBufferSize, ILogger logger, IMessageFormat messageFormat)
        {
            Throw.ArgumentNullException.IfNull(chunkReader, nameof(chunkReader));
            Throw.ArgumentNullException.IfNull(messageFormat, nameof(messageFormat));

            _logger            = logger;
            _chunkReader       = chunkReader;
            _defaultBufferSize = defaultBufferSize;
            _maxBufferSize     = maxBufferSize;
            _bufferStream      = new MemoryStream(_defaultBufferSize);
            _packStreamReader  = messageFormat.CreateReader(_bufferStream);
        }
Esempio n. 19
0
        public BoltReader(IChunkReader chunkReader, int defaultBufferSize, int maxBufferSize, ILogger logger, IPackStreamFactory packStreamFactory)
        {
            Throw.ArgumentNullException.IfNull(chunkReader, nameof(chunkReader));
            Throw.ArgumentNullException.IfNull(packStreamFactory, nameof(packStreamFactory));

            _logger            = logger;
            _chunkReader       = chunkReader;
            _defaultBufferSize = defaultBufferSize;
            _maxBufferSize     = maxBufferSize;
            _bufferStream      = new MemoryStream(_defaultBufferSize);
            _packStreamReader  = packStreamFactory.CreateReader(_bufferStream);
        }
        public override object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            var fieldCount = (int)reader.ReadListHeader();
            var fields     = new object[fieldCount];

            for (var i = 0; i < fieldCount; i++)
            {
                fields[i] = reader.Read();
            }

            return(new RecordMessage(fields));
        }
Esempio n. 21
0
        public override object Read(IPackStreamReader reader, byte signature, long size)
        {
            var urn = reader.ReadLong();

            var numLabels = (int)reader.ReadListHeader();
            var labels    = new List <string>(numLabels);

            for (var i = 0; i < numLabels; i++)
            {
                labels.Add(reader.ReadString());
            }
            var numProps = (int)reader.ReadMapHeader();
            var props    = new Dictionary <string, object>(numProps);

            for (var j = 0; j < numProps; j++)
            {
                var key = reader.ReadString();
                props.Add(key, reader.Read());
            }

            return(new Node(urn, labels, props));
        }
        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)}!");
            }
        }
Esempio n. 23
0
        public override object Read(IPackStreamReader reader, byte signature, long size)
        {
            // List of unique nodes
            var uniqNodes = new INode[(int)reader.ReadListHeader()];

            for (var i = 0; i < uniqNodes.Length; i++)
            {
                var node = reader.Read() as INode;

                Throw.ProtocolException.IfFalse(node != null, "receivedNode");

                uniqNodes[i] = node;
            }

            // List of unique relationships, without start/end information
            var uniqRels = new Relationship[(int)reader.ReadListHeader()];

            for (var i = 0; i < uniqRels.Length; i++)
            {
                var uniqRel = reader.Read() as Relationship;

                Throw.ProtocolException.IfFalse(uniqRel != null, "receivedUnboundRelationship");

                uniqRels[i] = uniqRel;
            }

            // Path sequence
            var length = (int)reader.ReadListHeader();

            // Knowing the sequence length, we can create the arrays that will represent the nodes, rels and segments in their "path order"
            var segments = new ISegment[length / 2];
            var nodes    = new INode[segments.Length + 1];
            var rels     = new IRelationship[segments.Length];

            var prevNode = uniqNodes[0];

            nodes[0] = prevNode;
            for (var i = 0; i < segments.Length; i++)
            {
                var relIdx   = (int)reader.ReadLong();
                var nextNode =
                    uniqNodes[(int)reader.ReadLong()];  // Start node is always 0, and isn't encoded in the sequence
                // Negative rel index means this rel was traversed "inversed" from its direction
                Relationship rel;
                if (relIdx < 0)
                {
                    rel = uniqRels[(-relIdx) - 1]; // -1 because rel idx are 1-indexed
                    rel.SetStartAndEnd(nextNode.Id, prevNode.Id);
                }
                else
                {
                    rel = uniqRels[relIdx - 1];
                    rel.SetStartAndEnd(prevNode.Id, nextNode.Id);
                }

                nodes[i + 1] = nextNode;
                rels[i]      = rel;
                segments[i]  = new Segment(prevNode, rel, nextNode);
                prevNode     = nextNode;
            }

            return(new Path(segments.ToList(), nodes.ToList(), rels.ToList()));
        }
Esempio n. 24
0
 internal PackStreamReaderMachine(byte[] bytes, Func<Stream, IPackStreamReader> readerFactory)
 {
     this._input = new MemoryStream(bytes);
     this._reader = readerFactory(_input);
 }
Esempio n. 25
0
 public override object Read(IPackStreamReader reader, byte signature, long size)
 {
     return(new IgnoredMessage());
 }
Esempio n. 26
0
 public object Read(IPackStreamReader reader, byte signature, long size)
 {
     throw new ProtocolException(
               $"{GetType().Name}: It is not expected to receive a struct of signature {signature:X2} from the server.");
 }
Esempio n. 27
0
 public override object Read(IPackStreamReader reader, byte signature, long size)
 {
     return(Ignored);
 }
Esempio n. 28
0
 public abstract object Read(IPackStreamReader reader, byte signature, long size);
Esempio n. 29
0
 public abstract object Deserialize(IPackStreamReader reader, byte signature, long size);
        public override object Deserialize(IPackStreamReader reader, byte signature, long size)
        {
            var map = reader.ReadMap();

            return(new SuccessMessage(map));
        }