Example #1
0
 public unsafe override Span <byte> AsSpan(int index, int length)
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(OwnedNativeBuffer));
     }
     return(new Span <byte>(_pointer.ToPointer(), _length).Slice(index, length));
 }
Example #2
0
 public override void Retain()
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(ReferenceCountedBuffer <T>));
     }
     Interlocked.Increment(ref _referenceCount);
 }
Example #3
0
 public override Span <T> AsSpan(int index, int length)
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(OwnedPinnedBuffer <T>));
     }
     return(new Span <T>(_array, index, length));
 }
Example #4
0
 public override Span <T> GetSpan()
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(OwnedPinnedBuffer <T>));
     }
     return(new Span <T>(_array));
 }
 public override Span <byte> GetSpan()
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(NativeMemoryPool.Memory));
     }
     return(new Span <byte>(_pointer.ToPointer(), _length));
 }
 protected override unsafe bool TryGetPointerAt(int index, out void *pointer)
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(BufferManager));
     }
     pointer = Add(_pointer.ToPointer(), index);
     return(true);
 }
Example #7
0
 protected override bool TryGetArray(out ArraySegment <T> arraySegment)
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(OwnedPinnedBuffer <T>));
     }
     arraySegment = new ArraySegment <T>(_array);
     return(true);
 }
Example #8
0
 protected override unsafe bool TryGetPointerInternal(out void *pointer)
 {
     if (IsDisposed)
     {
         BuffersExperimentalThrowHelper.ThrowObjectDisposedException(nameof(OwnedNativeBuffer));
     }
     pointer = _pointer.ToPointer();
     return(true);
 }
Example #9
0
 public override void Release()
 {
     if (!IsRetained)
     {
         BuffersExperimentalThrowHelper.ThrowInvalidOperationException();
     }
     if (Interlocked.Decrement(ref _referenceCount) <= 0)
     {
         OnNoReferences();
     }
 }
        public override bool Release()
        {
            int newRefCount = Interlocked.Decrement(ref _referenceCount);

            if (newRefCount < 0)
            {
                BuffersExperimentalThrowHelper.ThrowInvalidOperationException();
            }
            if (newRefCount == 0)
            {
                OnNoReferences();
                return(false);
            }
            return(true);
        }