/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.ignite.internal.util.offheap; import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeMap; import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafePartitionedMap; import org.jetbrains.annotations.Nullable; /** * Factory for off-heap maps. */ public class GridOffHeapMapFactory { /** * Creates off-heap map based on {@code Unsafe} implementation with * unlimited memory. * * @param initCap Initial capacity. * @return Off-heap map. */ public static GridOffHeapMap unsafeMap(long initCap) { return new GridUnsafeMap(128, 0.75f, initCap, 0, (short)0, null); } /** * Creates off-heap map based on {@code Unsafe} implementation. * * @param concurrency Concurrency. * @param initCap Initial capacity. * @return Off-heap map. */ public static GridOffHeapMap unsafeMap(int concurrency, long initCap) { return new GridUnsafeMap(concurrency, 0.75f, initCap, 0, (short)0, null); } /** * Creates off-heap map based on {@code Unsafe} implementation. * * @param concurrency Concurrency. * @param load Load factor. * @param initCap Initial capacity. * @return Off-heap map. */ public static GridOffHeapMap unsafeMap(int concurrency, float load, long initCap) { return new GridUnsafeMap(concurrency, load, initCap, 0, (short)0, null); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @return Off-heap map. */ public static GridOffHeapMap unsafeMap(long initCap, long totalMem, short lruStripes) { return new GridUnsafeMap(128, 0.75f, initCap, totalMem, lruStripes, null); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @param lsnr Optional eviction listener which gets notified every time an entry is evicted. * @return Off-heap map. */ public static GridOffHeapMap unsafeMap(long initCap, long totalMem, short lruStripes, @Nullable GridOffHeapEvictListener lsnr) { return new GridUnsafeMap(128, 0.75f, initCap, totalMem, lruStripes, lsnr); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param concurrency Concurrency. * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @param lsnr Optional eviction listener which gets notified every time an entry is evicted. * @return Off-heap map. */ public static GridOffHeapMap unsafeMap(int concurrency, long initCap, long totalMem, short lruStripes, @Nullable GridOffHeapEvictListener lsnr) { return new GridUnsafeMap(concurrency, 0.75f, initCap, totalMem, lruStripes, lsnr); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param concurrency Concurrency. * @param load Load factor. * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @param lsnr Optional eviction listener which gets notified every time an entry is evicted. * @return Off-heap map. */ public static <K> GridOffHeapMap unsafeMap(int concurrency, float load, long initCap, long totalMem, short lruStripes, @Nullable GridOffHeapEvictListener lsnr) { return new GridUnsafeMap(concurrency, load, initCap, totalMem, lruStripes, lsnr); } /** * Creates off-heap map based on {@code Unsafe} implementation with * unlimited memory. * * @param parts Partitions. * @param initCap Initial capacity. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, long initCap) { return new GridUnsafePartitionedMap(parts, 128, 0.75f, initCap, 0, (short)0, null); } /** * Creates off-heap map based on {@code Unsafe} implementation. * * @param parts Partitions. * @param concurrency Concurrency. * @param initCap Initial capacity. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, int concurrency, long initCap) { return new GridUnsafePartitionedMap(parts, concurrency, 0.75f, initCap, 0, (short)0, null); } /** * Creates off-heap map based on {@code Unsafe} implementation. * * @param parts Partitions. * @param concurrency Concurrency. * @param load Load factor. * @param initCap Initial capacity. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, int concurrency, float load, long initCap) { return new GridUnsafePartitionedMap(parts, concurrency, load, initCap, 0, (short)0, null); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param parts Partitions. * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, long initCap, long totalMem, short lruStripes) { return new GridUnsafePartitionedMap(parts, 128, 0.75f, initCap, totalMem, lruStripes, null); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param parts Partitions. * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @param lsnr Optional eviction listener which gets notified every time an entry is evicted. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, long initCap, long totalMem, short lruStripes, @Nullable GridOffHeapEvictListener lsnr) { return new GridUnsafePartitionedMap(parts, 128, 0.75f, initCap, totalMem, lruStripes, lsnr); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param parts Partitions. * @param concurrency Concurrency. * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @param lsnr Optional eviction listener which gets notified every time an entry is evicted. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, int concurrency, long initCap, long totalMem, short lruStripes, @Nullable GridOffHeapEvictListener lsnr) { return new GridUnsafePartitionedMap(parts, concurrency, 0.75f, initCap, totalMem, lruStripes, lsnr); } /** * Creates off-heap map based on {@code Unsafe} implementation with limited * memory and LRU-based eviction. * * @param parts Partitions. * @param concurrency Concurrency. * @param load Load factor. * @param initCap Initial capacity. * @param totalMem Total memory. * @param lruStripes Number of LRU stripes. * @param lsnr Optional eviction listener which gets notified every time an entry is evicted. * @return Off-heap map. */ public static GridOffHeapPartitionedMap unsafePartitionedMap(int parts, int concurrency, float load, long initCap, long totalMem, short lruStripes, @Nullable GridOffHeapEvictListener lsnr) { return new GridUnsafePartitionedMap(parts, concurrency, load, initCap, totalMem, lruStripes, lsnr); } }