## 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

## Known Implementations

TpSvcClient is implemented by TpBaseClient, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

TpSvcClientApprover is implemented by TpBaseClient, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

TpSvcClientHandler is implemented by TpBaseClient, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

TpSvcClientInterfaceRequests is implemented by TpBaseClient, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

TpSvcClientObserver is implemented by TpBaseClient, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

## 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