## bonobo-storage bonobo-storage — Abstract implementation of the Bonobo::Storage interface |

## Synopsis

    void                bonobo_storage_copy_to              (Bonobo_Storage src,
                                                             Bonobo_Storage dest,
                                                             CORBA_Environment *ev);

## 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 23. An example storage use case

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    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

### bonobo_storage_copy_to ()

    void                bonobo_storage_copy_to              (Bonobo_Storage src,
                                                             Bonobo_Storage dest,
                                                             CORBA_Environment *ev);

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.

`src` : | the source storage
`dest` : | the destination storage
`ev` : | CORBA exception environment

## See Also

BonoboPersist BonoboPersistStream