<para>The <classname>RygelMediaExportPlugin</classname> class, derived from <link linkend="RygelMediaServerPlugin">RygelMediaServerPlugin</link>, simply instantiates its <classname>RygelMediaExportRootContainer</classname> class, derived from <link linkend="RygelMediaContainer">RygelMediaContainer</link>, providing it to the base class as the root container.</para>
-<para>The <classname>RygelMediaExportRootContainer</classname> creates an instance of its RygelMediaExportMediaCache, which uses SQLite to maintain a cache of the media files that it finds on the file system.</para>
+<para>The <classname>RygelMediaExportRootContainer</classname> creates an instance of a RygelMediaExportMediaCache class and a RygelMediaExportHarvester class. The harvester finds files on the filesystem, and stores them in the media cache, which uses SQLite to keep trak of them.</para>
<!-- TODO: Simplify the class hierarchy in the example. -->
</section>
if (item != null) {
item.parent_ref = this.containers.peek_head ();
- // This is only necessary to generate the poper <objAdd LastChange
+ // This is only necessary to generate the proper <objAdd LastChange
// entry
if (entry.known) {
(item as UpdatableObject).commit.begin ();
}
/**
- * Persistent storage of media objects
+ * Persistent storage of media objects.
*
* MediaExportDB is a sqlite3 backed persistent storage of media objects.
*/
base (id, title);
}
- public async void add_child (MediaObject object) {
+ // TrackableContainer virtual function implementations:
+ protected async void add_child (MediaObject object) {
try {
if (object is MediaItem) {
this.media_db.save_item (object as MediaItem);
}
}
- public async void remove_child (MediaObject object) {
+ protected async void remove_child (MediaObject object) {
try {
this.media_db.remove_object (object);
} catch (Error error) {