public void SpanLengthIsCorrect() { var size = 71; using var memory = new RentedMemory <byte>(size); Assert.AreEqual(memory.Span.Length, size, ".Span has incorrect size."); }
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."); }
public void ArraySegmentLengthIsCorrect() { var size = 71; using var memory = new RentedMemory <byte>(size); Assert.AreEqual(memory.DangerousGetArraySegment().Count, size, ".DangerousGetArraySegment() has incorrect size."); }
public void LengthIsCorrect() { var size = 71; using var memory = new RentedMemory <byte>(size); Assert.AreEqual(memory.Length, size, ".Length returns incorrect value."); }
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."); }
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."); }
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); }
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); }
protected virtual void OnMessageReceived(RentedMemory <byte> message) { MessageReceived?.Invoke(message); }
public void MultipartByteArray(RentedMemory data) { //Interlocked.Increment(ref Program.ReqCount); }
public bool TryReadMessage([NotNullWhen(true)] out RentedMemory <byte>?message) => (message = TryReadMessage()) != null;