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

## Functions

EDBusServerExitCode | e_dbus_server_run ()
void | e_dbus_server_quit ()
void | e_dbus_server_hold ()
void | e_dbus_server_release ()
void | e_dbus_server_load_modules ()

## Types and Values

struct | EDBusServer
struct | EDBusServerClass

## Includes

    #include <libebackend/libebackend.h>

## Description

## Functions

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

#### Parameters

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` .

#### Parameters

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()`.

#### Parameters

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()`.

#### Parameters

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.

#### Parameters

server | an EDBusServer |

Since 3.4

## Types and Values

### struct EDBusServer

    struct EDBusServer {
    	GObject parent;
    	EDBusServerPrivate *priv;
    };

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

Since 3.4

### struct EDBusServerClass

    struct EDBusServerClass {
    	GObjectClass parent_class;

    	const gchar *bus_name;
    	const gchar *module_directory;

    	/* Signals */
    	void		(*bus_acquired)		(EDBusServer *server,
    						 GDBusConnection *connection);
    	void		(*bus_name_acquired) (EDBusServer *server,
    						 GDBusConnection *connection);
    	void		(*bus_name_lost) (EDBusServer *server,
    						 GDBusConnection *connection);
    	EDBusServerExitCode
    			(*run_server)		(EDBusServer *server);
    	void		(*quit_server)		(EDBusServer *server,
    						 EDBusServerExitCode code);

    	gpointer reserved[14];
    };