View Javadoc
1   /*
2    * junixsocket
3    *
4    * Copyright 2009-2024 Christian Kohlschütter
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.newsclub.net.unix;
19  
20  /**
21   * Defines certain methods that all junixsocket socket implementations share and extend beyond the
22   * standard socket API.
23   *
24   * The set of features include methods to support working with ancillary messages (such as file
25   * descriptors) as well as socket credentials.
26   *
27   * Keep in mind that the platform this code runs on may not support these features, and exceptions
28   * may be thrown when not checking for the corresponding {@link AFSocketCapability} first.
29   *
30   * @author Christian Kohlschütter
31   */
32  public interface AFSocketExtensions {
33    /**
34     * Returns the size of the receive buffer for ancillary messages (in bytes).
35     *
36     * @return The size.
37     */
38    int getAncillaryReceiveBufferSize();
39  
40    /**
41     * Sets the size of the receive buffer for ancillary messages (in bytes).
42     *
43     * To disable handling ancillary messages, set it to 0 (default).
44     *
45     * @param size The size.
46     */
47    void setAncillaryReceiveBufferSize(int size);
48  
49    /**
50     * Ensures a minimum ancillary receive buffer size.
51     *
52     * @param minSize The minimum size (in bytes).
53     */
54    void ensureAncillaryReceiveBufferSize(int minSize);
55  }