## GoaProviderFactory GoaProviderFactory — Abstract base class for provider factories |

## Functions

GoaProvider * | goa_provider_factory_get_provider ()
void | goa_provider_factory_get_providers ()
gboolean | goa_provider_factory_get_providers_finish ()

## Types and Values

struct | GoaProviderFactory
struct | GoaProviderFactoryClass
#define | GOA_PROVIDER_FACTORY_EXTENSION_POINT_NAME

## Object Hierarchy

        GObject
        ╰── GoaProviderFactory

## Description

GoaProviderFactory implementations are used to dynamically create GoaProvider instances.

## Functions

### goa_provider_factory_get_provider ()

    GoaProvider *
    goa_provider_factory_get_provider (GoaProviderFactory *factory,
                                       const gchar *provider_name);

Create a dynamic GoaProvider for the subclass-specific `provider_name` .

#### Parameters

factory | A GoaProviderFactory. |
provider_name | A provider type identifier (ie. IM protocol names in GoaTelepathyFactory) |

#### Returns

A GoaProvider (that must be freed with `g_object_unref()`) or `NULL` if not found.

[transfer full]

### goa_provider_factory_get_providers ()

    void
    goa_provider_factory_get_providers (GoaProviderFactory *factory,
                                        GAsyncReadyCallback callback,
                                        gpointer user_data);

Get asynchronously a list of GoaProvider instances handled by `factory` .

When the result is ready, `callback` will be called in the the thread-default main loop this function was called from. You can then call `goa_provider_factory_get_providers_finish()` to get the result of the operation.

This is a virtual method that must be implemented by subclasses.

#### Parameters

factory | A GoaProviderFactory. |
callback | The function to call when the request is satisfied. |
user_data | Pointer to pass to `callback` . |

### goa_provider_factory_get_providers_finish ()

    gboolean
    goa_provider_factory_get_providers_finish
                                   (GoaProviderFactory *factory,
                                    GList **out_providers,
                                    GAsyncResult *result,
                                    GError **error);

Finishes an operation started with `goa_provider_factory_get_providers()`

This is a virtual method that subclasses may implement. The default implementation is suitable for GSimpleAsyncResult an implementation of `goa_provider_factory_get_providers()` using GSimpleAsyncResult.

#### Parameters

factory | A GoaProviderFactory. |
out_providers | Return location for a list of GoaProvider instances handled by `factory` . | [out]
result | A GAsyncResult obtained from the GAsyncReadyCallback passed to `goa_provider_factory_get_providers()`. |
error | Return location for error or `NULL`. |

#### Returns

`TRUE` if the list was successfully retrieved, `FALSE` if `error` is set.

## Types and Values

### struct GoaProviderFactory

    struct GoaProviderFactory;

The GoaProviderFactory structure contains only private data and should only be accessed using the provided API.

### struct GoaProviderFactoryClass

    struct GoaProviderFactoryClass {
      GObjectClass parent_class;

      /* Mandatory to implement. */
      GoaProvider *(*get_provider)              (GoaProviderFactory    *factory,
                                                 const gchar           *provider_name);

      /* The async method is mandatory to implement, but _finish has a default
       * implementation suitable for a GSimpleAsyncResult. */
      void         (*get_providers)             (GoaProviderFactory    *factory,
                                                 GAsyncReadyCallback    callback,
                                                 gpointer               user_data);
      gboolean     (*get_providers_finish)      (GoaProviderFactory    *factory,
                                                 GList                **out_providers,
                                                 GAsyncResult          *result,
                                                 GError               **error);
    };

Class structure for GoaProviderFactory.

#### Members

GObjectClass `parent_class`; | The parent class. |
`get_provider` () | Virtual function for `goa_provider_factory_get_provider()`. |
`get_providers` () | Virtual function for `goa_provider_factory_get_providers()`. |
`get_providers_finish` () | Virtual function for `goa_provider_factory_get_providers_finish()`. |

### GOA_PROVIDER_FACTORY_EXTENSION_POINT_NAME

    #define GOA_PROVIDER_FACTORY_EXTENSION_POINT_NAME "goa-backend-provider-factory"

Extension point for GoaProviderFactory implementations.