/* * Copyright 2021 The Netty Project * * The Netty Project 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: * * https://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 io.netty.buffer.api; import java.util.ServiceLoader; import java.util.function.Supplier; import java.util.stream.Stream; /** * The MemoryManagers interface is the handle through which {@link BufferAllocator buffer allocators} access the low * level memory management APIs. *
* This is hidden behind this interface in order to make allocation and pool agnostic and reusable across buffer and * memory implementations. */ public interface MemoryManagers { /** * Get the default, or currently configured, memory managers instance. * @return A MemoryManagers instance. */ static MemoryManagers getManagers() { return MemoryManagersOverride.getManagers(); } /** * Temporarily override the default configured memory managers instance. *
* Calls to {@link #getManagers()} from within the given supplier will get the given managers instance.
*
* @param managers Override the default configured managers instance with this instance.
* @param supplier The supplier function to be called while the override is in place.
* @param