Example #1
0
 internal PooledSegment(int index, RIOBufferPool owningPool, RIO_BUFSEGMENT segment, byte[] buffer)
 {
     PoolIndex = index;
     _owningPool = owningPool;
     RioBuffer = segment;
     Buffer = buffer;
 }
Example #2
0
 internal PooledSegment(int index, RIOBufferPool owningPool, RIO_BUFSEGMENT segment, byte[] buffer)
 {
     PoolIndex   = index;
     _owningPool = owningPool;
     RioBuffer   = segment;
     Buffer      = buffer;
 }
Example #3
0
        public void Initalize()
        {

            var pinnedBuffer = GCHandle.Alloc(_underlyingBuffer, GCHandleType.Pinned);
            var address = Marshal.UnsafeAddrOfPinnedArrayElement(_underlyingBuffer, 0);
            var bufferId = _rio.RegisterBuffer(address, BufferLength);

            _allocatedBuffers.Enqueue(new AllocatedBuffer() { Buffer = _underlyingBuffer, PinnedBuffer = pinnedBuffer, BufferId = bufferId });

            _segments = new RIO_BUFSEGMENT[PerAllocationCount];
            _availableSegments = new ConcurrentQueue<int>();
            var offset = 0u;
            for (var i = 0; i < _segments.Length; i++)
            {
                _segments[i] = new RIO_BUFSEGMENT(bufferId, offset, PacketSize);
                _availableSegments.Enqueue(i);
                offset += PacketSize;
            }

        }
Example #4
0
        public void Initalize()
        {
            var pinnedBuffer = GCHandle.Alloc(_underlyingBuffer, GCHandleType.Pinned);
            var address      = Marshal.UnsafeAddrOfPinnedArrayElement(_underlyingBuffer, 0);
            var bufferId     = _rio.RegisterBuffer(address, BufferLength);

            _allocatedBuffers.Enqueue(new AllocatedBuffer()
            {
                Buffer = _underlyingBuffer, PinnedBuffer = pinnedBuffer, BufferId = bufferId
            });

            _segments          = new RIO_BUFSEGMENT[PerAllocationCount];
            _availableSegments = new ConcurrentQueue <int>();
            var offset = 0u;

            for (var i = 0; i < _segments.Length; i++)
            {
                _segments[i] = new RIO_BUFSEGMENT(bufferId, offset, PacketSize);
                _availableSegments.Enqueue(i);
                offset += PacketSize;
            }
        }