| Bonobo Activation API Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
#include <bonobo-activation/bonobo-activation.h>
Bonobo_RegistrationResult;
void bonobo_activation_unregister_active_server
(const char *iid,
CORBA_Object obj);
void bonobo_activation_registration_env_free
(GSList *reg_env);
GSList * bonobo_activation_registration_env_set
(GSList *reg_env,
const char *name,
const char *value);
void bonobo_activation_registration_env_set_global
(GSList *reg_env,
gboolean append_if_existing);
Bonobo_RegistrationResult bonobo_activation_register_active_server
(const char *iid,
CORBA_Object obj,
GSList *reg_env);
const char * bonobo_activation_iid_get (void);
BonoboActivationPlugin;
BonoboActivationPluginObject;
void bonobo_activation_plugin_use (PortableServer_Servant servant,
gpointer impl_ptr);
void bonobo_activation_plugin_unuse (gpointer impl_ptr);
When writing a component which can be activated through Bonobo Activation by clients, you need to be register your component to Bonobo Activation once it is created.
typedef struct {
CORBA_unsigned_long _maximum, _length; Bonobo_ServerInfo* _buffer; CORBA_boolean _release; } CORBA_sequence_Bonobo_ServerInfo;
#endif
#if !defined(TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_0)
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_0 'B'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_1 'o'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_2 'n'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_3 'o'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_4 'b'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_5 'o'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_6 '_'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_7 'A'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_8 'c'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_9 't'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_10 'i'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_11 'v'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_12 'a'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_13 't'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_14 'i'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_15 'o'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_16 'n'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_17 '_'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_18 't'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_19 'y'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_20 'p'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_21 'e'
#define TC_IMPL_TC_CORBA_sequence_Bonobo_ServerInfo_22 's'
#ifdef ORBIT_IDL_C_IMODULE_Bonobo_Activation_types
static
#else
extern
#endif
ORBIT2_MAYBE_CONST struct CORBA_TypeCode_struct TC_CORBA_sequence_Bonobo_ServerInfo_struct;
#define TC_CORBA_sequence_Bonobo_ServerInfo ((CORBA_TypeCode)&TC_CORBA_sequence_Bonobo_ServerInfo_struct)
#endif
#define CORBA_sequence_Bonobo_ServerInfo__alloc() ((CORBA_sequence_Bonobo_ServerInfo *)ORBit_small_alloc (TC_CORBA_sequence_Bonobo_ServerInfo))
#define CORBA_sequence_Bonobo_ServerInfo__freekids(m,d) ORBit_small_freekids (TC_CORBA_sequence_Bonobo_ServerInfo,(m),(d))
#define CORBA_sequence_Bonobo_ServerInfo_allocbuf(l) ((Bonobo_ServerInfo*)ORBit_small_allocbuf (TC_CORBA_sequence_Bonobo_ServerInfo, (l)))
#define CORBA_sequence_Bonobo_ServerInfo_allocbuf(l) ((Bonobo_ServerInfo*)ORBit_small_allocbuf (TC_CORBA_sequence_Bonobo_ServerInfo, (l)))
#endif
#if !defined(_Bonobo_ServerInfoList_defined)
#define _Bonobo_ServerInfoList_defined 1
typedef CORBA_sequence_Bonobo_ServerInfo Bonobo_ServerInfoList;
#define Bonobo_ServerInfoList_marshal(x,y,z) CORBA_sequence_Bonobo_ServerInfo_marshal((x),(y),(z))
#define Bonobo_ServerInfoList_demarshal(x,y,z,i) CORBA_sequence_Bonobo_ServerInfo_demarshal((x),(y),(z),(i))
#if !defined(TC_IMPL_TC_Bonobo_ServerInfoList_0)
#define TC_IMPL_TC_Bonobo_ServerInfoList_0 'B'
#define TC_IMPL_TC_Bonobo_ServerInfoList_1 'o'
#define TC_IMPL_TC_Bonobo_ServerInfoList_2 'n'
#define TC_IMPL_TC_Bonobo_ServerInfoList_3 'o'
#define TC_IMPL_TC_Bonobo_ServerInfoList_4 'b'
#define TC_IMPL_TC_Bonobo_ServerInfoList_5 'o'
#define TC_IMPL_TC_Bonobo_ServerInfoList_6 '_'
#define TC_IMPL_TC_Bonobo_ServerInfoList_7 'A'
#define TC_IMPL_TC_Bonobo_ServerInfoList_8 'c'
#define TC_IMPL_TC_Bonobo_ServerInfoList_9 't'
#define TC_IMPL_TC_Bonobo_ServerInfoList_10 'i'
#define TC_IMPL_TC_Bonobo_ServerInfoList_11 'v'
#define TC_IMPL_TC_Bonobo_ServerInfoList_12 'a'
#define TC_IMPL_TC_Bonobo_ServerInfoList_13 't'
#define TC_IMPL_TC_Bonobo_ServerInfoList_14 'i'
#define TC_IMPL_TC_Bonobo_ServerInfoList_15 'o'
#define TC_IMPL_TC_Bonobo_ServerInfoList_16 'n'
#define TC_IMPL_TC_Bonobo_ServerInfoList_17 '_'
#define TC_IMPL_TC_Bonobo_ServerInfoList_18 't'
#define TC_IMPL_TC_Bonobo_ServerInfoList_19 'y'
#define TC_IMPL_TC_Bonobo_ServerInfoList_20 'p'
#define TC_IMPL_TC_Bonobo_ServerInfoList_21 'e'
#define TC_IMPL_TC_Bonobo_ServerInfoList_22 's'
#ifdef ORBIT_IDL_C_IMODULE_Bonobo_Activation_types
static
#else
extern
#endif
ORBIT2_MAYBE_CONST struct CORBA_TypeCode_struct TC_Bonobo_ServerInfoList_struct;
#define TC_Bonobo_ServerInfoList ((CORBA_TypeCode)&TC_Bonobo_ServerInfoList_struct)
#endif
#define Bonobo_ServerInfoList__alloc() ((Bonobo_ServerInfoList *)ORBit_small_alloc (TC_CORBA_sequence_Bonobo_ServerInfo))
#define Bonobo_ServerInfoList__freekids(m,d) ORBit_small_freekids (TC_CORBA_sequence_Bonobo_ServerInfo,(m),(d))
#define Bonobo_ServerInfoList_allocbuf(l) ((Bonobo_ServerInfo*)ORBit_small_allocbuf (TC_CORBA_sequence_Bonobo_ServerInfo, (l)))
#endif
#if !defined(_Bonobo_RegistrationResult_defined)
#define _Bonobo_RegistrationResult_defined 1
typedef enum {
Bonobo_ACTIVATION_REG_SUCCESS,
Bonobo_ACTIVATION_REG_NOT_LISTED,
Bonobo_ACTIVATION_REG_ALREADY_ACTIVE,
Bonobo_ACTIVATION_REG_ERROR
} Bonobo_RegistrationResult;
void bonobo_activation_unregister_active_server (const char *iid,CORBA_Object obj);
Unregisters obj with iid with the local bonobo-activation-server
daemon.
|
IID of the server to unregister. |
|
CORBA::Object to unregister. |
void bonobo_activation_registration_env_free
(GSList *reg_env);
Frees the registration environment list, reg_env.
|
a GSList pointer. |
GSList * bonobo_activation_registration_env_set (GSList *reg_env,const char *name,const char *value);
Sets the environment variable name to value in the
registration environment list reg_env.
void bonobo_activation_registration_env_set_global (GSList *reg_env,gboolean append_if_existing);
Sets the global registration environment list with the
contents of reg_env. If append_if_existing is set to
FALSE, the an existing global list will be overwritten.
|
a GSList pointer. |
|
whether or not to append to the global list. |
Bonobo_RegistrationResult bonobo_activation_register_active_server (const char *iid,CORBA_Object obj,GSList *reg_env);
Registers obj with iid with the local bonobo-activation-server
daemon.
If reg_env is not NULL, obj will be registered in such a
way that if a client who's environment differs from the
environment specified in reg_env, then another attempt
to activate iid will not result in a reference to obj
being returned, but rather another instance of iid being
activated.
So, for example, you can ensure that a seperate instance of the component is activated for each distinct X display (and screen) by:
display_name = gdk_display_get_name (gdk_display_get_default());
reg_env = bonobo_activation_registration_env_set (
reg_env, "DISPLAY", display_name);
bonobo_activation_register_active_server (iid, active_server, reg_env);
bonobo_activation_registration_env_free (reg_env);
If reg_env is NULL, the global registration environment
list will be used if it is set. See
bonobo_activation_registration_env_set_global().
|
IID of the server to register. |
|
CORBA::Object to register. |
|
the registration environment. |
Returns : |
status of the registration. |
typedef struct {
const BonoboActivationPluginObject *plugin_object_list;
const char *description;
gpointer dummy[8];
} BonoboActivationPlugin;
Components which want to be activated as shared libraries must export an BonoboActivationPlugin structure of name Bonobo_Plugin_info. An exmaple of how to use it folows:
static CORBA_Object
hi_shlib_make_object (PortableServer_POA poa,
const char *iid,
gpointer impl_ptr,
CORBA_Environment *ev)
{
CORBA_Object object_ref;
object_ref = impl_Hi__create (poa, ev);
if (object_ref == CORBA_OBJECT_NIL
|| ev->_major != CORBA_NO_EXCEPTION) {
printf ("Server cannot get objref\n");
return CORBA_OBJECT_NIL;
}
bonobo_activation_plugin_use (poa, impl_ptr);
return object_ref;
}
static const BonoboActivationPluginObject hi_plugin_list[] = {
{
"OAFIID:Hi:20000923",
hi_shlib_make_object
},
{
NULL
}
};
const BonoboActivationPlugin Bonobo_Plugin_info = {
hi_plugin_list,
"Hi example"
};
typedef struct {
const char *iid;
/* This routine should call bonobo_activation_plugin_use(servant, impl_ptr),
* as should all routines which activate CORBA objects
* implemented by this shared library. This needs to be done
* before making any CORBA calls on the object, or
* passing that object around. First thing after servant creation
* always works. :)
*/
CORBA_Object (*activate) (PortableServer_POA poa,
const char *iid,
gpointer impl_ptr, /* This pointer should be stored by the implementation
* to be passed to bonobo_activation_plugin_unuse() in the
* implementation's destruction routine. */
CORBA_Environment *ev);
gpointer dummy[4];
} BonoboActivationPluginObject;
void bonobo_activation_plugin_use (PortableServer_Servant servant,gpointer impl_ptr);
You should call this routine to activate a shared library-based
CORBA Object. It will be called by OAF if the component exports
correctly an BonoboActivationPlugin structure named "Bonobo_Plugin_info".
|
The servant that was created |
|
The impl_ptr that was passed to the original activation routine |
void bonobo_activation_plugin_unuse (gpointer impl_ptr);
Side effects: May arrange for the shared library that the implementation is in to be unloaded.
When a shlib plugin for a CORBA object is destroying an implementation, it should call this function to make sure that the shared library is unloaded as needed.
|
The impl_ptr that was passed to the activation routine |