View Javadoc
1   /*
2   * Copyright 2017 The Netty Project
3   *
4   * The Netty Project licenses this file to you under the Apache License,
5   * version 2.0 (the "License"); you may not use this file except in compliance
6   * with the License. You may obtain a copy of the License at:
7   *
8   *   https://www.apache.org/licenses/LICENSE-2.0
9   *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations
14  * under the License.
15  */
16  package io.netty.util.internal;
17  
18  import java.nio.ByteBuffer;
19  
20  /**
21   * Allows to free direct {@link ByteBuffer}s.
22   */
23  interface Cleaner {
24      /**
25       * Create a direct {@link ByteBuffer} and return it alongside its cleaning mechanism,
26       * in a {@link CleanableDirectBuffer}.
27       *
28       * @param capacity The desired capacity of the direct buffer.
29       * @return The new {@link CleanableDirectBuffer} instance.
30       */
31      CleanableDirectBuffer allocate(int capacity);
32  
33      /**
34       * Free a direct {@link ByteBuffer} if possible
35       *
36       * @deprecated Instead allocate buffers from {@link #allocate(int)}
37       * and use the associated {@link CleanableDirectBuffer#clean()} method.
38       */
39      @Deprecated
40      void freeDirectBuffer(ByteBuffer buffer);
41  }