## RygelMediaServerPlugin RygelMediaServerPlugin — This is the base class for every Rygel implementation of a UPnP media server. It should be used either for a real plug-in for the Rygel process or used in-process via the librygel-server API. |

## Functions

RygelMediaContainer * | rygel_media_server_plugin_get_root_container ()
const gchar * | rygel_media_server_plugin_get_search_caps ()
GList * | rygel_media_server_plugin_get_upload_profiles ()
void | rygel_media_server_plugin_set_upload_profiles ()
GList * | rygel_media_server_plugin_get_supported_profiles ()
void | rygel_media_server_plugin_set_supported_profiles ()

## Properties

RygelMediaContainer * | root-container | Read / Write / Construct Only
gchar * | search-caps | Read
gpointer | supported-profiles | Read / Write / Construct
gpointer | upload-profiles | Read / Write / Construct

## Types and Values

#define | RYGEL_TYPE_MEDIA_SERVER_PLUGIN
struct | RygelMediaServerPlugin
struct | RygelMediaServerPluginClass

## Object Hierarchy

        GObject
        ╰── GUPnPResourceFactory
            ╰── RygelPlugin
                ╰── RygelMediaServerPlugin

## Description

The plugin instance should have a RygelMediaContainer instance as its root container, which may be provided to the constructor.

See the <link linkend="implementing-server-plugins">Implementing Server Plugins</link> section.

## Functions

### rygel_media_server_plugin_get_root_container ()

    RygelMediaContainer *
    rygel_media_server_plugin_get_root_container
                                   (RygelMediaServerPlugin *self);

Get and return the current value of the "root-container" property.

#### Parameters

self | the RygelMediaServerPlugin instance to query |

#### Returns

the value of the "root-container" property

### rygel_media_server_plugin_get_search_caps ()

    const gchar *
    rygel_media_server_plugin_get_search_caps
                                   (RygelMediaServerPlugin *self);

Get and return the current value of the "search-caps" property.

The SearchCapabilities this MediaServer plugin supports.

Implementations can override this to match their capabilities. If they do, they should take care to include the change tracking capabilities (upnp:objectUpdateID, upnp:containerUpdateID) based on PluginCapabilities.TRACK_CHANGES.

#### Parameters

self | the RygelMediaServerPlugin instance to query |

#### Returns

the value of the "search-caps" property

### rygel_media_server_plugin_get_upload_profiles ()

    GList *
    rygel_media_server_plugin_get_upload_profiles
                                   (RygelMediaServerPlugin *self);

Get and return the current value of the "upload-profiles" property.

The list of DLNA profiles the MediaServer in this plugin will accept files as upload.

Can be a subset of :supported_profiles. If set to `NULL`, it will be reset to :supported_profiles.

#### Parameters

self | the RygelMediaServerPlugin instance to query |

#### Returns

the value of the "upload-profiles" property

### rygel_media_server_plugin_set_upload_profiles ()

    void
    rygel_media_server_plugin_set_upload_profiles
                                   (RygelMediaServerPlugin *self,
                                    GList *value);

Set the value of the "upload-profiles" property to `value` .

The list of DLNA profiles the MediaServer in this plugin will accept files as upload.

Can be a subset of :supported_profiles. If set to `NULL`, it will be reset to :supported_profiles.

#### Parameters

self | the RygelMediaServerPlugin instance to modify |
value | the new value of the "upload-profiles" property |

### rygel_media_server_plugin_get_supported_profiles ()

    GList *
    rygel_media_server_plugin_get_supported_profiles
                                   (RygelMediaServerPlugin *self);

Get and return the current value of the "supported-profiles" property.

The list of DLNA profiles the MediaServer in this plugin will be able to serve.

If it does not accept all formats it can serve for uploading, :upload_profiles needs to be set to the supported subset.

By default it will be the supported profiles of the RygelMediaEngine.

#### Parameters

self | the RygelMediaServerPlugin instance to query |

#### Returns

the value of the "supported-profiles" property

### rygel_media_server_plugin_set_supported_profiles ()

    void
    rygel_media_server_plugin_set_supported_profiles
                                   (RygelMediaServerPlugin *self,
                                    GList *value);

Set the value of the "supported-profiles" property to `value` .

The list of DLNA profiles the MediaServer in this plugin will be able to serve.

If it does not accept all formats it can serve for uploading, :upload_profiles needs to be set to the supported subset.

By default it will be the supported profiles of the RygelMediaEngine.

#### Parameters

self | the RygelMediaServerPlugin instance to modify |
value | the new value of the "supported-profiles" property |

## Types and Values

### RYGEL_TYPE_MEDIA_SERVER_PLUGIN

    #define RYGEL_TYPE_MEDIA_SERVER_PLUGIN (rygel_media_server_plugin_get_type ())

The type for RygelMediaServerPlugin.

### struct RygelMediaServerPlugin

    struct RygelMediaServerPlugin;

This is the base class for every Rygel implementation of a UPnP media server. It should be used either for a real plug-in for the Rygel process or used in-process via the librygel-server API.

The plugin instance should have a RygelMediaContainer instance as its root container, which may be provided to the constructor.

See the <link linkend="implementing-server-plugins">Implementing Server Plugins</link> section.

### struct RygelMediaServerPluginClass

    struct RygelMediaServerPluginClass {
    	RygelPluginClass parent_class;
    	const gchar* (*get_search_caps) (RygelMediaServerPlugin* self);
    };

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

#### Members

`get_search_caps` () | getter method for the abstract property "search-caps" |

## Property Details

### The `“root-container”` property

      “root-container”           RygelMediaContainer *

root-container.

Flags: Read / Write / Construct Only

### The `“search-caps”` property

      “search-caps”              gchar *

The SearchCapabilities this MediaServer plugin supports.

Implementations can override this to match their capabilities. If they do, they should take care to include the change tracking capabilities (upnp:objectUpdateID, upnp:containerUpdateID) based on PluginCapabilities.TRACK_CHANGES.

Flags: Read

Default value: NULL

### The `“supported-profiles”` property

      “supported-profiles”       gpointer

The list of DLNA profiles the MediaServer in this plugin will be able to serve.

If it does not accept all formats it can serve for uploading, :upload_profiles needs to be set to the supported subset.

By default it will be the supported profiles of the RygelMediaEngine.

Flags: Read / Write / Construct

### The `“upload-profiles”` property

      “upload-profiles”          gpointer

The list of DLNA profiles the MediaServer in this plugin will accept files as upload.

Can be a subset of :supported_profiles. If set to `NULL`, it will be reset to :supported_profiles.

Flags: Read / Write / Construct