## Service-side Channel base interface

Service-side Channel base interface — GInterface for Telepathy Channel objects

## Synopsis

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

                        TpSvcChannel;
                        TpSvcChannelClass;
    void                (*tp_svc_channel_close_impl)        (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_implement_close      (TpSvcChannelClass *klass,
                                                             tp_svc_channel_close_impl impl);
    void                tp_svc_channel_return_from_close    (DBusGMethodInvocation *context);
    void                (*tp_svc_channel_get_channel_type_impl)
                                                            (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_implement_get_channel_type
                                                            (TpSvcChannelClass *klass,
                                                             tp_svc_channel_get_channel_type_impl impl);
    void                tp_svc_channel_return_from_get_channel_type
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_Channel_Type);
    void                (*tp_svc_channel_get_handle_impl)   (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_implement_get_handle (TpSvcChannelClass *klass,
                                                             tp_svc_channel_get_handle_impl impl);
    void                tp_svc_channel_return_from_get_handle
                                                            (DBusGMethodInvocation *context,
                                                             guint out_Target_Handle_Type,
                                                             guint out_Target_Handle);
    void                (*tp_svc_channel_get_interfaces_impl)
                                                            (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_implement_get_interfaces
                                                            (TpSvcChannelClass *klass,
                                                             tp_svc_channel_get_interfaces_impl impl);
    void                tp_svc_channel_return_from_get_interfaces
                                                            (DBusGMethodInvocation *context,
                                                             const gchar **out_Interfaces);
    void                tp_svc_channel_emit_closed          (gpointer instance);

                        TpSvcChannelInterfaceDestroyable;
                        TpSvcChannelInterfaceDestroyableClass;
    void                (*tp_svc_channel_interface_destroyable_destroy_impl)
                                                            (TpSvcChannelInterfaceDestroyable *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_channel_interface_destroyable_implement_destroy
                                                            (TpSvcChannelInterfaceDestroyableClass *klass,
                                                             tp_svc_channel_interface_destroyable_destroy_impl impl);
    void                tp_svc_channel_interface_destroyable_return_from_destroy
                                                            (DBusGMethodInvocation *context);

## Object Hierarchy

      GInterface
       +----TpSvcChannel

## Known Derived Interfaces

TpSvcChannel is required by TpExportableChannel.

## Signals

      "closed"                                         : Run Last / Has Details

## Description

This interface (auto-generated from the Telepathy spec) makes it easier to export objects implementing the Telepathy Channel.

## Details

### TpSvcChannel

    typedef struct _TpSvcChannel TpSvcChannel;

Dummy typedef representing any implementation of this interface.

### TpSvcChannelClass

    typedef struct _TpSvcChannelClass TpSvcChannelClass;

The class of TpSvcChannel.

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 (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_channel_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (close);
      IMPLEMENT (get_channel_type);
      IMPLEMENT (get_handle);
      IMPLEMENT (get_interfaces);
    #undef IMPLEMENT
    }

### tp_svc_channel_close_impl ()

    void                (*tp_svc_channel_close_impl)        (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);

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

`self` : | The object implementing this interface
`context` : | Used to return values or throw an error

### tp_svc_channel_implement_close ()

    void                tp_svc_channel_implement_close      (TpSvcChannelClass *klass,
                                                             tp_svc_channel_close_impl impl);

Register an implementation for the Close 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 Close D-Bus method

### tp_svc_channel_return_from_close ()

    void                tp_svc_channel_return_from_close    (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_get_channel_type_impl ()

    void                (*tp_svc_channel_get_channel_type_impl)
                                                            (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);

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

`self` : | The object implementing this interface
`context` : | Used to return values or throw an error

### tp_svc_channel_implement_get_channel_type ()

    void                tp_svc_channel_implement_get_channel_type
                                                            (TpSvcChannelClass *klass,
                                                             tp_svc_channel_get_channel_type_impl impl);

Register an implementation for the GetChannelType 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 GetChannelType D-Bus method

### tp_svc_channel_return_from_get_channel_type ()

    void                tp_svc_channel_return_from_get_channel_type
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_Channel_Type);

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_Channel_Type` : | const gchar * (FIXME, generate documentation)

### tp_svc_channel_get_handle_impl ()

    void                (*tp_svc_channel_get_handle_impl)   (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);

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

`self` : | The object implementing this interface
`context` : | Used to return values or throw an error

### tp_svc_channel_implement_get_handle ()

    void                tp_svc_channel_implement_get_handle (TpSvcChannelClass *klass,
                                                             tp_svc_channel_get_handle_impl impl);

Register an implementation for the GetHandle 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 GetHandle D-Bus method

### tp_svc_channel_return_from_get_handle ()

    void                tp_svc_channel_return_from_get_handle
                                                            (DBusGMethodInvocation *context,
                                                             guint out_Target_Handle_Type,
                                                             guint out_Target_Handle);

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_Target_Handle_Type` : | guint (FIXME, generate documentation)
`out_Target_Handle` : | guint (FIXME, generate documentation)

### tp_svc_channel_get_interfaces_impl ()

    void                (*tp_svc_channel_get_interfaces_impl)
                                                            (TpSvcChannel *self,
                                                             DBusGMethodInvocation *context);

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

`self` : | The object implementing this interface
`context` : | Used to return values or throw an error

### tp_svc_channel_implement_get_interfaces ()

    void                tp_svc_channel_implement_get_interfaces
                                                            (TpSvcChannelClass *klass,
                                                             tp_svc_channel_get_interfaces_impl impl);

Register an implementation for the GetInterfaces 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 GetInterfaces D-Bus method

### tp_svc_channel_return_from_get_interfaces ()

    void                tp_svc_channel_return_from_get_interfaces
                                                            (DBusGMethodInvocation *context,
                                                             const gchar **out_Interfaces);

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_Interfaces` : | const gchar ** (FIXME, generate documentation)

### tp_svc_channel_emit_closed ()

    void                tp_svc_channel_emit_closed          (gpointer instance);

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

`instance` : | The object implementing this interface

### TpSvcChannelInterfaceDestroyable

    typedef struct _TpSvcChannelInterfaceDestroyable TpSvcChannelInterfaceDestroyable;

Dummy typedef representing any implementation of this interface.

### TpSvcChannelInterfaceDestroyableClass

    typedef struct _TpSvcChannelInterfaceDestroyableClass TpSvcChannelInterfaceDestroyableClass;

The class of TpSvcChannelInterfaceDestroyable.

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_interface_destroyable (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_channel_interface_destroyable_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (destroy);
    #undef IMPLEMENT
    }

### tp_svc_channel_interface_destroyable_destroy_impl ()

    void                (*tp_svc_channel_interface_destroyable_destroy_impl)
                                                            (TpSvcChannelInterfaceDestroyable *self,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Destroy on interface org.freedesktop.Telepathy.Channel.Interface.Destroyable.

`self` : | The object implementing this interface
`context` : | Used to return values or throw an error

### tp_svc_channel_interface_destroyable_implement_destroy ()

    void                tp_svc_channel_interface_destroyable_implement_destroy
                                                            (TpSvcChannelInterfaceDestroyableClass *klass,
                                                             tp_svc_channel_interface_destroyable_destroy_impl impl);

Register an implementation for the Destroy 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 Destroy D-Bus method

### tp_svc_channel_interface_destroyable_return_from_destroy ()

    void                tp_svc_channel_interface_destroyable_return_from_destroy
                                                            (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

## Signal Details

### The `"closed"` signal

    void                user_function                      (TpSvcChannel *arg0,
                                                            gpointer      user_data)      : Run Last / Has Details

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

`user_data` : | user data set when the signal handler was connected.

## See Also

TpChannelIface