// 
// Decompiled by Procyon v0.6.0
// 

package io.netty.util.internal;

import java.nio.ByteBuffer;

final class DirectCleaner implements Cleaner
{
    @Override
    public CleanableDirectBuffer allocate(final int capacity) {
        return new CleanableDirectBufferImpl(PlatformDependent.allocateDirectNoCleaner(capacity));
    }
    
    @Override
    public void freeDirectBuffer(final ByteBuffer buffer) {
        PlatformDependent.freeDirectNoCleaner(buffer);
    }
    
    CleanableDirectBuffer reallocate(final CleanableDirectBuffer buffer, final int capacity) {
        final ByteBuffer newByteBuffer = PlatformDependent.reallocateDirectNoCleaner(buffer.buffer(), capacity);
        return new CleanableDirectBufferImpl(newByteBuffer);
    }
    
    private static final class CleanableDirectBufferImpl implements CleanableDirectBuffer
    {
        private final ByteBuffer buffer;
        
        private CleanableDirectBufferImpl(final ByteBuffer buffer) {
            this.buffer = buffer;
        }
        
        @Override
        public ByteBuffer buffer() {
            return this.buffer;
        }
        
        @Override
        public void clean() {
            PlatformDependent.freeDirectNoCleaner(this.buffer);
        }
    }
}
