Ejemplo n.º 1
0
        public void SendZeroCopy()
        {
            var buffer = new ZeroCopyBuffer();

            FillMemory(buffer);
            _client.SendZeroCopy(buffer);
            ReceiveAndVerify();
        }
Ejemplo n.º 2
0
        public void Allocate()
        {
            var buffer = new ZeroCopyBuffer();

            buffer.Allocate(5);
            buffer.Capacity.Should().Be(5);
            buffer.Length.Should().Be(5);
        }
Ejemplo n.º 3
0
        public void Constructor()
        {
            var buffer = new ZeroCopyBuffer();

            buffer.Ptr.Should().Be(IntPtr.Zero);
            buffer.Capacity.Should().Be(0);
            buffer.Length.Should().Be(0);
        }
Ejemplo n.º 4
0
        public void TrySendZeroCopy()
        {
            var buffer = new ZeroCopyBuffer();

            FillMemory(buffer);
            var result = _behavior.TrySendZeroCopy(buffer);

            result.Should().BeTrue();
            ReceiveAndVerify();
        }
Ejemplo n.º 5
0
        public void Dispose()
        {
            var buffer = new ZeroCopyBuffer();

            buffer.Allocate(5);
            buffer.Ptr.Should().NotBe(IntPtr.Zero);
            buffer.Dispose();
            buffer.Ptr.Should().Be(IntPtr.Zero);
            buffer.Capacity.Should().Be(0);
            buffer.Length.Should().Be(0);
        }
Ejemplo n.º 6
0
        public bool TryReceiveZeroCopy(out ZeroCopyBuffer buffer)
        {
            var errorCode = NativeMethods.nng_recv(_nngSocket, out var ptr, out var sizePtr, NativeMethods.NngFlags.Allocate | NativeMethods.NngFlags.Async);

            if (errorCode == NngErrorCode.TryAgain)
            {
                buffer = null;
                return(false);
            }
            errorCode.ThrowIfError();
            buffer = new ZeroCopyBuffer(ptr, (int)sizePtr);
            return(true);
        }
Ejemplo n.º 7
0
        public void Allocate_Again_When_Extra_Memory_Is_Needed()
        {
            var buffer = new ZeroCopyBuffer();

            buffer.Allocate(3);
            buffer.Capacity.Should().Be(3);
            buffer.Length.Should().Be(3);
            var ptr1 = buffer.Ptr;

            buffer.Allocate(5);
            buffer.Capacity.Should().Be(5);
            buffer.Length.Should().Be(5);
            var ptr2 = buffer.Ptr;

            ptr2.Should().NotBe(ptr1);
        }