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

## Functions

const gchar * | e_backend_factory_get_hash_key ()
EBackend * | e_backend_factory_new_backend ()

## Types and Values

struct | EBackendFactory
struct | EBackendFactoryClass

## Includes

    #include <libebackend/libebackend.h>

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

## Functions

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

#### Parameters

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

#### Parameters

factory | an EBackendFactory |
source | an ESource |

#### Returns

a new EBackend instance for `source`

Since 3.4

## Types and Values

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

#### Members

`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