### Class

# EBackend SourceRegistryServer

since: 3.6

#### Description [src]

    class EBackend.SourceRegistryServer : EBackend.DataFactory
      implements EBackend.OAuth2Support, EDataServer.Extensible, Gio.Initable {
      /* No available fields */
    }

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

Available since: 3.6

#### Hierarchy

#### Ancestors

- EDataFactory
- EDBusServer
- GObject

#### Implements

- EOAuth2Support
- EExtensible
- GInitable

#### Constructors

###### e_source_registry_server_new

Creates a new instance of `ESourceRegistryServer`.

since: 3.6

#### Instance methods

###### e_source_registry_server_add_source

Adds `source` to `server`.

since: 3.6

###### e_source_registry_server_find_extension

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

since: 3.8

###### e_source_registry_server_get_oauth2_services

No description available.

since: 3.28

###### e_source_registry_server_list_sources

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

since: 3.6

###### e_source_registry_server_load_directory

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 `ESourceRegistryServer::load-error` signal.

since: 3.6

###### e_source_registry_server_load_error

Emits the `ESourceRegistryServer::load-error` signal.

since: 3.6

###### e_source_registry_server_load_file

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

since: 3.6

###### e_source_registry_server_load_resource

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 `ESourceRegistryServer::load-error` signal.

since: 3.8

###### e_source_registry_server_ref_backend

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

since: 3.6

###### e_source_registry_server_ref_backend_factory

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

since: 3.6

###### e_source_registry_server_ref_credentials_provider

Returns a referenced `ESourceCredentialsProvider`. Unref it with g_object_unref(), when no longer needed.

since: 3.16

###### e_source_registry_server_ref_oauth2_support

Returns the default `EOAuth2Support` implementation, which can be used when the source doesn’t have it overwritten.

since: 3.40

###### e_source_registry_server_ref_source

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

since: 3.6

###### e_source_registry_server_remove_source

Removes `source` and all of its descendants from `server`.

since: 3.6

##### Methods inherited from EDataFactory (12)

###### e_data_factory_backend_closed

No description available.

###### e_data_factory_backend_closed_by_sender

No description available.

###### e_data_factory_construct_path

Returns a new and unique object path for a D-Bus interface based in the data object path prefix of the `data_factory`.

since: 3.16

###### e_data_factory_create_backend

Used only when backend-per-process is off.

###### e_data_factory_get_backend_per_process

No description available.

###### e_data_factory_get_registry

Returns the `ESourceRegistry` owned by `data_factory`.

since: 3.16

###### e_data_factory_get_reload_supported

No description available.

###### e_data_factory_list_opened_backends

Lists the currently opened backends.

###### e_data_factory_open_backend

No description available.

###### e_data_factory_ref_backend_factory

Returns the `EBackendFactory` for “`backend_name`:`extension_name`”, or `NULL` if no such factory is registered.

since: 3.6

###### e_data_factory_spawn_subprocess_backend

Spawns a new subprocess for a backend type and returns the object path of the new subprocess to the client, in the way the client can talk directly to the running backend. If the backend already has a subprocess running, the used object path is returned to the client.

since: 3.16

###### e_data_factory_use_backend_per_process

No description available.

##### Methods inherited from EDBusServer (5)

###### e_dbus_server_hold

Increases the use count of `server`.

since: 3.4

###### e_dbus_server_load_modules

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

since: 3.4

###### e_dbus_server_quit

Emits the `EDBusServer::quit` signal with the given `code`.

since: 3.4

###### e_dbus_server_release

Decreates the use count of `server`.

since: 3.4

###### e_dbus_server_run

Emits the `EDBusServer::run` signal.

since: 3.4

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from EOAuth2Support (3)

###### e_oauth2_support_get_access_token

Asynchronously obtains the OAuth 2.0 access token for `source` along with its expiry in seconds from the current time (or 0 if unknown).

since: 3.8

###### e_oauth2_support_get_access_token_finish

Finishes the operation started with e_oauth2_support_get_access_token().

since: 3.8

###### e_oauth2_support_get_access_token_sync

Obtains the OAuth 2.0 access token for `source` along with its expiry in seconds from the current time (or 0 if unknown).

since: 3.8

##### Methods inherited from EExtensible (3)

###### e_extensible_list_extensions

Returns a list of `EExtension` objects bound to `extensible` whose types are ancestors of `extension_type`. For a complete list of extension objects bound to `extensible`, pass `E_TYPE_EXTENSION`.

###### e_extensible_load_extensions

Creates an instance of all instantiable subtypes of `EExtension` which target the class of `extensible`. The lifetimes of these newly created `EExtension` objects are bound to `extensible` such that they are finalized when `extensible` is finalized.

###### e_extensible_reload_extensions

Similar to e_extensible_load_extensions(), only loads newly discovered extensions again. This can help in case a new module had been loaded to the process, which provides the extensions for the `extensible`.

##### Methods inherited from GInitable (1)

###### g_initable_init

Initializes the object implementing the interface.

#### Properties

##### Properties inherited from EDataFactory (3)

###### EBackend.DataFactory:backend-per-process

Override backend-per-process compile-time option.

###### EBackend.DataFactory:registry

Data source registry.

###### EBackend.DataFactory:reload-supported

Whether the data factory supports Reload.

#### Signals

###### EBackend.SourceRegistryServer::files-loaded

Emitted after all data source key files are loaded on startup. Extensions can connect to this signal to perform any additional work prior to running the main loop.

###### EBackend.SourceRegistryServer::load-error

Emitted when an error occurs while loading or parsing a data source key file.

###### EBackend.SourceRegistryServer::source-added

Emitted when an `EServerSideSource` is added to `server`.

###### EBackend.SourceRegistryServer::source-removed

Emitted when an `EServerSideSource` is removed from `server`.

###### EBackend.SourceRegistryServer::tweak-key-file

Emitted from `e_source_registry_server_load_file()` just prior to instantiating an `EServerSideSource`. Signal handlers can tweak the `key_file` content as necessary and return `TRUE` to write the modified content back to disk.

since: 3.8

##### Signals inherited from EDBusServer (5)

###### EDBusServer::bus-acquired

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

###### EDBusServer::bus-name-acquired

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

###### EDBusServer::bus-name-lost

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

###### EDBusServer::quit-server

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

###### EDBusServer::run-server

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

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct EBackendSourceRegistryServerClass {
      EDataFactoryClass parent_class;
      void (* load_error) (
        ESourceRegistryServer* server,
        GFile* file,
        const GError* error
      );
      void (* files_loaded) (
        ESourceRegistryServer* server
      );
      void (* source_added) (
        ESourceRegistryServer* server,
        ESource* source
      );
      void (* source_removed) (
        ESourceRegistryServer* server,
        ESource* source
      );
      gboolean (* tweak_key_file) (
        ESourceRegistryServer* server,
        GKeyFile* key_file,
        const gchar* uid
      );
      gpointer reserved;

    }

No description available.

###### Class members

`parent_class: EDataFactoryClass`

  No description available.

`load_error: void (* load_error) ( ESourceRegistryServer* server, GFile* file, const GError* error )`

  No description available.

`files_loaded: void (* files_loaded) ( ESourceRegistryServer* server )`

  No description available.

`source_added: void (* source_added) ( ESourceRegistryServer* server, ESource* source )`

  No description available.

`source_removed: void (* source_removed) ( ESourceRegistryServer* server, ESource* source )`

  No description available.

`tweak_key_file: gboolean (* tweak_key_file) ( ESourceRegistryServer* server, GKeyFile* key_file, const gchar* uid )`

  No description available.

`reserved: gpointer`

  No description available.

#### Virtual methods

###### EBackend.SourceRegistryServerClass.files_loaded

No description available.

###### EBackend.SourceRegistryServerClass.load_error

Emits the `ESourceRegistryServer::load-error` signal.

since: 3.6

###### EBackend.SourceRegistryServerClass.source_added

No description available.

###### EBackend.SourceRegistryServerClass.source_removed

No description available.

###### EBackend.SourceRegistryServerClass.tweak_key_file

No description available.