コード例 #1
0
        public void T8()
        {
            var arr = new byte[] { 1, 2, 3, 4, 5 };
            var s   = new BufferSegmentReadingStream();

            s.BindBuffer(arr, 2, 3);

            Assert.AreEqual(3, s.Length);

            Assert.AreEqual(0, s.Position);
            Assert.AreEqual(3, s.ReadByte());
            Assert.AreEqual(1, s.Position);
            Assert.AreEqual(4, s.ReadByte());
            Assert.AreEqual(2, s.Position);
            Assert.AreEqual(5, s.ReadByte());
            Assert.AreEqual(3, s.Position);
            Assert.AreEqual(-1, s.ReadByte());
            Assert.AreEqual(3, s.Position);

            var arr2 = new byte[] { 101, 102, 103, 104, 105, 106, 107, 108, 109, 110 };

            s.BindBuffer(arr2, 2, 3);

            Assert.AreEqual(3, s.Length);

            Assert.AreEqual(0, s.Position);
            Assert.AreEqual(103, s.ReadByte());
            Assert.AreEqual(1, s.Position);
            Assert.AreEqual(104, s.ReadByte());
            Assert.AreEqual(2, s.Position);
            Assert.AreEqual(105, s.ReadByte());
            Assert.AreEqual(3, s.Position);
            Assert.AreEqual(-1, s.ReadByte());
            Assert.AreEqual(3, s.Position);
        }
コード例 #2
0
        public void T6()
        {
            var arr = new byte[] { 1, 2, 3, 4, 5 };
            var s   = new BufferSegmentReadingStream();
            var ms  = new MemoryStream(arr, 2, 3);

            s.BindBuffer(arr, 2, 3);

            Assert.AreEqual(3, ms.Length);
            Assert.AreEqual(3, s.Length);

            s.Seek(1, SeekOrigin.Current);
            ms.Seek(1, SeekOrigin.Current);
            Assert.AreEqual(1, ms.Position);
            Assert.AreEqual(4, ms.ReadByte());
            Assert.AreEqual(1, s.Position);
            Assert.AreEqual(4, s.ReadByte());

            s.Seek(-1, SeekOrigin.Current);
            ms.Seek(-1, SeekOrigin.Current);
            Assert.AreEqual(1, ms.Position);
            Assert.AreEqual(4, ms.ReadByte());
            Assert.AreEqual(1, s.Position);
            Assert.AreEqual(4, s.ReadByte());
        }
コード例 #3
0
        public void T4()
        {
            var arr = new byte[] { 1, 2, 3, 4, 5 };
            var s   = new BufferSegmentReadingStream();
            var ms  = new MemoryStream(arr, 2, 3);

            s.BindBuffer(arr, 2, 3);

            Aver.AreEqual(3, ms.Length);
            Aver.AreEqual(3, s.Length);

            s.Seek(-1, SeekOrigin.End);
            ms.Seek(-1, SeekOrigin.End);
            Aver.AreEqual(2, ms.Position);
            Aver.AreEqual(5, ms.ReadByte());
            Aver.AreEqual(2, s.Position);
            Aver.AreEqual(5, s.ReadByte());

            s.Seek(0, SeekOrigin.End);
            ms.Seek(0, SeekOrigin.End);
            Aver.AreEqual(3, ms.Position);
            Aver.AreEqual(-1, ms.ReadByte());
            Aver.AreEqual(3, s.Position);
            Aver.AreEqual(-1, s.ReadByte());
        }
コード例 #4
0
        public void T7()
        {
            var arr = new byte[] { 1, 2, 3, 4, 5 };
            var s   = new BufferSegmentReadingStream();

            Assert.Throws <NFXIOException>(() => s.BindBuffer(arr, 22, 3));
            Assert.Throws <NFXIOException>(() => s.BindBuffer(arr, 0, 23));
            Assert.Throws <NFXIOException>(() => s.BindBuffer(arr, -1, 1));
            Assert.Throws <NFXIOException>(() => s.BindBuffer(arr, 0, -1));
        }
コード例 #5
0
ファイル: LocalMemory.cs プロジェクト: sergey-msu/azos
        public override BufferSegmentReadingStream GetReadStream(int addr, int count)
        {
            BufferSegmentReadingStream result = ts_ReadStream;

            if (result == null)
            {
                result        = new BufferSegmentReadingStream();
                ts_ReadStream = result;
            }
            result.UnsafeBindBuffer(m_Data, addr, count);
            return(result);
        }
コード例 #6
0
ファイル: MMFMemory.cs プロジェクト: chadfords/azos
        public override BufferSegmentReadingStream GetReadStream(int addr, int count)
        {
            var buf = new byte[count];

            ReadBuffer(addr, buf, 0, count);//todo Add semantic for unsafe pointer to not make copies

            BufferSegmentReadingStream result = ts_ReadStream;

            if (result == null)
            {
                result        = new BufferSegmentReadingStream();
                ts_ReadStream = result;
            }
            result.UnsafeBindBuffer(buf, 0, count); //todo Bind low-level memory accessor not to make any copies
            return(result);
        }
コード例 #7
0
        public void T3_2()
        {
            var arr = new byte[] { 1, 2, 3, 4, 5 };
            var s   = new BufferSegmentReadingStream();

            s.BindBuffer(arr, 2, 3);

            Assert.AreEqual(0, s.Position);
            Assert.AreEqual(3, s.Length);

            var a2 = new byte[10];

            Assert.AreEqual(2, s.Read(a2, 1, 2));
            Assert.AreEqual(0, a2[0]);
            Assert.AreEqual(3, a2[1]);
            Assert.AreEqual(4, a2[2]);
            Assert.AreEqual(0, a2[3]);
            Assert.AreEqual(2, s.Position);
        }
コード例 #8
0
        public void T2()
        {
            var arr = new byte[] { 1, 2, 3, 4, 5 };
            var s   = new BufferSegmentReadingStream();

            s.BindBuffer(arr, 0, 3);

            Assert.AreEqual(3, s.Length);

            Assert.AreEqual(0, s.Position);
            Assert.AreEqual(1, s.ReadByte());
            Assert.AreEqual(1, s.Position);
            Assert.AreEqual(2, s.ReadByte());
            Assert.AreEqual(2, s.Position);
            Assert.AreEqual(3, s.ReadByte());
            Assert.AreEqual(3, s.Position);
            Assert.AreEqual(-1, s.ReadByte());
            Assert.AreEqual(3, s.Position);
        }
コード例 #9
0
        /// <summary>
        /// Deserializes data document from the specified byte[] using thread-local caching optimizations
        /// </summary>
        public static void Deserialize(TypedDoc doc, byte[] data, int offset)
        {
            var stream = ts_ReadStream;
            var reader = ts_Reader;

            if (stream == null)
            {
                stream = new BufferSegmentReadingStream();
                reader = SlimFormat.Instance.GetReadingStreamer();
                reader.BindStream(stream);
                ts_ReadStream = stream;
                ts_Reader     = reader;
            }

            stream.BindBuffer(data, offset, data.Length - offset);
            try
            {
                Deserialize(doc, reader, true);
            }
            finally
            {
                stream.UnsafeBindBuffer(null, 0, 0);
            }
        }