示例#1
0
        protected override void ReadValueFromStream(Stream stream)
        {
            var increment = BinUtils.ReadUInt32(stream);
            var epoch     = ((long)BinUtils.ReadInt32(stream)).FromSecondsSinceUnixEpochStart();

            Value = new BSONTimestamp(epoch, increment);
        }
示例#2
0
        /// <summary>
        /// Deserializes BSON document from stream containing BSON-encoded data
        /// </summary>
        public BSONDocument(Stream stream)
        {
            if (stream == null)
            {
                throw new BSONException(StringConsts.ARGUMENT_ERROR + "BSONDocument.ctor(stream==null)");
            }

            long start     = stream.Position;
            var  totalSize = BinUtils.ReadInt32(stream);
            long read      = 4;

            while (read < totalSize - 1)
            {
                var et      = BinUtils.ReadElementType(stream);
                var factory = BSONElement.GetElementFactory(et);
                var element = factory(stream);//element made
                Set(element);
                read = stream.Position - start;
            }
            var terminator = BinUtils.ReadByte(stream);

            if (terminator != BinUtils.TERMINATOR || stream.Position - start != totalSize)
            {
                throw new BSONException(StringConsts.BSON_EOD_ERROR);
            }
        }
示例#3
0
        protected override void ReadValueFromStream(Stream stream)
        {
            var  elements  = new List <BSONElement>();
            long start     = stream.Position;
            var  totalSize = BinUtils.ReadInt32(stream);
            long read      = 4;

            while (read < totalSize - 1)
            {
                var et      = BinUtils.ReadElementType(stream);
                var factory = BSONElement.GetElementFactory(et);
                var element = factory(stream);//element made
                element.MarkAsArrayItem();
                elements.Add(element);
                read = stream.Position - start;
            }
            Value = elements.ToArray();

            var terminator = BinUtils.ReadByte(stream);

            if (terminator != BinUtils.TERMINATOR || stream.Position - start != totalSize)
            {
                throw new BSONException(StringConsts.BSON_EOD_ERROR);
            }
        }
示例#4
0
        protected override void ReadValueFromStream(Stream stream)
        {
            BinUtils.ReadInt32(stream); // fullLength
            var length   = BinUtils.ReadInt32(stream);
            var code     = BinUtils.ReadCString(stream, length);
            var document = new BSONDocument(stream);

            Value = new BSONCodeWithScope(code, document);
        }
示例#5
0
        protected override void ReadValueFromStream(Stream stream)
        {
            var length = BinUtils.ReadInt32(stream);
            var type   = BinUtils.ReadByte(stream);
            var buffer = new byte[length];

            stream.Read(buffer, 0, length);

            Value = new BSONBinary((BSONBinaryType)type, buffer);
        }
示例#6
0
        protected override void ReadValueFromStream(Stream stream)
        {
            var length = BinUtils.ReadInt32(stream);

            Value = BinUtils.ReadCString(stream, length);
        }
示例#7
0
 protected override void ReadValueFromStream(Stream stream)
 {
     Value = BinUtils.ReadInt32(stream);
 }