## Service-side Client interfaces

Service-side Client interfaces — interfaces used to be an Observer, Approver and Handler

## Synopsis

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

                        TpSvcClient;
                        TpSvcClientClass;

                        TpSvcClientApprover;
                        TpSvcClientApproverClass;
    void                tp_svc_client_approver_return_from_add_dispatch_operation
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_client_approver_add_dispatch_operation_impl)
                                                            (TpSvcClientApprover *self,
                                                             const GPtrArray *in_Channels,
                                                             const gchar *in_DispatchOperation,
                                                             GHashTable *in_Properties,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_client_approver_implement_add_dispatch_operation
                                                            (TpSvcClientApproverClass *klass,
                                                             tp_svc_client_approver_add_dispatch_operation_impl impl);

                        TpSvcClientHandler;
                        TpSvcClientHandlerClass;
    void                tp_svc_client_handler_return_from_handle_channels
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_client_handler_handle_channels_impl)
                                                            (TpSvcClientHandler *self,
                                                             const gchar *in_Account,
                                                             const gchar *in_Connection,
                                                             const GPtrArray *in_Channels,
                                                             const GPtrArray *in_Requests_Satisfied,
                                                             guint64 in_User_Action_Time,
                                                             GHashTable *in_Handler_Info,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_client_handler_implement_handle_channels
                                                            (TpSvcClientHandlerClass *klass,
                                                             tp_svc_client_handler_handle_channels_impl impl);
                        TpSvcClientInterfaceRequests;
                        TpSvcClientInterfaceRequestsClass;
    void                tp_svc_client_interface_requests_return_from_add_request
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_client_interface_requests_add_request_impl)
                                                            (TpSvcClientInterfaceRequests *self,
                                                             const gchar *in_Request,
                                                             GHashTable *in_Properties,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_client_interface_requests_implement_add_request
                                                            (TpSvcClientInterfaceRequestsClass *klass,
                                                             tp_svc_client_interface_requests_add_request_impl impl);
    void                tp_svc_client_interface_requests_return_from_remove_request
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_client_interface_requests_remove_request_impl)
                                                            (TpSvcClientInterfaceRequests *self,
                                                             const gchar *in_Request,
                                                             const gchar *in_Error,
                                                             const gchar *in_Message,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_client_interface_requests_implement_remove_request
                                                            (TpSvcClientInterfaceRequestsClass *klass,
                                                             tp_svc_client_interface_requests_remove_request_impl impl);

                        TpSvcClientObserver;
                        TpSvcClientObserverClass;
    void                tp_svc_client_observer_return_from_observe_channels
                                                            (DBusGMethodInvocation *context);
    void                (*tp_svc_client_observer_observe_channels_impl)
                                                            (TpSvcClientObserver *self,
                                                             const gchar *in_Account,
                                                             const gchar *in_Connection,
                                                             const GPtrArray *in_Channels,
                                                             const gchar *in_Dispatch_Operation,
                                                             const GPtrArray *in_Requests_Satisfied,
                                                             GHashTable *in_Observer_Info,
                                                             DBusGMethodInvocation *context);
    void                tp_svc_client_observer_implement_observe_channels
                                                            (TpSvcClientObserverClass *klass,
                                                             tp_svc_client_observer_observe_channels_impl impl);

## Object Hierarchy

      GInterface
       +----TpSvcClient

      GInterface
       +----TpSvcClientApprover

      GInterface
       +----TpSvcClientHandler

      GInterface
       +----TpSvcClientInterfaceRequests

      GInterface
       +----TpSvcClientObserver

## Description

These interfaces (auto-generated from the telepathy spec) make it easier to export the objects used to implement a Telepathy client.

Clients such as loggers, new message notification windows and chat UIs should implement some or all of the Client types (Observer, Approver and/or Handler): see telepathy-spec for details.

## Details

### TpSvcClient

    typedef struct _TpSvcClient TpSvcClient;

Dummy typedef representing any implementation of this interface.

### TpSvcClientClass

    typedef struct _TpSvcClientClass TpSvcClientClass;

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

### TpSvcClientApprover

    typedef struct _TpSvcClientApprover TpSvcClientApprover;

Dummy typedef representing any implementation of this interface.

### TpSvcClientApproverClass

    typedef struct _TpSvcClientApproverClass TpSvcClientApproverClass;

The class of TpSvcClientApprover.

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

### tp_svc_client_approver_return_from_add_dispatch_operation ()

    void                tp_svc_client_approver_return_from_add_dispatch_operation
                                                            (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_client_approver_add_dispatch_operation_impl ()

    void                (*tp_svc_client_approver_add_dispatch_operation_impl)
                                                            (TpSvcClientApprover *self,
                                                             const GPtrArray *in_Channels,
                                                             const gchar *in_DispatchOperation,
                                                             GHashTable *in_Properties,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method AddDispatchOperation on interface org.freedesktop.Telepathy.Client.Approver.

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

### tp_svc_client_approver_implement_add_dispatch_operation ()

    void                tp_svc_client_approver_implement_add_dispatch_operation
                                                            (TpSvcClientApproverClass *klass,
                                                             tp_svc_client_approver_add_dispatch_operation_impl impl);

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

### TpSvcClientHandler

    typedef struct _TpSvcClientHandler TpSvcClientHandler;

Dummy typedef representing any implementation of this interface.

### TpSvcClientHandlerClass

    typedef struct _TpSvcClientHandlerClass TpSvcClientHandlerClass;

The class of TpSvcClientHandler.

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

### tp_svc_client_handler_return_from_handle_channels ()

    void                tp_svc_client_handler_return_from_handle_channels
                                                            (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_client_handler_handle_channels_impl ()

    void                (*tp_svc_client_handler_handle_channels_impl)
                                                            (TpSvcClientHandler *self,
                                                             const gchar *in_Account,
                                                             const gchar *in_Connection,
                                                             const GPtrArray *in_Channels,
                                                             const GPtrArray *in_Requests_Satisfied,
                                                             guint64 in_User_Action_Time,
                                                             GHashTable *in_Handler_Info,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method HandleChannels on interface org.freedesktop.Telepathy.Client.Handler.

`self` : | The object implementing this interface
`in_Account` : | const gchar * (FIXME, generate documentation)
`in_Connection` : | const gchar * (FIXME, generate documentation)
`in_Channels` : | const GPtrArray * (FIXME, generate documentation)
`in_Requests_Satisfied` : | const GPtrArray * (FIXME, generate documentation)
`in_User_Action_Time` : | guint64 (FIXME, generate documentation)
`in_Handler_Info` : | GHashTable * (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_client_handler_implement_handle_channels ()

    void                tp_svc_client_handler_implement_handle_channels
                                                            (TpSvcClientHandlerClass *klass,
                                                             tp_svc_client_handler_handle_channels_impl impl);

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

### TpSvcClientInterfaceRequests

    typedef struct _TpSvcClientInterfaceRequests TpSvcClientInterfaceRequests;

Dummy typedef representing any implementation of this interface.

### TpSvcClientInterfaceRequestsClass

    typedef struct _TpSvcClientInterfaceRequestsClass TpSvcClientInterfaceRequestsClass;

The class of TpSvcClientInterfaceRequests.

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_client_interface_requests (gpointer klass,
        gpointer unused G_GNUC_UNUSED)
    {
    #define IMPLEMENT(x) tp_svc_client_interface_requests_implement_##x (\
      klass, my_object_##x)
      IMPLEMENT (add_request);
      IMPLEMENT (remove_request);
    #undef IMPLEMENT
    }

### tp_svc_client_interface_requests_return_from_add_request ()

    void                tp_svc_client_interface_requests_return_from_add_request
                                                            (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_client_interface_requests_add_request_impl ()

    void                (*tp_svc_client_interface_requests_add_request_impl)
                                                            (TpSvcClientInterfaceRequests *self,
                                                             const gchar *in_Request,
                                                             GHashTable *in_Properties,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method AddRequest on interface org.freedesktop.Telepathy.Client.Interface.Requests.

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

### tp_svc_client_interface_requests_implement_add_request ()

    void                tp_svc_client_interface_requests_implement_add_request
                                                            (TpSvcClientInterfaceRequestsClass *klass,
                                                             tp_svc_client_interface_requests_add_request_impl impl);

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

### tp_svc_client_interface_requests_return_from_remove_request ()

    void                tp_svc_client_interface_requests_return_from_remove_request
                                                            (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_client_interface_requests_remove_request_impl ()

    void                (*tp_svc_client_interface_requests_remove_request_impl)
                                                            (TpSvcClientInterfaceRequests *self,
                                                             const gchar *in_Request,
                                                             const gchar *in_Error,
                                                             const gchar *in_Message,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method RemoveRequest on interface org.freedesktop.Telepathy.Client.Interface.Requests.

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

### tp_svc_client_interface_requests_implement_remove_request ()

    void                tp_svc_client_interface_requests_implement_remove_request
                                                            (TpSvcClientInterfaceRequestsClass *klass,
                                                             tp_svc_client_interface_requests_remove_request_impl impl);

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

### TpSvcClientObserver

    typedef struct _TpSvcClientObserver TpSvcClientObserver;

Dummy typedef representing any implementation of this interface.

### TpSvcClientObserverClass

    typedef struct _TpSvcClientObserverClass TpSvcClientObserverClass;

The class of TpSvcClientObserver.

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

### tp_svc_client_observer_return_from_observe_channels ()

    void                tp_svc_client_observer_return_from_observe_channels
                                                            (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_client_observer_observe_channels_impl ()

    void                (*tp_svc_client_observer_observe_channels_impl)
                                                            (TpSvcClientObserver *self,
                                                             const gchar *in_Account,
                                                             const gchar *in_Connection,
                                                             const GPtrArray *in_Channels,
                                                             const gchar *in_Dispatch_Operation,
                                                             const GPtrArray *in_Requests_Satisfied,
                                                             GHashTable *in_Observer_Info,
                                                             DBusGMethodInvocation *context);

The signature of an implementation of the D-Bus method ObserveChannels on interface org.freedesktop.Telepathy.Client.Observer.

`self` : | The object implementing this interface
`in_Account` : | const gchar * (FIXME, generate documentation)
`in_Connection` : | const gchar * (FIXME, generate documentation)
`in_Channels` : | const GPtrArray * (FIXME, generate documentation)
`in_Dispatch_Operation` : | const gchar * (FIXME, generate documentation)
`in_Requests_Satisfied` : | const GPtrArray * (FIXME, generate documentation)
`in_Observer_Info` : | GHashTable * (FIXME, generate documentation)
`context` : | Used to return values or throw an error

### tp_svc_client_observer_implement_observe_channels ()

    void                tp_svc_client_observer_implement_observe_channels
                                                            (TpSvcClientObserverClass *klass,
                                                             tp_svc_client_observer_observe_channels_impl impl);

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