Whole document tree
bonobo-storage
Name bonobo-storage -- Abstract implementation of the Bonobo::Storage interface
Synopsis
typedef BonoboStorage ;
typedef BonoboStorageClass ;
BonoboStorage * bonobo_storage_open (const char *driver,
const char *path,
gint flags,
gint mode);
BonoboStorage * bonobo_storage_open_full (const char *driver,
const char *path,
gint flags,
gint mode,
CORBA_Environment *opt_ev);
void bonobo_storage_copy_to (Bonobo_Storage src,
Bonobo_Storage dest,
CORBA_Environment *ev);
void bonobo_storage_write_class_id (BonoboStorage *storage,
char *class_id);
void bonobo_stream_write_class_id (BonoboStream *stream,
char *class_id);
Description The BonoboStorage C interface is extremely simple, this is since
the CORBA client interface is where the action occurs. It is
anticipated that relatively few people need to implement the
Bonobo/Storage IDL interface.
The common entry point for BonoboStorage is that of opening a
storage using the bonobo_storage_open function, perhaps by a
container to use to persist a compound document:
Example 1. An example storage use case
void
container_save (SampleApp *app,
const char *filename,
CORBA_Environment *ev)
{
BonoboStorage *storage;
Bonobo_Storage corba_storage;
GList *components;
int i;
storage = bonobo_storage_open (STORAGE_TYPE, filename,
Bonobo_Storage_READ |
Bonobo_Storage_WRITE |
Bonobo_Storage_CREATE,
0664);
g_return_if_fail (storage);
corba_storage = BONOBO_OBJREF (storage);
...
Serialize components to streams created in the storage
...
Bonobo_Storage_commit (corba_storage, ev);
CORBA_exception_free (ev);
bonobo_object_unref (BONOBO_OBJECT (storage));
}
Details BonoboStoragetypedef struct {
BonoboXObject object;
BonoboStoragePrivate *priv;
} BonoboStorage;
BonoboStorageClasstypedef struct {
BonoboXObjectClass parent_class;
POA_Bonobo_Storage__epv epv;
/* virtual methods */
Bonobo_StorageInfo *(*get_info) (BonoboStorage *storage,
const CORBA_char *path,
const Bonobo_StorageInfoFields mask,
CORBA_Environment *ev);
void (*set_info) (BonoboStorage *storage,
const CORBA_char *path,
const Bonobo_StorageInfo * info,
const Bonobo_StorageInfoFields mask,
CORBA_Environment *ev);
BonoboStream *(*open_stream) (BonoboStorage *storage,
const CORBA_char *path,
Bonobo_Storage_OpenMode,
CORBA_Environment *ev);
BonoboStorage *(*open_storage) (BonoboStorage *storage,
const CORBA_char *path,
Bonobo_Storage_OpenMode,
CORBA_Environment *ev);
void (*copy_to) (BonoboStorage *storage,
Bonobo_Storage target,
CORBA_Environment *ev);
void (*rename) (BonoboStorage *storage,
const CORBA_char *path_name,
const CORBA_char *new_path_name,
CORBA_Environment *ev);
void (*commit) (BonoboStorage *storage,
CORBA_Environment *ev);
void (*revert) (BonoboStorage *storage,
CORBA_Environment *ev);
Bonobo_Storage_DirectoryList *
(*list_contents) (BonoboStorage *storage,
const CORBA_char *path,
Bonobo_StorageInfoFields mask,
CORBA_Environment *ev);
void (*erase) (BonoboStorage *storage,
const CORBA_char *path,
CORBA_Environment *ev);
} BonoboStorageClass;
bonobo_storage_open ()BonoboStorage * bonobo_storage_open (const char *driver,
const char *path,
gint flags,
gint mode);
Opens or creates the file named at path with the stream driver
driver .
driver is one of: "efs", "vfs" or "fs" for now, please use
the macros for this though, see bonobo-stream.h eg.
BONOBO_IO_DRIVER_FS
bonobo_storage_open_full ()BonoboStorage * bonobo_storage_open_full (const char *driver,
const char *path,
gint flags,
gint mode,
CORBA_Environment *opt_ev);
bonobo_storage_copy_to ()Implements a pure CORBA method for copying one storage into
another, this is used by several BonoboStorage implemetations
where a fast case localy copy cannot work.
bonobo_storage_write_class_id ()void bonobo_storage_write_class_id (BonoboStorage *storage,
char *class_id);
bonobo_stream_write_class_id ()void bonobo_stream_write_class_id (BonoboStream *stream,
char *class_id);