class Gio::SocketConnection

Overview

#GSocketConnection is a #GIOStream for a connected socket. They can be created either by #GSocketClient when connecting to a host, or by #GSocketListener when accepting a new client.

The type of the #GSocketConnection object returned from these calls depends on the type of the underlying socket that is in use. For instance, for a TCP/IP connection it will be a #GTcpConnection.

Choosing what type of object to construct is done with the socket connection factory, and it is possible for 3rd parties to register custom socket connection types for specific combination of socket family/type/protocol using g_socket_connection_factory_register_type().

To close a #GSocketConnection, use g_io_stream_close(). Closing both substreams of the #GIOStream separately will not close the underlying #GSocket.

Direct Known Subclasses

Defined in:

auto/gio-2.0/socket_connection.cr

Constructors

Class Method Summary

Instance Method Summary

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 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 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 SocketConnection.


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.factory_lookup_type(family : Gio::SocketFamily, type : Gio::SocketType, protocol_id : Int32) : UInt64 #

Looks up the #GType to be used when creating socket connections on sockets with the specified @family, @type and @protocol_id.

If no type is registered, the #GSocketConnection base type is returned.


def self.factory_register_type(g_type : UInt64, family : Gio::SocketFamily, type : Gio::SocketType, protocol : Int32) : Nil #

Looks up the #GType to be used when creating socket connections on sockets with the specified @family, @type and @protocol.

If no type is registered, the #GSocketConnection base type is returned.


def self.g_type : UInt64 #

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


Instance Method Detail

def connect(address : Gio::SocketAddress, cancellable : Gio::Cancellable?) : Bool #

Connect @connection to the specified remote address.


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

Asynchronously connect @connection to the specified remote address.

This clears the #GSocket:blocking flag on @connection's underlying socket if it is currently set.

Use g_socket_connection_connect_finish() to retrieve the result.


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

Gets the result of a g_socket_connection_connect_async() call.


def is_connected : Bool #

Checks if @connection is connected. This is equivalent to calling g_socket_is_connected() on @connection's underlying #GSocket.


def local_address : Gio::SocketAddress #

Try to get the local address of a socket connection.


def remote_address : Gio::SocketAddress #

Try to get the remote address of a socket connection.

Since GLib 2.40, when used with g_socket_client_connect() or g_socket_client_connect_async(), during emission of %G_SOCKET_CLIENT_CONNECTING, this function will return the remote address that will be used for the connection. This allows applications to print e.g. "Connecting to example.com (10.42.77.3)...".


def socket : Gio::Socket #

Gets the underlying #GSocket object of the connection. This can be useful if you want to do something unusual on it not supported by the #GSocketConnection APIs.


def socket=(value : Gio::Socket?) : Gio::Socket? #