(root)/
glib-2.79.0/
gio/
gioprivate.h
       1  /* GIO - GLib Input, Output and Streaming Library
       2   *
       3   * Copyright (C) 2013 Collabora Ltd.
       4   *
       5   * SPDX-License-Identifier: LGPL-2.1-or-later
       6   *
       7   * This library is free software; you can redistribute it and/or
       8   * modify it under the terms of the GNU Lesser General Public
       9   * License as published by the Free Software Foundation; either
      10   * version 2.1 of the License, or (at your option) any later version.
      11   *
      12   * This library is distributed in the hope that it will be useful,
      13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
      14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      15   * Lesser General Public License for more details.
      16   *
      17   * You should have received a copy of the GNU Lesser General
      18   * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
      19   */
      20  
      21  #ifndef __G_IO_PRIVATE_H__
      22  #define __G_IO_PRIVATE_H__
      23  
      24  #include "ginputstream.h"
      25  #include "goutputstream.h"
      26  #include "gsocketconnection.h"
      27  #include "gsocketaddress.h"
      28  
      29  G_BEGIN_DECLS
      30  
      31  gboolean g_input_stream_async_read_is_via_threads (GInputStream *stream);
      32  gboolean g_input_stream_async_close_is_via_threads (GInputStream *stream);
      33  gboolean g_output_stream_async_write_is_via_threads (GOutputStream *stream);
      34  gboolean g_output_stream_async_writev_is_via_threads (GOutputStream *stream);
      35  gboolean g_output_stream_async_close_is_via_threads (GOutputStream *stream);
      36  
      37  void g_socket_connection_set_cached_remote_address (GSocketConnection *connection,
      38                                                      GSocketAddress    *address);
      39  
      40  /* POSIX defines IOV_MAX/UIO_MAXIOV as the maximum number of iovecs that can
      41   * be sent in one go. We define our own version of it here as there are two
      42   * possible names, and also define a fall-back value if none of the constants
      43   * are defined */
      44  #if defined(IOV_MAX)
      45  #define G_IOV_MAX IOV_MAX
      46  #elif defined(UIO_MAXIOV)
      47  #define G_IOV_MAX UIO_MAXIOV
      48  #elif defined(__APPLE__)
      49  /* For macOS/iOS, UIO_MAXIOV is documented in writev(2), but <sys/uio.h>
      50   * only declares it if defined(KERNEL) */
      51  #define G_IOV_MAX 512
      52  #else
      53  /* 16 is the minimum value required by POSIX */
      54  #define G_IOV_MAX 16
      55  #endif
      56  
      57  /* The various functions taking iovecs as parameter use a plain int
      58   * for the number of vectors. Limit it to G_MAXINT for this reason.
      59   */
      60  G_STATIC_ASSERT (G_IOV_MAX <= G_MAXINT);
      61  
      62  G_END_DECLS
      63  
      64  #endif /* __G_IO_PRIVATE__ */