## EDBusServer

EDBusServer — An abstract base class for a D-Bus server

## Synopsis

    #include <libebackend/libebackend.h>

    struct              EDBusServer;
    enum                EDBusServerExitCode;
    EDBusServerExitCode e_dbus_server_run                   (EDBusServer *server,
                                                             gboolean wait_for_client);
    void                e_dbus_server_quit                  (EDBusServer *server,
                                                             EDBusServerExitCode code);
    void                e_dbus_server_hold                  (EDBusServer *server);
    void                e_dbus_server_release               (EDBusServer *server);
    void                e_dbus_server_load_modules          (EDBusServer *server);

## Object Hierarchy

      GObject
       +----EDBusServer
             +----EDataFactory

## Implemented Interfaces

EDBusServer implements EExtensible.

## Signals

      "bus-acquired"                                   : Run Last
      "bus-name-acquired"                              : Run Last
      "bus-name-lost"                                  : Run Last
      "quit-server"                                    : Run Last
      "run-server"                                     : Run Last

## Description

## Details

### struct EDBusServer

    struct EDBusServer;

Contains only private data that should be read and manipulated using the functions below.

Since 3.4

### enum EDBusServerExitCode

    typedef enum {
    	E_DBUS_SERVER_EXIT_NONE,
    	E_DBUS_SERVER_EXIT_NORMAL,
    	E_DBUS_SERVER_EXIT_RELOAD
    } EDBusServerExitCode;

Exit codes submitted to `e_dbus_server_quit()` and returned by `e_dbus_server_run()`.

`E_DBUS_SERVER_EXIT_NONE` | The server's run state is unchanged.
`E_DBUS_SERVER_EXIT_NORMAL` | Normal termination. The process itself may now terminate.
`E_DBUS_SERVER_EXIT_RELOAD` | The server should reload its configuration and start again. Servers that do not support reloading may wish to intercept this exit code and stop the "quit-server" emission.

Since 3.6

### e_dbus_server_run ()

    EDBusServerExitCode e_dbus_server_run                   (EDBusServer *server,
                                                             gboolean wait_for_client);

Emits the "run" signal.

By default the `server` will start its main loop and attempt to acquire its well-known session bus name. If the `server`'s main loop is already running, the function will immediately return E_DBUS_SERVER_EXIT_NONE. Otherwise the function blocks until `e_dbus_server_quit()` is called.

If `wait_for_client` is `TRUE`, the `server` will continue running until the first client connection is made instead of quitting on its own if no client connection is made within the first few seconds.

`server` : | an EDBusServer
`wait_for_client` : | continue running until a client connects
Returns : | the exit code passed to `e_dbus_server_quit()`

Since 3.4

### e_dbus_server_quit ()

    void                e_dbus_server_quit                  (EDBusServer *server,
                                                             EDBusServerExitCode code);

Emits the "quit" signal with the given `code`.

By default the `server` will quit its main loop and cause `e_dbus_server_run()` to return `code`.

`server` : | an EDBusServer
`code` : | an EDBusServerExitCode

Since 3.4

### e_dbus_server_hold ()

    void                e_dbus_server_hold                  (EDBusServer *server);

Increases the use count of `server`.

Use this function to indicate that the server has a reason to continue to run. To cancel the hold, call `e_dbus_server_release()`.

`server` : | an EDBusServer

Since 3.4

### e_dbus_server_release ()

    void                e_dbus_server_release               (EDBusServer *server);

Decreates the use count of `server`.

When the use count reaches zero, the server will stop running.

Never call this function except to cancel the effect of a previous call to `e_dbus_server_hold()`.

`server` : | an EDBusServer

Since 3.4

### e_dbus_server_load_modules ()

    void                e_dbus_server_load_modules          (EDBusServer *server);

This function should be called once during `server` initialization to load all available library modules to extend the `server`'s functionality.

`server` : | an EDBusServer

Since 3.4

## Signal Details

### The `"bus-acquired"` signal

    void                user_function                      (EDBusServer     *server,
                                                            GDBusConnection *connection,
                                                            gpointer         user_data)       : Run Last

Emitted when `server` acquires a connection to the session bus.

`server` : | the EDBusServer which emitted the signal
`connection` : | the GDBusConnection to the session bus
`user_data` : | user data set when the signal handler was connected.

### The `"bus-name-acquired"` signal

    void                user_function                      (EDBusServer     *server,
                                                            GDBusConnection *connection,
                                                            gpointer         user_data)       : Run Last

Emitted when `server` acquires its well-known session bus name.

`server` : | the EDBusServer which emitted the signal
`connection` : | the GDBusConnection to the session bus
`user_data` : | user data set when the signal handler was connected.

### The `"bus-name-lost"` signal

    void                user_function                      (EDBusServer     *server,
                                                            GDBusConnection *connection,
                                                            gpointer         user_data)       : Run Last

Emitted when `server` loses its well-known session bus name or the session bus connection has been closed.

`server` : | the EDBusServer which emitted the signal
`connection` : | the GDBusconnection to the session bus, or `NULL` if the connection has been closed
`user_data` : | user data set when the signal handler was connected.

### The `"quit-server"` signal

    void                user_function                      (EDBusServer        *server,
                                                            EDBusServerExitCode code,
                                                            gpointer            user_data)      : Run Last

Emitted to request that `server` quit its main loop.

`server` : | the EDBusServer which emitted the signal
`code` : | an EDBusServerExitCode
`user_data` : | user data set when the signal handler was connected.

### The `"run-server"` signal

    EDBusServerExitCode user_function                      (EDBusServer *server,
                                                            gpointer     user_data)      : Run Last

Emitted to request that `server` start its main loop and attempt to acquire its well-known session bus name.

`server` : | the EDBusServer which emitted the signal
`user_data` : | user data set when the signal handler was connected.
Returns : | an EDBusServerExitCode