### Interface

# Gio Proxy

since: 2.26

#### Description

    interface Gio.Proxy : GObject.Object

A `GProxy` handles connecting to a remote host via a given type of proxy server. It is implemented by the `gio-proxy` extension point. The extensions are named after their proxy protocol name. As an example, a SOCKS5 proxy implementation can be retrieved with the name `socks5` using the function `g_io_extension_point_get_extension_by_name()`.

Available since: 2.26

#### Prerequisite

In order to implement Proxy, your type must inherit from`GObject`.

#### Functions

###### g_proxy_get_default_for_protocol

Find the `gio-proxy` extension point for a proxy implementation that supports the specified protocol.

since: 2.26

#### Instance methods

###### g_proxy_connect

Given `connection` to communicate with a proxy (eg, a `GSocketConnection` that is connected to the proxy server), this does the necessary handshake to connect to `proxy_address`, and if required, wraps the `GIOStream` to handle proxy payload.

since: 2.26

###### g_proxy_connect_async

Asynchronous version of g_proxy_connect().

since: 2.26

###### g_proxy_connect_finish

See g_proxy_connect().

since: 2.26

###### g_proxy_supports_hostname

Some proxy protocols expect to be passed a hostname, which they will resolve to an IP address themselves. Others, like SOCKS4, do not allow this. This function will return `FALSE` if `proxy` is implementing such a protocol. When `FALSE` is returned, the caller should resolve the destination hostname first, and then pass a `GProxyAddress` containing the stringified IP address to `g_proxy_connect()` or g_proxy_connect_async().

since: 2.26

#### Interface structure

    struct GioProxyInterface {
      GTypeInterface g_iface;
      GIOStream* (* connect) (
        GProxy* proxy,
        GIOStream* connection,
        GProxyAddress* proxy_address,
        GCancellable* cancellable,
        GError** error
      );
      void (* connect_async) (
        GProxy* proxy,
        GIOStream* connection,
        GProxyAddress* proxy_address,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      GIOStream* (* connect_finish) (
        GProxy* proxy,
        GAsyncResult* result,
        GError** error
      );
      gboolean (* supports_hostname) (
        GProxy* proxy
      );

    }

Provides an interface for handling proxy connection and payload.

###### Interface members

`g_iface`

    GTypeInterface

| The parent interface.

`connect`

    GIOStream* (* connect) (
        GProxy* proxy,
        GIOStream* connection,
        GProxyAddress* proxy_address,
        GCancellable* cancellable,
        GError** error
      )

| Connect to proxy server and wrap (if required) the #connection to handle payload.

`connect_async`

    void (* connect_async) (
        GProxy* proxy,
        GIOStream* connection,
        GProxyAddress* proxy_address,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      )

| Same as `connect()` but asynchronous.

`connect_finish`

    GIOStream* (* connect_finish) (
        GProxy* proxy,
        GAsyncResult* result,
        GError** error
      )

| Returns the result of `connect_async()`

`supports_hostname`

    gboolean (* supports_hostname) (
        GProxy* proxy
      )

| Returns whether the proxy supports hostname lookups.

#### Virtual methods

###### Gio.Proxy.connect

Given `connection` to communicate with a proxy (eg, a `GSocketConnection` that is connected to the proxy server), this does the necessary handshake to connect to `proxy_address`, and if required, wraps the `GIOStream` to handle proxy payload.

since: 2.26

###### Gio.Proxy.connect_async

Asynchronous version of g_proxy_connect().

since: 2.26

###### Gio.Proxy.connect_finish

See g_proxy_connect().

since: 2.26

###### Gio.Proxy.supports_hostname

Some proxy protocols expect to be passed a hostname, which they will resolve to an IP address themselves. Others, like SOCKS4, do not allow this. This function will return `FALSE` if `proxy` is implementing such a protocol. When `FALSE` is returned, the caller should resolve the destination hostname first, and then pass a `GProxyAddress` containing the stringified IP address to `g_proxy_connect()` or g_proxy_connect_async().

since: 2.26