## EBackendFactory EBackendFactory — An abstract base class for backend factories |

## Synopsis

    #include <libebackend/libebackend.h>

    struct              EBackendFactory;
    const gchar *       e_backend_factory_get_hash_key      (EBackendFactory *factory);
    EBackend *          e_backend_factory_new_backend       (EBackendFactory *factory,
                                                             ESource *source);

## Object Hierarchy

      GObject
       +----EExtension
             +----EBackendFactory
                   +----ECollectionBackendFactory

## Description

An EBackendFactory's job is to create an EBackend instance for a given ESource. EBackendFactory and EBackend should be subclassed together, so that each type of EBackendFactory creates a unique type of EBackend.

Each EBackendFactory subclass must define a hash key to uniquely identify itself among other EBackendFactory subclasses. EDataFactory then services incoming connection requests by deriving a hash key from the requested ESource, using the dervied hash key to find an appropriate EBackendFactory, and creating an EBackend instance from that factory to pair with the requested ESource.

## Details

### struct EBackendFactory

    struct EBackendFactory;

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

Since 3.4

### e_backend_factory_get_hash_key ()

    const gchar *       e_backend_factory_get_hash_key      (EBackendFactory *factory);

Returns a hash key which uniquely identifies `factory`.

Since only one instance of each EBackendFactory subclass is ever created, the hash key need only be unique among subclasses, not among instances of each subclass.

`factory` : | an EBackendFactory
Returns : | a hash key which uniquely identifies `factory`

Since 3.4

### e_backend_factory_new_backend ()

    EBackend *          e_backend_factory_new_backend       (EBackendFactory *factory,
                                                             ESource *source);

Returns a new EBackend instance for `source`.

`factory` : | an EBackendFactory
`source` : | an ESource
Returns : | a new EBackend instance for `source`

Since 3.4