ESourceRegistryServer

ESourceRegistryServer — Server-side repository for data sources

Object Hierarchy

    GObject
    ╰── EDBusServer
        ╰── EDataFactory
            ╰── ESourceRegistryServer

Implemented Interfaces

ESourceRegistryServer implements GInitable.

Includes

#include <libebackend/libebackend.h>

Description

The ESourceRegistryServer is the heart of the registry D-Bus service. Acting as a global singleton store for all EServerSideSource instances, its responsibilities include loading data source content from key files, exporting data sources to clients over D-Bus, handling content change requests from clients, and saving content changes back to key files.

It also hosts any number of built-in or 3rd party data source collection backends, which coordinate with ESourceRegistryServer to automatically advertise available data sources on a remote server.

Functions

e_source_registry_server_new ()

EDBusServer *
e_source_registry_server_new (void);

Creates a new instance of ESourceRegistryServer.

Returns

a new instance of ESourceRegistryServer

Since: 3.6


e_source_registry_server_ref_credentials_provider ()

ESourceCredentialsProvider *
e_source_registry_server_ref_credentials_provider
                               (ESourceRegistryServer *server);

Returns a referenced ESourceRegistryCredentialsProvider.

Parameters

server

an ESourceRegistryServer

 

Returns

A referenced ESourceRegistryCredentialsProvider. Unref it with g_object_unref(), when no longer needed.

Since: 3.16


e_source_registry_server_add_source ()

void
e_source_registry_server_add_source (ESourceRegistryServer *server,
                                     ESource *source);

Adds source to server .

Parameters

server

an ESourceRegistryServer

 

source

an ESource

 

Since: 3.6


e_source_registry_server_remove_source ()

void
e_source_registry_server_remove_source
                               (ESourceRegistryServer *server,
                                ESource *source);

Removes source and all of its descendants from server .

Parameters

server

an ESourceRegistryServer

 

source

an ESource

 

Since: 3.6


e_source_registry_server_load_directory ()

gboolean
e_source_registry_server_load_directory
                               (ESourceRegistryServer *server,
                                const gchar *path,
                                ESourcePermissionFlags flags,
                                GError **error);

Loads data source key files in path . Because multiple errors can occur when loading multiple files, error is only set if path can not be opened. If a key file fails to load, the error is broadcast through the “load-error” signal.

If the E_DBUS_LOAD_DIRECTORY_REMOVABLE flag is given, then the server will emit signals on the D-Bus interface when key files are created or deleted in path .

Parameters

server

an ESourceRegistryServer

 

path

the path to the directory to load

 

flags

permission flags for files loaded from path

 

error

return location for a GError, or NULL

 

Returns

TRUE if path was successfully opened, but this does not imply the key files were successfully loaded

Since: 3.6


e_source_registry_server_load_resource ()

gboolean
e_source_registry_server_load_resource
                               (ESourceRegistryServer *server,
                                GResource *resource,
                                const gchar *path,
                                ESourcePermissionFlags flags,
                                GError **error);

Loads data source key files from resource by enumerating the children at path and calling e_source_registry_server_load_file() on each child. Because multiple errors can occur when loading multiple files, error is only set if path is invalid. If a key file fails to load, the error is broadcast through the “load-error” signal.

Parameters

server

an ESourceRegistryServer

 

resource

a GResource containing data source key files

 

path

the path to the data source key files inside resource

 

flags

permission flags for files loaded from path

 

error

return location for a GError, or NULL

 

Returns

TRUE if path was successfully located, but this does not imply the key files were successfully loaded

Since: 3.8


e_source_registry_server_load_file ()

ESource *
e_source_registry_server_load_file (ESourceRegistryServer *server,
                                    GFile *file,
                                    ESourcePermissionFlags flags,
                                    GError **error);

Creates an ESource for a native key file and adds it to server . If an error occurs, the function returns NULL and sets error .

The returned ESource is referenced for thread-safety. Unreference the ESource with g_object_unref() when finished with it.

Parameters

server

an ESourceRegistryServer

 

file

the data source key file to load

 

flags

initial permission flags for the data source

 

error

return location for a GError, or NULL

 

Returns

the newly-added ESource, or NULL on error

Since: 3.6


e_source_registry_server_load_error ()

void
e_source_registry_server_load_error (ESourceRegistryServer *server,
                                     GFile *file,
                                     const GError *error);

Emits the “load-error” signal.

Parameters

server

an EBusSourceServer

 

file

the GFile that failed to load

 

error

a GError describing the load error

 

Since: 3.6


e_source_registry_server_ref_source ()

ESource *
e_source_registry_server_ref_source (ESourceRegistryServer *server,
                                     const gchar *uid);

Looks up an ESource in server by its unique identifier string.

The returned ESource is referenced for thread-safety and must be unreferenced with g_object_unref() when finished with it.

Parameters

server

an ESourceRegistryServer

 

uid

a unique identifier string

 

Returns

an ESource, or NULL if no match was found

Since: 3.6


e_source_registry_server_list_sources ()

GList *
e_source_registry_server_list_sources (ESourceRegistryServer *server,
                                       const gchar *extension_name);

Returns a list of registered sources, sorted by display name. If extension_name is given, restrict the list to sources having that extension name.

The sources returned in the list are referenced for thread-safety. They must each be unreferenced with g_object_unref() when finished with them. Free the returned GList itself with g_list_free().

An easy way to free the list properly in one step is as follows:

Parameters

server

an ESourceRegistryServer

 

extension_name

an extension name, or NULL

 

Returns

a sorted list of sources

Since: 3.6


e_source_registry_server_find_extension ()

ESource *
e_source_registry_server_find_extension
                               (ESourceRegistryServer *server,
                                ESource *source,
                                const gchar *extension_name);

Examines source and its ancestors and returns the "deepest" ESource having an ESourceExtension with the given extension_name . If neither source nor any of its ancestors have such an extension, the function returns NULL.

This function is useful in cases when an ESourceExtension is meant to apply to both the ESource it belongs to and the ESource's descendants.

A common example is the ESourceCollection extension, where descendants of an ESource having an ESourceCollection extension are implied to be members of that collection. In that example, this function can be used to test whether source is a member of a collection.

The returned ESource is referenced for thread-safety and must be unreferenced with g_object_unref() when finished with it.

Note the function returns the ESource containing the ESourceExtension instead of the ESourceExtension itself because extension instances are not to be referenced directly (see e_source_get_extension()).

Parameters

server

an ESourceRegistryServer

 

source

an ESource

 

extension_name

the extension name to find

 

Returns

an ESource, or NULL if no match was found

Since: 3.8


e_source_registry_server_ref_backend ()

ECollectionBackend *
e_source_registry_server_ref_backend (ESourceRegistryServer *server,
                                      ESource *source);

Returns the ECollectionBackend associated with source , or NULL if there is no ECollectionBackend associated with source .

An ESource is associated with an ECollectionBackend if the ESource has an ESourceCollection extension, or if it is a hierarchical descendant of another ESource which has an ESourceCollection extension.

The returned ECollectionBackend is referenced for thread-safety. Unreference the ECollectionBackend with g_object_unref() when finished with it.

Parameters

server

an ESourceRegistryServer

 

source

an ESource

 

Returns

the ECollectionBackend for source , or NULL

Since: 3.6


e_source_registry_server_ref_backend_factory ()

ECollectionBackendFactory *
e_source_registry_server_ref_backend_factory
                               (ESourceRegistryServer *server,
                                ESource *source);

Returns the ECollectionBackendFactory for source , if available. If source does not have an ESourceCollection extension, or if the ESourceCollection extension names a “backend-name” for which there is no corresponding ECollectionBackendFactory, the function returns NULL.

The returned ECollectionBackendFactory is referenced for thread-safety. Unreference the ECollectionBackendFactory with g_object_unref() when finished with it.

Parameters

server

an ESourceRegistryServer

 

source

an ESource

 

Returns

the ECollectionBackendFactory for source , or NULL

Since: 3.6


e_source_registry_server_load_all ()

gboolean
e_source_registry_server_load_all (ESourceRegistryServer *server,
                                   GError **error);

e_source_registry_server_load_all has been deprecated since version 3.8 and should not be used in newly-written code.

Instead, implement an equivalent function yourself. It was a mistake to encode this much file location policy directly into the library API.

Loads data source key files from standard system-wide and user-specific locations. Because multiple errors can occur when loading multiple files, error is only set if a directory can not be opened. If a data source key file fails to load, the error is broadcast through the “load-error” signal.

Parameters

server

an ESourceRegistryServer

 

error

return location for a GError, or NULL

 

Returns

TRUE if the standard directories were successfully opened, but this does not imply the key files were successfully loaded

Since: 3.6

Types and Values

E_SOURCE_REGISTRY_SERVER_OBJECT_PATH

#define             E_SOURCE_REGISTRY_SERVER_OBJECT_PATH

D-Bus object path of the data source server.

Since: 3.6


EDS_REGISTRY_MODULES

#define EDS_REGISTRY_MODULES    "EDS_REGISTRY_MODULES"

This environment variable configures where the registry server loads it's backend modules from.


struct ESourceRegistryServer

struct ESourceRegistryServer;

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

Since: 3.6