## Generic service-side interfaces

Generic service-side interfaces — GInterfaces for D-Bus objects exporting Telepathy properties and common D-Bus core interfaces

## Synopsis

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

                        TpSvcDBusIntrospectable;
                        TpSvcDBusIntrospectableClass;
                        TpSvcDBusProperties;
                        TpSvcDBusPropertiesClass;
                        TpSvcPropertiesInterface;
                        TpSvcPropertiesInterfaceClass;
    void                tp_svc_dbus_introspectable_implement_introspect
                                                            (TpSvcDBusIntrospectableClass *klass,
                                                             tp_svc_dbus_introspectable_introspect_impl impl);
    void                (*tp_svc_dbus_introspectable_introspect_impl)
                                                            (TpSvcDBusIntrospectable *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_dbus_introspectable_return_from_introspect
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_XML_Data);
    void                (*tp_svc_dbus_properties_get_all_impl)
                                                            (TpSvcDBusProperties *self,
                                                             const gchar *in_Interface_Name,
                                                             DBusGMethodInvocation *context);
    void                (*tp_svc_dbus_properties_get_impl)  (TpSvcDBusProperties *self,
                                                             const gchar *in_Interface_Name,
                                                             const gchar *in_Property_Name,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_dbus_properties_implement_get
                                                            (TpSvcDBusPropertiesClass *klass,
                                                             tp_svc_dbus_properties_get_impl impl);
    void                tp_svc_dbus_properties_implement_get_all
                                                            (TpSvcDBusPropertiesClass *klass,
                                                             tp_svc_dbus_properties_get_all_impl impl);
    void                tp_svc_dbus_properties_implement_set
                                                            (TpSvcDBusPropertiesClass *klass,
                                                             tp_svc_dbus_properties_set_impl impl);
    void                tp_svc_dbus_properties_return_from_get
                                                            (DBusGMethodInvocation *context,
                                                             const GValue *out_Value);
    void                tp_svc_dbus_properties_return_from_get_all
                                                            (DBusGMethodInvocation *context,
                                                             GHashTable *out_Properties);
    void                tp_svc_dbus_properties_return_from_set
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_dbus_properties_set_impl)  (TpSvcDBusProperties *self,
                                                             const gchar *in_Interface_Name,
                                                             const gchar *in_Property_Name,
                                                             const GValue *in_Value,
                                                             DBusGMethodInvocation *context);
    void                (*tp_svc_properties_interface_get_properties_impl)
                                                            (TpSvcPropertiesInterface *self,
                                                             const GArray *in_Properties,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_properties_interface_return_from_get_properties
                                                            (DBusGMethodInvocation *context,
                                                             const GPtrArray *out_Values);
    void                tp_svc_properties_interface_implement_get_properties
                                                            (TpSvcPropertiesInterfaceClass *klass,
                                                             tp_svc_properties_interface_get_properties_impl impl);
    void                (*tp_svc_properties_interface_list_properties_impl)
                                                            (TpSvcPropertiesInterface *self,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_properties_interface_return_from_list_properties
                                                            (DBusGMethodInvocation *context,
                                                             const GPtrArray *out_Available_Properties);
    void                tp_svc_properties_interface_implement_list_properties
                                                            (TpSvcPropertiesInterfaceClass *klass,
                                                             tp_svc_properties_interface_list_properties_impl impl);
    void                (*tp_svc_properties_interface_set_properties_impl)
                                                            (TpSvcPropertiesInterface *self,
                                                             const GPtrArray *in_Properties,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_properties_interface_return_from_set_properties
                                                            (DBusGMethodInvocation *context);
    void                tp_svc_properties_interface_implement_set_properties
                                                            (TpSvcPropertiesInterfaceClass *klass,
                                                             tp_svc_properties_interface_set_properties_impl impl);
    void                tp_svc_properties_interface_emit_properties_changed
                                                            (gpointer instance,
                                                             const GPtrArray *arg_Properties);
    void                tp_svc_properties_interface_emit_property_flags_changed
                                                            (gpointer instance,
                                                             const GPtrArray *arg_Properties);

## Object Hierarchy

      GInterface
       +----TpSvcDBusIntrospectable

      GInterface
       +----TpSvcDBusProperties

      GInterface
       +----TpSvcPropertiesInterface

## Known Implementations

TpSvcDBusProperties is implemented by TpDebugSender and TpBaseConnection.

## Signals

      "properties-changed"                             : Run Last / Has Details
      "property-flags-changed"                         : Run Last / Has Details

## Description

The D-Bus Properties interface associates named properties with any D-Bus object.

The D-Bus Introspectable interface provides introspection information.

The D-Bus Peer interface is exported by every D-Bus object.

The Telepathy Properties interface associates a number of named properties with a channel, connection or other D-Bus object. Signals are emitted when the properties or their flags (readable/writable) change.

## Details

### TpSvcDBusIntrospectable

    typedef struct _TpSvcDBusIntrospectable TpSvcDBusIntrospectable;

Dummy typedef representing any implementation of this interface.

### TpSvcDBusIntrospectableClass

    typedef struct _TpSvcDBusIntrospectableClass TpSvcDBusIntrospectableClass;

The class of TpSvcDBusIntrospectable.

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

### TpSvcDBusProperties

    typedef struct _TpSvcDBusProperties TpSvcDBusProperties;

Dummy typedef representing any implementation of this interface.

### TpSvcDBusPropertiesClass

    typedef struct _TpSvcDBusPropertiesClass TpSvcDBusPropertiesClass;

The class of TpSvcDBusProperties.

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_dbus_properties (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_dbus_properties_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (get);
      IMPLEMENT (set);
      IMPLEMENT (get_all);
    #undef IMPLEMENT
    }

### TpSvcPropertiesInterface

    typedef struct _TpSvcPropertiesInterface TpSvcPropertiesInterface;

Dummy typedef representing any implementation of this interface.

### TpSvcPropertiesInterfaceClass

    typedef struct _TpSvcPropertiesInterfaceClass TpSvcPropertiesInterfaceClass;

The class of TpSvcPropertiesInterface.

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_properties_interface (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_properties_interface_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (get_properties);
      IMPLEMENT (list_properties);
      IMPLEMENT (set_properties);
    #undef IMPLEMENT
    }

### tp_svc_dbus_introspectable_implement_introspect ()

    void                tp_svc_dbus_introspectable_implement_introspect
                                                            (TpSvcDBusIntrospectableClass *klass,
                                                             tp_svc_dbus_introspectable_introspect_impl impl);

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

### tp_svc_dbus_introspectable_introspect_impl ()

    void                (*tp_svc_dbus_introspectable_introspect_impl)
                                                            (TpSvcDBusIntrospectable *self,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Introspect on interface org.freedesktop.DBus.Introspectable.

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

### tp_svc_dbus_introspectable_return_from_introspect ()

    void                tp_svc_dbus_introspectable_return_from_introspect
                                                            (DBusGMethodInvocation *context,
                                                             const gchar *out_XML_Data);

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

### tp_svc_dbus_properties_get_all_impl ()

    void                (*tp_svc_dbus_properties_get_all_impl)
                                                            (TpSvcDBusProperties *self,
                                                             const gchar *in_Interface_Name,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method GetAll on interface org.freedesktop.DBus.Properties.

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

### tp_svc_dbus_properties_get_impl ()

    void                (*tp_svc_dbus_properties_get_impl)  (TpSvcDBusProperties *self,
                                                             const gchar *in_Interface_Name,
                                                             const gchar *in_Property_Name,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Get on interface org.freedesktop.DBus.Properties.

`self` : | The object implementing this interface
`in_Interface_Name` : | const gchar * (FIXME, generate documentation)
`in_Property_Name` : | const gchar * (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_dbus_properties_implement_get ()

    void                tp_svc_dbus_properties_implement_get
                                                            (TpSvcDBusPropertiesClass *klass,
                                                             tp_svc_dbus_properties_get_impl impl);

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

### tp_svc_dbus_properties_implement_get_all ()

    void                tp_svc_dbus_properties_implement_get_all
                                                            (TpSvcDBusPropertiesClass *klass,
                                                             tp_svc_dbus_properties_get_all_impl impl);

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

### tp_svc_dbus_properties_implement_set ()

    void                tp_svc_dbus_properties_implement_set
                                                            (TpSvcDBusPropertiesClass *klass,
                                                             tp_svc_dbus_properties_set_impl impl);

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

### tp_svc_dbus_properties_return_from_get ()

    void                tp_svc_dbus_properties_return_from_get
                                                            (DBusGMethodInvocation *context,
                                                             const GValue *out_Value);

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

### tp_svc_dbus_properties_return_from_get_all ()

    void                tp_svc_dbus_properties_return_from_get_all
                                                            (DBusGMethodInvocation *context,
                                                             GHashTable *out_Properties);

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_Properties` : | GHashTable * (FIXME, generate documentation)

### tp_svc_dbus_properties_return_from_set ()

    void                tp_svc_dbus_properties_return_from_set
                                                            (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_dbus_properties_set_impl ()

    void                (*tp_svc_dbus_properties_set_impl)  (TpSvcDBusProperties *self,
                                                             const gchar *in_Interface_Name,
                                                             const gchar *in_Property_Name,
                                                             const GValue *in_Value,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method Set on interface org.freedesktop.DBus.Properties.

`self` : | The object implementing this interface
`in_Interface_Name` : | const gchar * (FIXME, generate documentation)
`in_Property_Name` : | const gchar * (FIXME, generate documentation)
`in_Value` : | const GValue * (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_properties_interface_get_properties_impl ()

    void                (*tp_svc_properties_interface_get_properties_impl)
                                                            (TpSvcPropertiesInterface *self,
                                                             const GArray *in_Properties,
                                                             DBusGMethodInvocation *context);

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

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

### tp_svc_properties_interface_return_from_get_properties ()

    void                tp_svc_properties_interface_return_from_get_properties
                                                            (DBusGMethodInvocation *context,
                                                             const GPtrArray *out_Values);

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

### tp_svc_properties_interface_implement_get_properties ()

    void                tp_svc_properties_interface_implement_get_properties
                                                            (TpSvcPropertiesInterfaceClass *klass,
                                                             tp_svc_properties_interface_get_properties_impl impl);

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

### tp_svc_properties_interface_list_properties_impl ()

    void                (*tp_svc_properties_interface_list_properties_impl)
                                                            (TpSvcPropertiesInterface *self,
                                                             DBusGMethodInvocation *context);

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

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

### tp_svc_properties_interface_return_from_list_properties ()

    void                tp_svc_properties_interface_return_from_list_properties
                                                            (DBusGMethodInvocation *context,
                                                             const GPtrArray *out_Available_Properties);

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

### tp_svc_properties_interface_implement_list_properties ()

    void                tp_svc_properties_interface_implement_list_properties
                                                            (TpSvcPropertiesInterfaceClass *klass,
                                                             tp_svc_properties_interface_list_properties_impl impl);

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

### tp_svc_properties_interface_set_properties_impl ()

    void                (*tp_svc_properties_interface_set_properties_impl)
                                                            (TpSvcPropertiesInterface *self,
                                                             const GPtrArray *in_Properties,
                                                             DBusGMethodInvocation *context);

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

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

### tp_svc_properties_interface_return_from_set_properties ()

    void                tp_svc_properties_interface_return_from_set_properties
                                                            (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_properties_interface_implement_set_properties ()

    void                tp_svc_properties_interface_implement_set_properties
                                                            (TpSvcPropertiesInterfaceClass *klass,
                                                             tp_svc_properties_interface_set_properties_impl impl);

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

### tp_svc_properties_interface_emit_properties_changed ()

    void                tp_svc_properties_interface_emit_properties_changed
                                                            (gpointer instance,
                                                             const GPtrArray *arg_Properties);

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

`instance` : | The object implementing this interface
`arg_Properties` : | const GPtrArray * (FIXME, generate documentation)

### tp_svc_properties_interface_emit_property_flags_changed ()

    void                tp_svc_properties_interface_emit_property_flags_changed
                                                            (gpointer instance,
                                                             const GPtrArray *arg_Properties);

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

`instance` : | The object implementing this interface
`arg_Properties` : | const GPtrArray * (FIXME, generate documentation)

## Signal Details

### The `"properties-changed"` signal

    void                user_function                      (TpSvcPropertiesInterface *arg_Properties,
                                                            gpointer                  user_data)           : Run Last / Has Details

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

`arg_Properties` : | const GPtrArray * (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.

### The `"property-flags-changed"` signal

    void                user_function                      (TpSvcPropertiesInterface *arg_Properties,
                                                            gpointer                  user_data)           : Run Last / Has Details

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

`arg_Properties` : | const GPtrArray * (FIXME, generate documentation)
`user_data` : | user data set when the signal handler was connected.

## See Also

TpPropertiesMixin