## EBackendFactory

EBackendFactory — An abstract base class for backend factories

## Synopsis

    #include <libebackend/libebackend.h>

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

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

### struct EBackendFactoryClass

    struct EBackendFactoryClass {
    	/* Methods */
    	const gchar * (*get_hash_key)		(EBackendFactory *factory);
    	EBackend * (*new_backend)		(EBackendFactory *factory,
    						 ESource *source);
    };

Base class structure for the EBackendFactory class

`get_hash_key` () | Get the hash key for this factory
`new_backend` () | Create a new EBackend of the appropriate type for the passed ESource

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