glib (2.79.0)
       1  /* GIO - GLib Input, Output and Streaming Library
       2   *
       3   * Copyright © 2009 Codethink Limited
       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   * Authors: Ryan Lortie <desrt@desrt.ca>
      21   */
      22  
      23  #ifndef __G_UNIX_FD_MESSAGE_H__
      24  #define __G_UNIX_FD_MESSAGE_H__
      25  
      26  #include <gio/gio.h>
      27  #include <gio/gunixfdlist.h>
      28  
      29  G_BEGIN_DECLS
      30  
      31  #define G_TYPE_UNIX_FD_MESSAGE                              (g_unix_fd_message_get_type ())
      32  #define G_UNIX_FD_MESSAGE(inst)                             (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
      33                                                               G_TYPE_UNIX_FD_MESSAGE, GUnixFDMessage))
      34  #define G_UNIX_FD_MESSAGE_CLASS(class)                      (G_TYPE_CHECK_CLASS_CAST ((class),                       \
      35                                                               G_TYPE_UNIX_FD_MESSAGE, GUnixFDMessageClass))
      36  #define G_IS_UNIX_FD_MESSAGE(inst)                          (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
      37                                                               G_TYPE_UNIX_FD_MESSAGE))
      38  #define G_IS_UNIX_FD_MESSAGE_CLASS(class)                   (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
      39                                                               G_TYPE_UNIX_FD_MESSAGE))
      40  #define G_UNIX_FD_MESSAGE_GET_CLASS(inst)                   (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
      41                                                               G_TYPE_UNIX_FD_MESSAGE, GUnixFDMessageClass))
      42  
      43  typedef struct _GUnixFDMessagePrivate                       GUnixFDMessagePrivate;
      44  typedef struct _GUnixFDMessageClass                         GUnixFDMessageClass;
      45  typedef struct _GUnixFDMessage                              GUnixFDMessage;
      46  
      47  G_DEFINE_AUTOPTR_CLEANUP_FUNC(GUnixFDMessage, g_object_unref)
      48  
      49  struct _GUnixFDMessageClass
      50  {
      51    GSocketControlMessageClass parent_class;
      52  
      53    /*< private >*/
      54  
      55    /* Padding for future expansion */
      56    void (*_g_reserved1) (void);
      57    void (*_g_reserved2) (void);
      58  };
      59  
      60  struct _GUnixFDMessage
      61  {
      62    GSocketControlMessage parent_instance;
      63    GUnixFDMessagePrivate *priv;
      64  };
      65  
      66  GIO_AVAILABLE_IN_ALL
      67  GType                   g_unix_fd_message_get_type                      (void) G_GNUC_CONST;
      68  GIO_AVAILABLE_IN_ALL
      69  GSocketControlMessage * g_unix_fd_message_new_with_fd_list              (GUnixFDList     *fd_list);
      70  GIO_AVAILABLE_IN_ALL
      71  GSocketControlMessage * g_unix_fd_message_new                           (void);
      72  
      73  GIO_AVAILABLE_IN_ALL
      74  GUnixFDList *           g_unix_fd_message_get_fd_list                   (GUnixFDMessage  *message);
      75  
      76  GIO_AVAILABLE_IN_ALL
      77  gint *                  g_unix_fd_message_steal_fds                     (GUnixFDMessage  *message,
      78                                                                           gint            *length);
      79  GIO_AVAILABLE_IN_ALL
      80  gboolean                g_unix_fd_message_append_fd                     (GUnixFDMessage  *message,
      81                                                                           gint             fd,
      82                                                                           GError         **error);
      83  
      84  G_END_DECLS
      85  
      86  #endif /* __G_UNIX_FD_MESSAGE_H__ */