Storages and Streams -------------------- The Bonobo interfaces contain a mechanism for storing compound documents based on CORBA. The top-level component will create a "Storage" in which it will store its data as well as its containee's data. The storage provides the operations of a file system and its whole contents are usually stored in a single file in the native file system. Storages can contain other Storages and Streams. Storages are used to create a file-system hierachy. Streams on the other hand represent files inside the hierarchy. Storages, as other Bonobo objects are CORBA servers: they are created by the toplevel container and a handle to sub-storages and sub-streams is passed down to containee objects to store their information in. The implementation As with other Bonobo objects, Storages and Streams are implemented by the GTK-object GnomeStorage and GnomeStream. These are abstract classes that provide the basic corba hookup. The actual storage faciliy depends on the features you want. The recommended storage facility is Dietmar Maurer's libefs which provides an Embedded File System (EFS). This will provide the data aggregation inherant in the Storage / Stream structure within the convenient unit of a single file. Another storage implementation available is the GnomeStorageFS / GnomeStreamFS combibation: these represent the top-level storage as a directory on a native filesystem, each stream being an actual file in the conventional sense. Shortly an OLE2 file compatible storage facility will be available. Also there are plans to implement a storage facility based on Josh Macdonald's librepo and using a db2 database to store the information.