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
  2. c#:   IEventRegistry registry = EventRegistryFactory.ForObjectContainer(container);

    VB:   Dim registry As IEventRegistry = EventRegistryFactory.ForObjectContainer(container)

  3. Register the required event. For "created" event the code is the following:
  4. c#:  registry.Created += new ObjectEventHandler(OnCreated);

    VB:  AddHandler registry.Created, AddressOf OnCreated

  5. Create your own event handler:
  6. 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

  7. After the work is done you can unregister the events:
  8. c#:  registry.Created -= new ObjectEventHandler(OnCreated);

    VB:  RemoveHandler registry.Created, AddressOf OnCreated

EventRegistry features:

For example:

CallbacksExample.cs: TestCreated
01public static void TestCreated() 02 { 03 File.Delete(YapFileName); 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
01Public Shared Sub TestCreated() 02 File.Delete(YapFileName) 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