Event Registry API

External callbacks should be registered with db4o EventRegistry. Follow the steps below to start using your own event handlers:

  1. Obtain an instance of EventRegistry object for your ObjectContainer

    c#:

    IEventRegistry registry = EventRegistryFactory.ForObjectContainer(container);

    VB:

    Dim registry As IEventRegistry = EventRegistryFactory.ForObjectContainer(container)

  2. Register the required event. For "created" event the code is the following:

    c#:

    registry.Created += new ObjectEventHandler(OnCreated);

    VB:

    AddHandler registry.Created, AddressOf OnCreated

  3. Create your own event handler:

    c#:  

    private static void OnCreated(object sender, ObjectEventArgs args)
            {
                 // handling code
            }

    VB:  

    Private Shared Sub OnCreated(ByVal sender As Object, ByVal args As ObjectEventArgs)
                ' handling code
    End Sub

    The action raised the event can be cancelled in Creating, Activating, Deactivating, Updating and Deleting event handlers. These events accept CancellableObjectEventArgs as a parameter. In order to cancel the action use:

    c#:

    cancellableEventArgs.Cancel()

    VB:

    cancellableEventArgs.Cancel()

    Here cancellableEventArgs is an event argument of CancellableObjectEventArgs type.


  4. After the work is done you can unregister the events:

    c#:

    registry.Created -= new ObjectEventHandler(OnCreated);

    VB:

    RemoveHandler registry.Created, AddressOf OnCreated

EventRegistry features:

For example:

CallbacksExample.cs: TestCreated
01private static void TestCreated() 02 { 03 File.Delete(Db4oFileName); 04 IObjectContainer container = OpenContainer(); 05 try 06 { 07 IEventRegistry registry = EventRegistryFactory.ForObjectContainer(container); 08 // register an event handler, which will print all the car objects, that have been Created 09 registry.Created += new ObjectEventHandler(OnCreated); 10 11 Car car = new Car("BMW", new Pilot("Rubens Barrichello")); 12 container.Set(car); 13 } 14 finally 15 { 16 CloseContainer(); 17 } 18 }

CallbacksExample.vb: TestCreated
01Private Shared Sub TestCreated() 02 File.Delete(Db4oFileName) 03 Dim container As IObjectContainer = OpenContainer 04 Try 05 Dim registry As IEventRegistry = EventRegistryFactory.ForObjectContainer(container) 06 ' register an event handler, which will print all the car objects, that have been Created 07 AddHandler registry.Created, AddressOf OnCreated 08 Dim car As Car = New Car("BMW", New Pilot("Rubens Barrichello")) 09 container.Set(car) 10 Finally 11 CloseContainer() 12 End Try 13 End Sub