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

package com.hypixel.hytale.server.worldgen.cache;

import javax.annotation.Nullable;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.worldgen.container.UniquePrefabContainer;
import com.hypixel.hytale.server.worldgen.util.cache.SizedTimeoutCache;

public class UniquePrefabCache
{
    @Nonnull
    protected final SizedTimeoutCache<Integer, UniquePrefabContainer.UniquePrefabEntry[]> cache;
    
    public UniquePrefabCache(@Nonnull final UniquePrefabFunction function, final int maxSize, final long expireAfterSeconds) {
        final TimeUnit seconds = TimeUnit.SECONDS;
        Objects.requireNonNull(function);
        this.cache = new SizedTimeoutCache<Integer, UniquePrefabContainer.UniquePrefabEntry[]>(expireAfterSeconds, seconds, maxSize, (Function<Object, Object>)function::get, null);
    }
    
    @Nullable
    public UniquePrefabContainer.UniquePrefabEntry[] get(final int seed) {
        try {
            return this.cache.get(seed);
        }
        catch (final Exception e) {
            throw new Error("Failed to receive UniquePrefabEntry for " + seed, (Throwable)e);
        }
    }
    
    @FunctionalInterface
    public interface UniquePrefabFunction
    {
        UniquePrefabContainer.UniquePrefabEntry[] get(final int p0);
    }
}
