Esempio n. 1
0
        public void SpanLengthIsCorrect()
        {
            var size = 71;

            using var memory = new RentedMemory <byte>(size);
            Assert.AreEqual(memory.Span.Length, size, ".Span has incorrect size.");
        }
Esempio n. 2
0
        public void RespectsRequestedSize()
        {
            var size = 71;

            using var memory = new RentedMemory <byte>(size);
            Assert.GreaterOrEqual(memory.DangerousGetArray().Length, size, "The rented array has insufficient size.");
        }
Esempio n. 3
0
        public void ArraySegmentLengthIsCorrect()
        {
            var size = 71;

            using var memory = new RentedMemory <byte>(size);
            Assert.AreEqual(memory.DangerousGetArraySegment().Count, size, ".DangerousGetArraySegment() has incorrect size.");
        }
Esempio n. 4
0
        public void LengthIsCorrect()
        {
            var size = 71;

            using var memory = new RentedMemory <byte>(size);
            Assert.AreEqual(memory.Length, size, ".Length returns incorrect value.");
        }
Esempio n. 5
0
        public void DangerousRefIsCorrect()
        {
            var size = 71;

            using var memory = new RentedMemory <byte>(size);
            memory.Span[0]   = 127;
            Assert.AreEqual(memory.DangerousGetReference(), 127, ".DangerousGetReference() does not point to the first entry.");
        }
Esempio n. 6
0
        public void UsesGivenPool()
        {
            var pool   = new MockArrayPool <byte>();
            var memory = new RentedMemory <byte>(42, pool);

            Assert.AreEqual(memory.Pool, pool, "Provided pool was not stored.");

            var array = memory.DangerousGetArray();

            Assert.IsTrue(pool.Rented.Contains(array), "Provided pool was not used for renting.");

            memory.Dispose();
            Assert.IsFalse(pool.Rented.Contains(array), "Provided pool was not used for returnig.");
        }
Esempio n. 7
0
        public RentedMemory <byte>?TryReadMessage()
        {
            // read and parse header
            if (!Stream.TryReadExact(_headerBuffer))
            {
                return(null);
            }
            var messageLength = BinaryPrimitives.ReadInt32LittleEndian(_headerBuffer);

            // read message into buffer
            var messageBuffer = new RentedMemory <byte>(messageLength);

            if (!Stream.TryReadExact(messageBuffer.Span))
            {
                return(null);
            }

            return(messageBuffer);
        }
Esempio n. 8
0
        public async Task <RentedMemory <byte>?> TryReadMessageAsync(CancellationToken cancellationToken = default)
        {
            // read and parse header
            if (!await Stream.TryReadExactAsync(_headerBuffer, cancellationToken).ConfigureAwait(false))
            {
                return(null);
            }
            var messageLength = BinaryPrimitives.ReadInt32LittleEndian(_headerBuffer);

            // read message into buffer
            var messageBuffer = new RentedMemory <byte>(messageLength);

            if (!await Stream.TryReadExactAsync(messageBuffer.Memory, cancellationToken).ConfigureAwait(false))
            {
                return(null);
            }

            // read successfully
            return(messageBuffer);
        }
Esempio n. 9
0
 protected virtual void OnMessageReceived(RentedMemory <byte> message)
 {
     MessageReceived?.Invoke(message);
 }
Esempio n. 10
0
 public void MultipartByteArray(RentedMemory data)
 {
     //Interlocked.Increment(ref Program.ReqCount);
 }
Esempio n. 11
0
 public bool TryReadMessage([NotNullWhen(true)] out RentedMemory <byte>?message) => (message = TryReadMessage()) != null;