## Tube channels

Tube channels — service-side interface for the Tube channel interface, StreamTube channel type and DBusTube channel type.

## Synopsis

    #include <telepathy-glib/svc-channel.h>

                        TpSvcChannelInterfaceTube;
                        TpSvcChannelInterfaceTubeClass;
    void                tp_svc_channel_interface_tube_emit_tube_channel_state_changed
                                                            (gpointer instance,
                                                             guint arg_State);
                        TpSvcChannelTypeStreamTube;
                        TpSvcChannelTypeStreamTubeClass;
    void                (*tp_svc_channel_type_stream_tube_offer_impl)
                                                            (TpSvcChannelTypeStreamTube *self,
                                                             guint in_address_type,
                                                             const GValue *in_address,
                                                             guint in_access_control,
                                                             GHashTable *in_parameters,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_type_stream_tube_implement_offer
                                                            (TpSvcChannelTypeStreamTubeClass *klass,
                                                             tp_svc_channel_type_stream_tube_offer_impl impl);
    void                tp_svc_channel_type_stream_tube_return_from_offer
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_channel_type_stream_tube_accept_impl)
                                                            (TpSvcChannelTypeStreamTube *self,
                                                             guint in_address_type,
                                                             guint in_access_control,
                                                             const GValue *in_access_control_param,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_type_stream_tube_implement_accept
                                                            (TpSvcChannelTypeStreamTubeClass *klass,
                                                             tp_svc_channel_type_stream_tube_accept_impl impl);
    void                tp_svc_channel_type_stream_tube_return_from_accept
                                                            (DBusGMethodInvocation *context,
                                                             const GValue *out_address);
    void                tp_svc_channel_type_stream_tube_emit_new_remote_connection
                                                            (gpointer instance,
                                                             guint arg_Handle,
                                                             const GValue *arg_Connection_Param,
                                                             guint arg_Connection_ID);
    void                tp_svc_channel_type_stream_tube_emit_new_local_connection
                                                            (gpointer instance,
                                                             guint arg_Connection_ID);
    void                tp_svc_channel_type_stream_tube_emit_connection_closed
                                                            (gpointer instance,
                                                             guint arg_Connection_ID,
                                                             const gchar *arg_Error,
                                                             const gchar *arg_Message);
                        TpSvcChannelTypeDBusTube;
                        TpSvcChannelTypeDBusTubeClass;
    void                (*tp_svc_channel_type_dbus_tube_offer_impl)
                                                            (TpSvcChannelTypeDBusTube *self,
                                                             GHashTable *in_parameters,
                                                             guint in_access_control,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_type_dbus_tube_implement_offer
                                                            (TpSvcChannelTypeDBusTubeClass *klass,
                                                             tp_svc_channel_type_dbus_tube_offer_impl impl);
    void                tp_svc_channel_type_dbus_tube_return_from_offer
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_address);
    void                (*tp_svc_channel_type_dbus_tube_accept_impl)
                                                            (TpSvcChannelTypeDBusTube *self,
                                                             guint in_access_control,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_type_dbus_tube_implement_accept
                                                            (TpSvcChannelTypeDBusTubeClass *klass,
                                                             tp_svc_channel_type_dbus_tube_accept_impl impl);
    void                tp_svc_channel_type_dbus_tube_return_from_accept
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_address);
    void                tp_svc_channel_type_dbus_tube_emit_dbus_names_changed
                                                            (gpointer instance,
                                                             GHashTable *arg_Added,
                                                             const GArray *arg_Removed);

## Object Hierarchy

      GInterface
       +----TpSvcChannelInterfaceTube

      GInterface
       +----TpSvcChannelTypeStreamTube

      GInterface
       +----TpSvcChannelTypeDBusTube

## Signals

      "tube-channel-state-changed"                     : Has Details
      "connection-closed"                              : Has Details
      "new-local-connection"                           : Has Details
      "new-remote-connection"                          : Has Details
      "d-bus-names-changed"                            : Has Details

## Description

A "tube" is a mechanism for arbitrary data transfer. This section documents the auto-generated C wrappers for the Tube channel interface, StreamTube channel type and DBusTube channel type.

## Details

### TpSvcChannelInterfaceTube

    typedef struct _TpSvcChannelInterfaceTube TpSvcChannelInterfaceTube;

Dummy typedef representing any implementation of this interface.

### TpSvcChannelInterfaceTubeClass

    typedef struct _TpSvcChannelInterfaceTubeClass TpSvcChannelInterfaceTubeClass;

The class of TpSvcChannelInterfaceTube. This interface has no D-Bus methods, so an implementation can typically pass `NULL` to `G_IMPLEMENT_INTERFACE()` as the interface initialization function.

### tp_svc_channel_interface_tube_emit_tube_channel_state_changed ()

    void                tp_svc_channel_interface_tube_emit_tube_channel_state_changed
                                                            (gpointer instance,
                                                             guint arg_State);

Type-safe wrapper around g_signal_emit to emit the TubeChannelStateChanged signal on interface org.freedesktop.Telepathy.Channel.Interface.Tube.

`instance` : | The object implementing this interface
`arg_State` : | guint (FIXME, generate documentation)

### TpSvcChannelTypeStreamTube

    typedef struct _TpSvcChannelTypeStreamTube TpSvcChannelTypeStreamTube;

Dummy typedef representing any implementation of this interface.

### TpSvcChannelTypeStreamTubeClass

    typedef struct _TpSvcChannelTypeStreamTubeClass TpSvcChannelTypeStreamTubeClass;

The class of TpSvcChannelTypeStreamTube.

In a full implementation of this interface (i.e. all methods implemented), the interface initialization function used in `G_IMPLEMENT_INTERFACE()` would typically look like this:

    static void
    implement_channel_type_stream_tube (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_channel_type_stream_tube_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (offer);
      IMPLEMENT (accept);
    #undef IMPLEMENT
    }

### tp_svc_channel_type_stream_tube_offer_impl ()

    void                (*tp_svc_channel_type_stream_tube_offer_impl)
                                                            (TpSvcChannelTypeStreamTube *self,
                                                             guint in_address_type,
                                                             const GValue *in_address,
                                                             guint in_access_control,
                                                             GHashTable *in_parameters,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Offer on interface org.freedesktop.Telepathy.Channel.Type.StreamTube.

`self` : | The object implementing this interface
`in_address_type` : | guint (FIXME, generate documentation)
`in_address` : | const GValue * (FIXME, generate documentation)
`in_access_control` : | guint (FIXME, generate documentation)
`in_parameters` : | GHashTable * (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_channel_type_stream_tube_implement_offer ()

    void                tp_svc_channel_type_stream_tube_implement_offer
                                                            (TpSvcChannelTypeStreamTubeClass *klass,
                                                             tp_svc_channel_type_stream_tube_offer_impl impl);

Register an implementation for the Offer method in the vtable of an implementation of this interface. To be called from the interface init function.

`klass` : | A class whose instances implement this interface
`impl` : | A callback used to implement the Offer D-Bus method

### tp_svc_channel_type_stream_tube_return_from_offer ()

    void                tp_svc_channel_type_stream_tube_return_from_offer
                                                            (DBusGMethodInvocation *context);

Return successfully by calling `dbus_g_method_return()`. This inline function exists only to provide type-safety.

`context` : | The D-Bus method invocation context

### tp_svc_channel_type_stream_tube_accept_impl ()

    void                (*tp_svc_channel_type_stream_tube_accept_impl)
                                                            (TpSvcChannelTypeStreamTube *self,
                                                             guint in_address_type,
                                                             guint in_access_control,
                                                             const GValue *in_access_control_param,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Accept on interface org.freedesktop.Telepathy.Channel.Type.StreamTube.

`self` : | The object implementing this interface
`in_address_type` : | guint (FIXME, generate documentation)
`in_access_control` : | guint (FIXME, generate documentation)
`in_access_control_param` : | const GValue * (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_channel_type_stream_tube_implement_accept ()

    void                tp_svc_channel_type_stream_tube_implement_accept
                                                            (TpSvcChannelTypeStreamTubeClass *klass,
                                                             tp_svc_channel_type_stream_tube_accept_impl impl);

Register an implementation for the Accept method in the vtable of an implementation of this interface. To be called from the interface init function.

`klass` : | A class whose instances implement this interface
`impl` : | A callback used to implement the Accept D-Bus method

### tp_svc_channel_type_stream_tube_return_from_accept ()

    void                tp_svc_channel_type_stream_tube_return_from_accept
                                                            (DBusGMethodInvocation *context,
                                                             const GValue *out_address);

Return successfully by calling `dbus_g_method_return()`. This inline function exists only to provide type-safety.

`context` : | The D-Bus method invocation context
`out_address` : | const GValue * (FIXME, generate documentation)

### tp_svc_channel_type_stream_tube_emit_new_remote_connection ()

    void                tp_svc_channel_type_stream_tube_emit_new_remote_connection
                                                            (gpointer instance,
                                                             guint arg_Handle,
                                                             const GValue *arg_Connection_Param,
                                                             guint arg_Connection_ID);

Type-safe wrapper around g_signal_emit to emit the NewRemoteConnection signal on interface org.freedesktop.Telepathy.Channel.Type.StreamTube.

`instance` : | The object implementing this interface
`arg_Handle` : | guint (FIXME, generate documentation)
`arg_Connection_Param` : | const GValue * (FIXME, generate documentation)
`arg_Connection_ID` : | guint (FIXME, generate documentation)

### tp_svc_channel_type_stream_tube_emit_new_local_connection ()

    void                tp_svc_channel_type_stream_tube_emit_new_local_connection
                                                            (gpointer instance,
                                                             guint arg_Connection_ID);

Type-safe wrapper around g_signal_emit to emit the NewLocalConnection signal on interface org.freedesktop.Telepathy.Channel.Type.StreamTube.

`instance` : | The object implementing this interface
`arg_Connection_ID` : | guint (FIXME, generate documentation)

### tp_svc_channel_type_stream_tube_emit_connection_closed ()

    void                tp_svc_channel_type_stream_tube_emit_connection_closed
                                                            (gpointer instance,
                                                             guint arg_Connection_ID,
                                                             const gchar *arg_Error,
                                                             const gchar *arg_Message);

Type-safe wrapper around g_signal_emit to emit the ConnectionClosed signal on interface org.freedesktop.Telepathy.Channel.Type.StreamTube.

`instance` : | The object implementing this interface
`arg_Connection_ID` : | guint (FIXME, generate documentation)
`arg_Error` : | const gchar * (FIXME, generate documentation)
`arg_Message` : | const gchar * (FIXME, generate documentation)

### TpSvcChannelTypeDBusTube

    typedef struct _TpSvcChannelTypeDBusTube TpSvcChannelTypeDBusTube;

Dummy typedef representing any implementation of this interface.

### TpSvcChannelTypeDBusTubeClass

    typedef struct _TpSvcChannelTypeDBusTubeClass TpSvcChannelTypeDBusTubeClass;

The class of TpSvcChannelTypeDBusTube.

In a full implementation of this interface (i.e. all methods implemented), the interface initialization function used in `G_IMPLEMENT_INTERFACE()` would typically look like this:

    static void
    implement_channel_type_dbus_tube (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_channel_type_dbus_tube_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (offer);
      IMPLEMENT (accept);
    #undef IMPLEMENT
    }

### tp_svc_channel_type_dbus_tube_offer_impl ()

    void                (*tp_svc_channel_type_dbus_tube_offer_impl)
                                                            (TpSvcChannelTypeDBusTube *self,
                                                             GHashTable *in_parameters,
                                                             guint in_access_control,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Offer on interface org.freedesktop.Telepathy.Channel.Type.DBusTube.

`self` : | The object implementing this interface
`in_parameters` : | GHashTable * (FIXME, generate documentation)
`in_access_control` : | guint (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_channel_type_dbus_tube_implement_offer ()

    void                tp_svc_channel_type_dbus_tube_implement_offer
                                                            (TpSvcChannelTypeDBusTubeClass *klass,
                                                             tp_svc_channel_type_dbus_tube_offer_impl impl);

Register an implementation for the Offer method in the vtable of an implementation of this interface. To be called from the interface init function.

`klass` : | A class whose instances implement this interface
`impl` : | A callback used to implement the Offer D-Bus method

### tp_svc_channel_type_dbus_tube_return_from_offer ()

    void                tp_svc_channel_type_dbus_tube_return_from_offer
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_address);

Return successfully by calling `dbus_g_method_return()`. This inline function exists only to provide type-safety.

`context` : | The D-Bus method invocation context
`out_address` : | const gchar * (FIXME, generate documentation)

### tp_svc_channel_type_dbus_tube_accept_impl ()

    void                (*tp_svc_channel_type_dbus_tube_accept_impl)
                                                            (TpSvcChannelTypeDBusTube *self,
                                                             guint in_access_control,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Accept on interface org.freedesktop.Telepathy.Channel.Type.DBusTube.

`self` : | The object implementing this interface
`in_access_control` : | guint (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_channel_type_dbus_tube_implement_accept ()

    void                tp_svc_channel_type_dbus_tube_implement_accept
                                                            (TpSvcChannelTypeDBusTubeClass *klass,
                                                             tp_svc_channel_type_dbus_tube_accept_impl impl);

Register an implementation for the Accept method in the vtable of an implementation of this interface. To be called from the interface init function.

`klass` : | A class whose instances implement this interface
`impl` : | A callback used to implement the Accept D-Bus method

### tp_svc_channel_type_dbus_tube_return_from_accept ()

    void                tp_svc_channel_type_dbus_tube_return_from_accept
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_address);

Return successfully by calling `dbus_g_method_return()`. This inline function exists only to provide type-safety.

`context` : | The D-Bus method invocation context
`out_address` : | const gchar * (FIXME, generate documentation)

### tp_svc_channel_type_dbus_tube_emit_dbus_names_changed ()

    void                tp_svc_channel_type_dbus_tube_emit_dbus_names_changed
                                                            (gpointer instance,
                                                             GHashTable *arg_Added,
                                                             const GArray *arg_Removed);

Type-safe wrapper around g_signal_emit to emit the DBusNamesChanged signal on interface org.freedesktop.Telepathy.Channel.Type.DBusTube.

`instance` : | The object implementing this interface
`arg_Added` : | GHashTable * (FIXME, generate documentation)
`arg_Removed` : | const GArray * (FIXME, generate documentation)

## Signal Details

### The `"tube-channel-state-changed"` signal

    void                user_function                      (TpSvcChannelInterfaceTube *self,
                                                            guint                      arg_State,
                                                            gpointer                   user_data)      : Has Details

The TubeChannelStateChanged D-Bus signal is emitted whenever this GObject signal is.

`self` : | an object
`arg_State` : | guint (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.

### The `"connection-closed"` signal

    void                user_function                      (TpSvcChannelTypeStreamTube *self,
                                                            guint                       arg_Connection_ID,
                                                            gchar                      *arg_Error,
                                                            gchar                      *arg_Message,
                                                            gpointer                    user_data)              : Has Details

The ConnectionClosed D-Bus signal is emitted whenever this GObject signal is.

`self` : | an object
`arg_Connection_ID` : | guint (FIXME, generate documentation)
`arg_Error` : | const gchar * (FIXME, generate documentation)
`arg_Message` : | const gchar * (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.

### The `"new-local-connection"` signal

    void                user_function                      (TpSvcChannelTypeStreamTube *self,
                                                            guint                       arg_Connection_ID,
                                                            gpointer                    user_data)              : Has Details

The NewLocalConnection D-Bus signal is emitted whenever this GObject signal is.

`self` : | an object
`arg_Connection_ID` : | guint (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.

### The `"new-remote-connection"` signal

    void                user_function                      (TpSvcChannelTypeStreamTube *self,
                                                            guint                       arg_Handle,
                                                            GValue                     *arg_Connection_Param,
                                                            guint                       arg_Connection_ID,
                                                            gpointer                    user_data)                 : Has Details

The NewRemoteConnection D-Bus signal is emitted whenever this GObject signal is.

`self` : | an object
`arg_Handle` : | guint (FIXME, generate documentation)
`arg_Connection_Param` : | const GValue * (FIXME, generate documentation)
`arg_Connection_ID` : | guint (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.

### The `"d-bus-names-changed"` signal

    void                user_function                      (TpSvcChannelTypeDBusTube *self,
                                                            GArray_guint_            *arg_Removed,
                                                            gpointer                  user_data)        : Has Details

The DBusNamesChanged D-Bus signal is emitted whenever this GObject signal is.

`self` : | an object
`arg_Added` : | GHashTable * (FIXME, generate documentation)
`arg_Removed` : | const GArray * (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.