class Gio::UnixConnection

Overview

This is the subclass of #GSocketConnection that is created for UNIX domain sockets.

It contains functions to do some of the UNIX socket specific functionality like passing file descriptors.

Since GLib 2.72, #GUnixConnection is available on all platforms. It requires underlying system support (such as Windows 10 with AF_UNIX) at run time.

Before GLib 2.72, <gio/gunixconnection.h> belonged to the UNIX-specific GIO interfaces, thus you had to use the gio-unix-2.0.pc pkg-config file when using it. This is no longer necessary since GLib 2.72.

Defined in:

lib/gi-crystal/src/auto/gio-2.0/unix_connection.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class Gio::SocketConnection

connect(address : Gio::SocketAddress, cancellable : Gio::Cancellable?) : Bool connect, connect_async(address : Gio::SocketAddress, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil connect_async, connect_finish(result : Gio::AsyncResult) : Bool connect_finish, is_connected : Bool is_connected, local_address : Gio::SocketAddress local_address, remote_address : Gio::SocketAddress remote_address, socket : Gio::Socket socket, socket=(value : Gio::Socket?) : Gio::Socket? socket=

Constructor methods inherited from class Gio::SocketConnection

new
new(*, closed : Bool? = nil, input_stream : Gio::InputStream? = nil, output_stream : Gio::OutputStream? = nil, socket : Gio::Socket? = nil)
new

Class methods inherited from class Gio::SocketConnection

factory_lookup_type(family : Gio::SocketFamily, type : Gio::SocketType, protocol_id : Int32) : UInt64 factory_lookup_type, factory_register_type(g_type : UInt64, family : Gio::SocketFamily, type : Gio::SocketType, protocol : Int32) : Nil factory_register_type, g_type : UInt64 g_type

Instance methods inherited from class Gio::IOStream

clear_pending : Nil clear_pending, close(cancellable : Gio::Cancellable?) : Bool close, close_async(io_priority : Int32, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil close_async, close_finish(result : Gio::AsyncResult) : Bool close_finish, closed? : Bool closed?, has_pending : Bool has_pending, input_stream : Gio::InputStream input_stream, is_closed : Bool is_closed, output_stream : Gio::OutputStream output_stream, set_pending : Bool set_pending, splice_async(stream2 : Gio::IOStream, flags : Gio::IOStreamSpliceFlags, io_priority : Int32, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil splice_async, splice_finish(result : Gio::AsyncResult) : Bool splice_finish

Constructor methods inherited from class Gio::IOStream

new
new(*, closed : Bool? = nil, input_stream : Gio::InputStream? = nil, output_stream : Gio::OutputStream? = nil)
new

Class methods inherited from class Gio::IOStream

g_type : UInt64 g_type

Instance methods inherited from class GObject::Object

bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding bind_property, bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding bind_property_full, data(key : String) : Pointer(Void)? data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, notify(property_name : String) : Nil notify, notify_by_pspec(pspec : GObject::ParamSpec) : Nil notify_by_pspec, notify_signal notify_signal, property(property_name : String, value : _) : Nil property, qdata(quark : UInt32) : Pointer(Void)? qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void)?) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void)? steal_data, steal_qdata(quark : UInt32) : Pointer(Void)? steal_qdata, thaw_notify : Nil thaw_notify, to_unsafe : Pointer(Void) to_unsafe, watch_closure(closure : GObject::Closure) : Nil watch_closure

Constructor methods inherited from class GObject::Object

cast(obj : GObject::Object) : self cast, cast?(obj : GObject::Object) : self? cast?, new(pointer, transfer : GICrystal::Transfer)
new
new
, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

compat_control(what : UInt64, data : Pointer(Void)?) : UInt64 compat_control, g_type : UInt64 g_type, interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec interface_find_property, interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec) interface_list_properties

Constructor Detail

def self.new #

Initialize a new UnixConnection.


def self.new(*, closed : Bool? = nil, input_stream : Gio::InputStream? = nil, output_stream : Gio::OutputStream? = nil, socket : Gio::Socket? = nil) #

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.


Instance Method Detail

def receive_credentials(cancellable : Gio::Cancellable?) : Gio::Credentials #

Receives credentials from the sending end of the connection. The sending end has to call g_unix_connection_send_credentials() (or similar) for this to work.

As well as reading the credentials this also reads (and discards) a single byte from the stream, as this is required for credentials passing to work on some implementations.

This method can be expected to be available on the following platforms:

  • Linux since GLib 2.26
  • FreeBSD since GLib 2.26
  • GNU/kFreeBSD since GLib 2.36
  • Solaris, Illumos and OpenSolaris since GLib 2.40
  • GNU/Hurd since GLib 2.40

Other ways to exchange credentials with a foreign peer includes the #GUnixCredentialsMessage type and g_socket_get_credentials() function.


def receive_credentials_async(cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

Asynchronously receive credentials.

For more details, see g_unix_connection_receive_credentials() which is the synchronous version of this call.

When the operation is finished, @callback will be called. You can then call g_unix_connection_receive_credentials_finish() to get the result of the operation.


def receive_credentials_finish(result : Gio::AsyncResult) : Gio::Credentials #

Finishes an asynchronous receive credentials operation started with g_unix_connection_receive_credentials_async().


def receive_fd(cancellable : Gio::Cancellable?) : Int32 #

Receives a file descriptor from the sending end of the connection. The sending end has to call g_unix_connection_send_fd() for this to work.

As well as reading the fd this also reads a single byte from the stream, as this is required for fd passing to work on some implementations.


def send_credentials(cancellable : Gio::Cancellable?) : Bool #

Passes the credentials of the current user the receiving side of the connection. The receiving end has to call g_unix_connection_receive_credentials() (or similar) to accept the credentials.

As well as sending the credentials this also writes a single NUL byte to the stream, as this is required for credentials passing to work on some implementations.

This method can be expected to be available on the following platforms:

  • Linux since GLib 2.26
  • FreeBSD since GLib 2.26
  • GNU/kFreeBSD since GLib 2.36
  • Solaris, Illumos and OpenSolaris since GLib 2.40
  • GNU/Hurd since GLib 2.40

Other ways to exchange credentials with a foreign peer includes the #GUnixCredentialsMessage type and g_socket_get_credentials() function.


def send_credentials_async(cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

Asynchronously send credentials.

For more details, see g_unix_connection_send_credentials() which is the synchronous version of this call.

When the operation is finished, @callback will be called. You can then call g_unix_connection_send_credentials_finish() to get the result of the operation.


def send_credentials_finish(result : Gio::AsyncResult) : Bool #

Finishes an asynchronous send credentials operation started with g_unix_connection_send_credentials_async().


def send_fd(fd : Int32, cancellable : Gio::Cancellable?) : Bool #

Passes a file descriptor to the receiving side of the connection. The receiving end has to call g_unix_connection_receive_fd() to accept the file descriptor.

As well as sending the fd this also writes a single byte to the stream, as this is required for fd passing to work on some implementations.