RygelPluginLoader

## RygelPluginLoader RygelPluginLoader — This class is responsible for plugin loading. |

## Synopsis

    #define             RYGEL_TYPE_PLUGIN_LOADER
    gboolean            rygel_plugin_loader_plugin_disabled (RygelPluginLoader *self,
                                                             const gchar *name);
    void                rygel_plugin_loader_add_plugin      (RygelPluginLoader *self,
                                                             RygelPlugin *plugin);
    RygelPlugin *       rygel_plugin_loader_get_plugin_by_name
                                                            (RygelPluginLoader *self,
                                                             const gchar *name);
    GeeCollection *     rygel_plugin_loader_list_plugins    (RygelPluginLoader *self);
    RygelPluginLoader * rygel_plugin_loader_new             (void);
    struct              RygelPluginLoader;
    struct              RygelPluginLoaderClass;

## Object Hierarchy

      GObject
       +----RygelRecursiveModuleLoader
             +----RygelPluginLoader

## Signals

      "plugin-available"                               : Run Last

## Description

It probes for shared library files in a specific directory, tries to find a `module_init()` function with this signature: `void module_init (RygelPluginLoader* loader);`

It then calls that function, passing a pointer to itself. The loaded module can then add plugins to Rygel by calling the `rygel_plugin_loader_add_plugin()` function.

NOTE: The module SHOULD make sure that the plugin has not been disabled by the user, by using the `rygel_plugin_loader_plugin_disabled()` function before creating the plugin instance, and before creating any resources related to that instance.

## Details

### RYGEL_TYPE_PLUGIN_LOADER

    #define RYGEL_TYPE_PLUGIN_LOADER (rygel_plugin_loader_get_type ())

The type for RygelPluginLoader.

### rygel_plugin_loader_plugin_disabled ()

    gboolean            rygel_plugin_loader_plugin_disabled (RygelPluginLoader *self,
                                                             const gchar *name);

Checks if a plugin is disabled by the user

`self` : | the RygelPluginLoader instance
`name` : | the name of plugin to check for. [in]
Returns : | true if plugin is disabled, false if not.

### rygel_plugin_loader_add_plugin ()

    void                rygel_plugin_loader_add_plugin      (RygelPluginLoader *self,
                                                             RygelPlugin *plugin);

`self` : | the RygelPluginLoader instance

### rygel_plugin_loader_get_plugin_by_name ()

    RygelPlugin *       rygel_plugin_loader_get_plugin_by_name
                                                            (RygelPluginLoader *self,
                                                             const gchar *name);

`self` : | the RygelPluginLoader instance

### rygel_plugin_loader_list_plugins ()

    GeeCollection *     rygel_plugin_loader_list_plugins    (RygelPluginLoader *self);

`self` : | the RygelPluginLoader instance

### rygel_plugin_loader_new ()

    RygelPluginLoader * rygel_plugin_loader_new             (void);

### struct RygelPluginLoader

    struct RygelPluginLoader;

This class is responsible for plugin loading.

It probes for shared library files in a specific directory, tries to find a `module_init()` function with this signature: `void module_init (RygelPluginLoader* loader);`

It then calls that function, passing a pointer to itself. The loaded module can then add plugins to Rygel by calling the `rygel_plugin_loader_add_plugin()` function.

NOTE: The module SHOULD make sure that the plugin has not been disabled by the user, by using the `rygel_plugin_loader_plugin_disabled()` function before creating the plugin instance, and before creating any resources related to that instance.

### struct RygelPluginLoaderClass

    struct RygelPluginLoaderClass {
    	RygelRecursiveModuleLoaderClass parent_class;
    };

The class structure for `RYGEL_TYPE_PLUGIN_LOADER`. All the fields in this structure are private and should never be accessed directly.

RygelRecursiveModuleLoaderClass `parent_class`; | the parent class structure

## Signal Details

### The `"plugin-available"` signal

    void                user_function                      (RygelPluginLoader *plugin_loader,
                                                            RygelPlugin       *plugin,
                                                            gpointer           user_data)          : Run Last

`plugin_loader` : | the RygelPluginLoader instance that received the signal
`user_data` : | user data set when the signal handler was connected.