aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-book-factory.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/pas/pas-book-factory.c')
-rw-r--r--addressbook/backend/pas/pas-book-factory.c153
1 files changed, 17 insertions, 136 deletions
diff --git a/addressbook/backend/pas/pas-book-factory.c b/addressbook/backend/pas/pas-book-factory.c
index 3bca69cf59..dd80c470db 100644
--- a/addressbook/backend/pas/pas-book-factory.c
+++ b/addressbook/backend/pas/pas-book-factory.c
@@ -19,7 +19,6 @@
#define DEFAULT_PAS_BOOK_FACTORY_OAF_ID "OAFIID:GNOME_Evolution_Wombat_ServerFactory"
static BonoboObjectClass *pas_book_factory_parent_class;
-POA_GNOME_Evolution_Addressbook_BookFactory__vepv pas_book_factory_vepv;
typedef struct {
char *uri;
@@ -27,9 +26,6 @@ typedef struct {
} PASBookFactoryQueuedRequest;
struct _PASBookFactoryPrivate {
- PASBookFactoryServant *servant;
- GNOME_Evolution_Addressbook_BookFactory corba_objref;
-
gint idle_id;
GHashTable *backends;
GHashTable *active_server_map;
@@ -388,22 +384,13 @@ pas_book_factory_queue_request (PASBookFactory *factory,
}
}
-static PASBookFactory *
-factory_from_servant (PortableServer_Servant servant)
-{
- PASBookFactoryServant *my_servant;
-
- my_servant = (PASBookFactoryServant *) servant;
- return my_servant->object;
-}
-
static void
impl_GNOME_Evolution_Addressbook_BookFactory_openBook (PortableServer_Servant servant,
const CORBA_char *uri,
const GNOME_Evolution_Addressbook_BookListener listener,
CORBA_Environment *ev)
{
- PASBookFactory *factory = factory_from_servant (servant);
+ PASBookFactory *factory = PAS_BOOK_FACTORY (bonobo_object (servant));
PASBackendFactoryFn backend_factory;
backend_factory = pas_book_factory_lookup_backend_factory (factory, uri);
@@ -421,71 +408,10 @@ impl_GNOME_Evolution_Addressbook_BookFactory_openBook (PortableServer_Servant
pas_book_factory_queue_request (factory, uri, listener);
}
-void
-pas_book_factory_construct (PASBookFactory *factory,
- GNOME_Evolution_Addressbook_BookListener corba_objref)
-{
- PASBookFactoryPrivate *priv;
-
- g_return_if_fail (factory != NULL);
- g_return_if_fail (corba_objref != CORBA_OBJECT_NIL);
-
- priv = factory->priv;
-
- g_return_if_fail (priv->corba_objref == CORBA_OBJECT_NIL);
-
- priv->corba_objref = corba_objref;
-}
-
-
-static PASBookFactoryServant *
-create_servant (PASBookFactory *factory)
+static void
+pas_book_factory_construct (PASBookFactory *factory)
{
- PASBookFactoryServant *servant;
- POA_GNOME_Evolution_Addressbook_BookFactory *corba_servant;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- servant = g_new0 (PASBookFactoryServant, 1);
- corba_servant = (POA_GNOME_Evolution_Addressbook_BookFactory *) servant;
-
- corba_servant->vepv = &pas_book_factory_vepv;
- POA_GNOME_Evolution_Addressbook_BookFactory__init ((PortableServer_Servant) corba_servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_free (servant);
- CORBA_exception_free (&ev);
- return NULL;
- }
-
- servant->object = factory;
-
- CORBA_exception_free (&ev);
-
- return servant;
-}
-
-static GNOME_Evolution_Addressbook_BookFactory
-activate_servant (PASBookFactory *factory,
- POA_GNOME_Evolution_Addressbook_BookFactory *servant)
-{
- GNOME_Evolution_Addressbook_BookFactory corba_object;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- CORBA_free (PortableServer_POA_activate_object (bonobo_poa (), servant, &ev));
-
- corba_object = PortableServer_POA_servant_to_reference (bonobo_poa(), servant, &ev);
-
- if (ev._major == CORBA_NO_EXCEPTION && ! CORBA_Object_is_nil (corba_object, &ev)) {
- CORBA_exception_free (&ev);
- return corba_object;
- }
-
- CORBA_exception_free (&ev);
-
- return CORBA_OBJECT_NIL;
+ /* nothing to do here.. */
}
/**
@@ -495,16 +421,10 @@ PASBookFactory *
pas_book_factory_new (void)
{
PASBookFactory *factory;
- PASBookFactoryPrivate *priv;
- GNOME_Evolution_Addressbook_BookFactory corba_objref;
factory = g_object_new (PAS_TYPE_BOOK_FACTORY, NULL);
- priv = factory->priv;
-
- priv->servant = create_servant (factory);
- corba_objref = activate_servant (factory, (POA_GNOME_Evolution_Addressbook_BookFactory*)priv->servant);
- pas_book_factory_construct (factory, corba_objref);
+ pas_book_factory_construct (factory);
return factory;
}
@@ -533,7 +453,7 @@ pas_book_factory_activate (PASBookFactory *factory, const char *iid)
else
tmp_iid = g_strdup (DEFAULT_PAS_BOOK_FACTORY_OAF_ID);
- result = bonobo_activation_active_server_register (tmp_iid, priv->corba_objref);
+ result = bonobo_activation_active_server_register (tmp_iid, bonobo_object_corba_objref (BONOBO_OBJECT (factory)));
switch (result) {
case Bonobo_ACTIVATION_REG_SUCCESS:
@@ -625,7 +545,7 @@ pas_book_factory_dispose (GObject *object)
priv->backends = NULL;
if (priv->registered) {
- bonobo_activation_active_server_unregister (priv->iid, priv->corba_objref);
+ bonobo_activation_active_server_unregister (priv->iid, bonobo_object_corba_objref (BONOBO_OBJECT (factory)));
priv->registered = FALSE;
}
@@ -637,33 +557,12 @@ pas_book_factory_dispose (GObject *object)
}
static void
-corba_class_init (void)
-{
- POA_GNOME_Evolution_Addressbook_BookFactory__vepv *vepv;
- POA_GNOME_Evolution_Addressbook_BookFactory__epv *epv;
- PortableServer_ServantBase__epv *base_epv;
-
- base_epv = g_new0 (PortableServer_ServantBase__epv, 1);
- base_epv->_private = NULL;
- base_epv->finalize = NULL;
- base_epv->default_POA = NULL;
-
-
- epv = g_new0 (POA_GNOME_Evolution_Addressbook_BookFactory__epv, 1);
-
- epv->openBook = impl_GNOME_Evolution_Addressbook_BookFactory_openBook;
-
- vepv = &pas_book_factory_vepv;
- vepv->_base_epv = base_epv;
- vepv->GNOME_Evolution_Addressbook_BookFactory_epv = epv;
-}
-
-static void
pas_book_factory_class_init (PASBookFactoryClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ POA_GNOME_Evolution_Addressbook_BookFactory__epv *epv;
- pas_book_factory_parent_class = g_type_class_ref (G_TYPE_OBJECT);
+ pas_book_factory_parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
object_class->dispose = pas_book_factory_dispose;
@@ -676,32 +575,14 @@ pas_book_factory_class_init (PASBookFactoryClass *klass)
pas_marshal_NONE__NONE,
G_TYPE_NONE, 0);
- corba_class_init ();
-}
-/**
- * pas_book_factory_get_type:
- */
-GType
-pas_book_factory_get_type (void)
-{
- static GType type = 0;
-
- if (! type) {
- GTypeInfo info = {
- sizeof (PASBookFactoryClass),
- NULL, /* base_class_init */
- NULL, /* base_class_finalize */
- (GClassInitFunc) pas_book_factory_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (PASBookFactory),
- 0, /* n_preallocs */
- (GInstanceInitFunc) pas_book_factory_init
- };
-
- type = g_type_register_static (G_TYPE_OBJECT, "PASBookFactory", &info, 0);
- }
+ epv = &klass->epv;
- return type;
+ epv->openBook = impl_GNOME_Evolution_Addressbook_BookFactory_openBook;
}
+
+BONOBO_TYPE_FUNC_FULL (
+ PASBookFactory,
+ GNOME_Evolution_Addressbook_BookFactory,
+ BONOBO_TYPE_OBJECT,
+ pas_book_factory);