UnixFDMessage

This GSocketControlMessage contains a GUnixFDList. It may be sent using g_socket_send_message() and received using g_socket_receive_message() over UNIX sockets (ie: sockets in the G_SOCKET_ADDRESS_UNIX family). The file descriptors are copied between processes by the kernel.

For an easier way to send and receive file descriptors over stream-oriented UNIX sockets, see g_unix_connection_send_fd() and g_unix_connection_receive_fd().

Note that <gio/gunixfdmessage.h> belongs to the UNIX-specific GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file when using it.

Constructors

this
this(GUnixFDMessage* gUnixFDMessage)

Sets our main struct and passes it to the parent class

this
this(UnixFDList fdList)

Creates a new GUnixFDMessage containing list. Since 2.24

this
this()

Creates a new GUnixFDMessage containing an empty file descriptor list. Since 2.22

Members

Functions

appendFd
int appendFd(int fd)

Adds a file descriptor to message. The file descriptor is duplicated using dup(). You keep your copy of the descriptor and the copy contained in message will be closed when message is finalized. A possible cause of failure is exceeding the per-process or system-wide file descriptor limit. Since 2.22

getFdList
UnixFDList getFdList()

Gets the GUnixFDList contained in message. This function does not return a reference to the caller, but the returned list is valid for the lifetime of message. Since 2.24

getStruct
void* getStruct()

the main Gtk struct as a void*

getUnixFDMessageStruct
GUnixFDMessage* getUnixFDMessageStruct()
Undocumented in source. Be warned that the author may not have intended to support it.
setStruct
void setStruct(GObject* obj)
Undocumented in source. Be warned that the author may not have intended to support it.
stealFds
int[] stealFds()

Returns the array of file descriptors that is contained in this object. After this call, the descriptors are no longer contained in message. Further calls will return an empty list (unless more descriptors have been added). The return result of this function must be freed with g_free(). The caller is also responsible for closing all of the file descriptors. If length is non-NULL then it is set to the number of file descriptors in the returned array. The returned array is also terminated with -1. This function never returns NULL. In case there are no file descriptors contained in message, an empty array is returned. Since 2.22

Variables

gUnixFDMessage
GUnixFDMessage* gUnixFDMessage;

the main Gtk struct

Inherited Members

From SocketControlMessage

gSocketControlMessage
GSocketControlMessage* gSocketControlMessage;

the main Gtk struct

getSocketControlMessageStruct
GSocketControlMessage* getSocketControlMessageStruct()
Undocumented in source. Be warned that the author may not have intended to support it.
getStruct
void* getStruct()

the main Gtk struct as a void*

setStruct
void setStruct(GObject* obj)
Undocumented in source. Be warned that the author may not have intended to support it.
deserialize
SocketControlMessage deserialize(int level, int type, gsize size, void* data)

Tries to deserialize a socket control message of a given level and type. This will ask all known (to GType) subclasses of GSocketControlMessage if they can understand this kind of message and if so deserialize it into a GSocketControlMessage. If there is no implementation for this kind of control message, NULL will be returned. Since 2.22

getLevel
int getLevel()

Returns the "level" (i.e. the originating protocol) of the control message. This is often SOL_SOCKET. Since 2.22

getMsgType
int getMsgType()

Returns the protocol specific type of the control message. For instance, for UNIX fd passing this would be SCM_RIGHTS. Since 2.22

getSize
gsize getSize()

Returns the space required for the control message, not including headers or alignment. Since 2.22

serialize
void serialize(void* data)

Converts the data in the message to bytes placed in the message. data is guaranteed to have enough space to fit the size returned by g_socket_control_message_get_size() on this object. Since 2.22

Meta