act.getEffectiveAddress(0L)));
/** * retrieve a durable buffer from its backed memory allocator. * * @param phandler * specify the handler of memory buffer to retrieve * * @param autoreclaim * specify whether this retrieved memory buffer can be reclaimed * automatically or not * * @param rctx * specify a reclaim context * * @return a durable buffer contains the retrieved memory buffer */ @Override public DurableBuffer<NonVolatileMemAllocator> retrieveBuffer(long phandler, boolean autoreclaim, ReclaimContext rctx) { DurableBuffer<NonVolatileMemAllocator> ret = null; ByteBuffer bb = m_nvmasvc.retrieveByteBuffer(m_nid, getEffectiveAddress(phandler)); if (null != bb) { ret = new DurableBuffer<NonVolatileMemAllocator>(this, bb); ret.setCollector(m_bufcollector); if (autoreclaim) { m_bufcollector.register(ret, rctx); } } return ret; }
/** * retrieve a durable chunk from its backed memory allocator. * * @param phandler * specify the handler of memory chunk to retrieve * * @param autoreclaim * specify whether this retrieved memory chunk can be reclaimed * automatically or not * * @param rctx * specify a reclaim context * * @return a durable chunk contains the retrieved memory chunk */ @Override public DurableChunk<NonVolatileMemAllocator> retrieveChunk(long phandler, boolean autoreclaim, ReclaimContext rctx) { DurableChunk<NonVolatileMemAllocator> ret = null; long eaddr = getEffectiveAddress(phandler); long sz = m_nvmasvc.retrieveSize(m_nid, eaddr); if (sz > 0L) { ret = new DurableChunk<NonVolatileMemAllocator>(this, eaddr, sz); ret.setCollector(m_chunkcollector); if (autoreclaim) { m_chunkcollector.register(ret, rctx); } } return ret; }