class Gio::UnixConnection

Overview

This is the subclass of Gio::SocketConnection 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

==(other : self) ==, connect(address : Gio::SocketAddress, cancellable : Gio::Cancellable | Nil) : Bool connect, connect_async(address : Gio::SocketAddress, cancellable : Gio::Cancellable | Nil, &callback : Gio::AsyncReadyCallback) : Nil connect_async, connect_finish(result : Gio::AsyncResult) : Bool connect_finish, hash(hasher) hash, 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 | Nil) : Gio::Socket | Nil socket=

Constructor methods inherited from class Gio::SocketConnection

new
new(*, closed : Bool | Nil = nil, input_stream : Gio::InputStream | Nil = nil, output_stream : Gio::OutputStream | Nil = nil, socket : Gio::Socket | Nil = 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

==(other : self) ==, clear_pending : Nil clear_pending, close(cancellable : Gio::Cancellable | Nil) : Bool close, close_async(io_priority : Int32, cancellable : Gio::Cancellable | Nil, &callback : Gio::AsyncReadyCallback) : Nil close_async, close_finish(result : Gio::AsyncResult) : Bool close_finish, closed? : Bool closed?, has_pending : Bool has_pending, hash(hasher) hash, 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 | Nil, &callback : Gio::AsyncReadyCallback) : Nil splice_async, splice_finish(result : Gio::AsyncResult) : Bool splice_finish

Constructor methods inherited from class Gio::IOStream

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

Class methods inherited from class Gio::IOStream

g_type : UInt64 g_type

Instance methods inherited from class GObject::Object

==(other : self) ==, 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) | Nil data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, hash(hasher) hash, 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) | Nil qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void) | Nil) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void) | Nil steal_data, steal_qdata(quark : UInt32) : Pointer(Void) | Nil 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, new(pointer : Pointer(Void), transfer : GICrystal::Transfer)
new
new
, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

cast?(obj : GObject::Object) : self | Nil cast?, compat_control(what : UInt64, data : Pointer(Void) | Nil) : 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

Macros inherited from class GObject::Object

previous_vfunc(*args) previous_vfunc, previous_vfunc!(*args) previous_vfunc!, signal(signature) signal

Constructor Detail

def self.new #

Initialize a new UnixConnection.


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

Class Method Detail

def self.g_type : UInt64 #

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


Instance Method Detail

def ==(other : self) #
Description copied from class Reference

Returns true if this reference is the same as other. Invokes same?.


def hash(hasher) #
Description copied from class Reference

See Object#hash(hasher)


def receive_credentials(cancellable : Gio::Cancellable | Nil) : 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 | Nil, &callback : Gio::AsyncReadyCallback) : 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 | Nil) : 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 | Nil) : 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 | Nil, &callback : Gio::AsyncReadyCallback) : 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 | Nil) : 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.