<HTML ><HEAD ><TITLE >BonoboTransient</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.64 "><LINK REL="HOME" TITLE="Bonobo API Reference Manual" HREF="book1.html"><LINK REL="UP" TITLE="Properties" HREF="bonobo-properties.html"><LINK REL="PREVIOUS" TITLE="bonobo-property-bag-xml" HREF="bonobo-bonobo-property-bag-xml.html"><LINK REL="NEXT" TITLE="Notification and EventSources" HREF="bonobo-notification.html"></HEAD ><BODY CLASS="REFENTRY" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" BGCOLOR="#000000" CELLPADDING="1" CELLSPACING="0" ><TR ><TH COLSPAN="4" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="5" >Bonobo API Reference Manual</FONT ></TH ></TR ><TR ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="left" ><A HREF="bonobo-bonobo-property-bag-xml.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><<< Previous Page</B ></FONT ></A ></TD ><TD WIDTH="25%" BGCOLOR="#0000C0" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="book1.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Home</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#00C000" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="bonobo-properties.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Up</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="right" ><A HREF="bonobo-notification.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Next Page >>></B ></FONT ></A ></TD ></TR ></TABLE ></DIV ><H1 ><A NAME="BONOBO-BONOBO-TRANSIENT" >BonoboTransient</A ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN5177" ></A ><H2 >Name</H2 >BonoboTransient -- Creates a server that will handle transient objects.</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN5180" ></A ><H2 >Synopsis</H2 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="SYNOPSIS" > typedef <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >; typedef <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTCLASS" >BonoboTransientClass</A >; <GTKDOCLINK HREF="PORTABLESERVER-SERVANT" >PortableServer_Servant</GTKDOCLINK > (<A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTNEW" >*BonoboTransientServantNew</A >) (<GTKDOCLINK HREF="PORTABLESERVER-POA" >PortableServer_POA</GTKDOCLINK >, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >*, char *name, void *data); void (<A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTDESTROY" >*BonoboTransientServantDestroy</A >) (<GTKDOCLINK HREF="PORTABLESERVER-SERVANT" >PortableServer_Servant</GTKDOCLINK > servant, void *data); <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >* <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-NEW" >bonobo_transient_new</A > (<GTKDOCLINK HREF="PORTABLESERVER-POA" >PortableServer_POA</GTKDOCLINK > poa, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTNEW" >BonoboTransientServantNew</A > new_servant, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTDESTROY" >BonoboTransientServantDestroy</A > destroy_servant, void *data); <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >* <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CONSTRUCT" >bonobo_transient_construct</A > (<A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A > *transient, <GTKDOCLINK HREF="PORTABLESERVER-POA" >PortableServer_POA</GTKDOCLINK > poa, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTNEW" >BonoboTransientServantNew</A > new_servant, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTDESTROY" >BonoboTransientServantDestroy</A > destroy_servant, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > data); <GTKDOCLINK HREF="CORBA-OBJECT" >CORBA_Object</GTKDOCLINK > <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CREATE-OBJREF" >bonobo_transient_create_objref</A > (<A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A > *transient, const char *iface_name, const char *name, <GTKDOCLINK HREF="CORBA-ENVIRONMENT" >CORBA_Environment</GTKDOCLINK > *ev); </PRE ></TD ></TR ></TABLE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5207" ></A ><H2 >Object Hierarchy</H2 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="SYNOPSIS" > <GTKDOCLINK HREF="GTKOBJECT" >GtkObject</GTKDOCLINK > +----BonoboTransient</PRE ></TD ></TR ></TABLE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5211" ></A ><H2 >Description</H2 ><P > The <TT CLASS="CLASSNAME" >BonoboTransient</TT > is used to create transient objects. These objects only exist during the lifetime of the method execution of the interface they implement: they are created on demand and destroyed after the method invocation finishes. </P ><P > Transient objects are an optimization useful when it is possible for a very large set of object to exist but there is no need to have implementations of the servers running all the time, as they can be created on the demand to satisfy the requests of client applications. </P ><P > For example, consider the case in which a large list of objects needs to be returned to a client application. For example, an object reference could be returned for every file on a directory. But it would be wasteful to keep one server running for each file. And given that the program has all the information available to create the servers on demand, you want to use this system.</P ><P > This can be used for implementations of the IDL:Bonobo/PropertyBag interface, as there are in theories thousands of keys that could be returned, but the method invocations on each object is short-lived, so it is efficient to just create servers to satisfy an object request on demand, and destroy them when the request is done.</P ><P > To create such object, you first need to create a <TT CLASS="CLASSNAME" >BonoboTransient</TT > object, and then for every virtual object that you want to expose to the world, you invoke the <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CREATE-OBJREF" >bonobo_transient_create_objref</A >() function to create a new CORBA object reference. </P ><P > <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-NEW" >bonobo_transient_new</A >() will create a new POA inside the POA you specify (you can use CORBA_OBJECT_NIL to get the POA to be created in the default Bonobo POA). All object references created with <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CREATE-OBJREF" >bonobo_transient_create_objref</A >() will live in this new POA. </P ><P > The <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-NEW" >bonobo_transient_new</A >() function takes an argument that specifies the function that will be used to create the temporary CORBA servant that will satisfy an incoming request. And a function that will be used to destroy the servant when the request processing is done. </P ><P > The <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CREATE-OBJREF" >bonobo_transient_create_objref</A >() function takes a number of arguments:</P ><P ></P ><UL ><LI ><P > The name of the object you want to create. This name will be passed to the servant creation routine when an incoming request for that object comes in. Your servant creation routine should be able to create a servant from the data you expose as the name (it can be a stringified representation of an in-process pointer for all that we care). </P ></LI ><LI ><P > The interface name implemented by the object named before. This is the CORBA interface name that your object implements, for example "IDL:Echo/echo:1.0". </P ></LI ></UL ><P > Here is an example of how to use BonoboTransient: <DIV CLASS="EXAMPLE" ><A NAME="AEN5234" ></A ><P ><B >Example 1. Using BonoboTransient</B ></P ><TABLE BORDER="0" BGCOLOR="#D8F8D8" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >BonoboTransient *my_transient = NULL; static PortableServer_Servant create_servant (PortableServer_POA poa, BonoboTransient *bt, char *name, void *my_callback_data) { MyServant *servant; if (!my_validate_name (name)) return NULL; servant = g_new0 (MyServant, 1); servant->vepv = <GTKDOCLINK HREF="MY-SERVANT-GET-EPV" >my_servant_get_epv</GTKDOCLINK >(); servant->my_data = g_strdup ("Hello world!"); POA_My_Iface__init ((PortableServer_Servant) servant, &ev); return servant; } void destroy_servant (PortableServer_Servant servant, void *my_callback_data) { CORBA_Environment ev; g_free (servant->my_data); CORBA_exception_init (&ev); POA_My_Iface__fini (servant, &ev); CORBA_exception_free (&ev); } CORBA_Object impl_Some_Iface (PortableServer_Servant servant, CORBA_Environment *ev) { return bonobo_transient_create_objref ( my_transient, "IDL:My/Iface:1.0", "hello", ev); } void <GTKDOCLINK HREF="INIT-TRANSIENT" >init_transient</GTKDOCLINK >() { my_transient = bonobo_transient_new ( CORBA_OBJECT_NIL, create_servant, destroy_servant, NULL); } </PRE ></TD ></TR ></TABLE ></DIV ></P ><P > The previous example shows: how the <TT CLASS="PARAMETER" ><I >my_transient</I ></TT > object is first created, and what the implementations for the create_servant and destroy_servant look like. It does not make use of the user pointer, so it passes NULL. However, in practice, applications will most likely want to pass data here to the new_servant and destroy_servant methods. </P ><P > The impl_Some_Iface is a method that we assume in the example will be part of the implementation of a CORBA server. This method will be invoked at some time to get an object reference to one of the transient objects (in this case, we have called our object "hello" and it implements the interface IDL:My/Iface:1.0).</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5242" ></A ><H2 >Details</H2 ><DIV CLASS="REFSECT2" ><A NAME="AEN5244" ></A ><H3 ><A NAME="BONOBOTRANSIENT" ></A >BonoboTransient</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >typedef struct { GtkObject parent; BonoboTransientPriv *priv; } BonoboTransient;</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5249" ></A ><H3 ><A NAME="BONOBOTRANSIENTCLASS" ></A >BonoboTransientClass</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >typedef struct { GtkObjectClass parent_class; } BonoboTransientClass;</PRE ></TD ></TR ></TABLE ><P ></P ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5254" ></A ><H3 ><A NAME="BONOBOTRANSIENTSERVANTNEW" ></A >BonoboTransientServantNew ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="PORTABLESERVER-SERVANT" >PortableServer_Servant</GTKDOCLINK > (*BonoboTransientServantNew) (<GTKDOCLINK HREF="PORTABLESERVER-POA" >PortableServer_POA</GTKDOCLINK >, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >*, char *name, void *data);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5263"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >Param1</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5268"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >Param2</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5273"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5278"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >data</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5283"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5288" ></A ><H3 ><A NAME="BONOBOTRANSIENTSERVANTDESTROY" ></A >BonoboTransientServantDestroy ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" >void (*BonoboTransientServantDestroy) (<GTKDOCLINK HREF="PORTABLESERVER-SERVANT" >PortableServer_Servant</GTKDOCLINK > servant, void *data);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5295"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >servant</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5300"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >data</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > </P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5305" ></A ><H3 ><A NAME="BONOBO-TRANSIENT-NEW" ></A >bonobo_transient_new ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >* bonobo_transient_new (<GTKDOCLINK HREF="PORTABLESERVER-POA" >PortableServer_POA</GTKDOCLINK > poa, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTNEW" >BonoboTransientServantNew</A > new_servant, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTDESTROY" >BonoboTransientServantDestroy</A > destroy_servant, void *data);</PRE ></TD ></TR ></TABLE ><P ><A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-NEW" >bonobo_transient_new</A >() creates a new CORBA server that creates a new POA entry (within the <TT CLASS="PARAMETER" ><I >parent_poa</I ></TT > POA). You can construct arbitrary object names inside this space using <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CREATE-OBJREF" >bonobo_transient_create_objref</A >() and return those to client code.</P ><P >The <TT CLASS="PARAMETER" ><I >new_servant</I ></TT > function will be invoked by the POA to resolve object reference to names you have created using <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-CREATE-OBJREF" >bonobo_transient_create_objref</A >(). The <TT CLASS="PARAMETER" ><I >new_servant</I ></TT > function should return a PortableServer_Servant that will handle the request.</P ><P >Once the processing is completed, the <TT CLASS="PARAMETER" ><I >destroy_servant</I ></TT > will be invoked to release any resources allocated during the invocation of <TT CLASS="PARAMETER" ><I >new_servant</I ></TT > or during the execution of the servant that need to be released.</P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5326"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >poa</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5331"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >new_servant</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > A function pointer used to incarnate servants on demand.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5336"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >destroy_servant</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > A function pointer used to destroy the on-demand server.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5341"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >data</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > data passed to the <TT CLASS="PARAMETER" ><I >new_servant</I ></TT > and <TT CLASS="PARAMETER" ><I >destroy_servant</I ></TT > functions.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5348"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > a new BonoboTransient object.</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5353" ></A ><H3 ><A NAME="BONOBO-TRANSIENT-CONSTRUCT" ></A >bonobo_transient_construct ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A >* bonobo_transient_construct (<A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A > *transient, <GTKDOCLINK HREF="PORTABLESERVER-POA" >PortableServer_POA</GTKDOCLINK > poa, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTNEW" >BonoboTransientServantNew</A > new_servant, <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENTSERVANTDESTROY" >BonoboTransientServantDestroy</A > destroy_servant, <GTKDOCLINK HREF="GPOINTER" >gpointer</GTKDOCLINK > data);</PRE ></TD ></TR ></TABLE ><P >This function is only for wrappers and object derivation. For normal use, please see <A HREF="bonobo-bonobo-transient.html#BONOBO-TRANSIENT-NEW" >bonobo_transient_new</A >.</P ><P >This function will return <TT CLASS="LITERAL" >NULL</TT > on failure; however it is your responsibility to destroy the failed object in that case.</P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5369"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >transient</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > the BonoboTransient to construct</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5374"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >poa</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P ></P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5379"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >new_servant</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > A function pointer used to incarnate servants on demand.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5384"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >destroy_servant</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > A function pointer used to destroy the on-demand server.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5389"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >data</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > data passed to the <TT CLASS="PARAMETER" ><I >new_servant</I ></TT > and <TT CLASS="PARAMETER" ><I >destroy_servant</I ></TT > functions.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5396"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > a <A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A > object (the <TT CLASS="PARAMETER" ><I >transient</I ></TT >)</P ></TD ></TR ></TBODY ></TABLE ></DIV ><HR><DIV CLASS="REFSECT2" ><A NAME="AEN5403" ></A ><H3 ><A NAME="BONOBO-TRANSIENT-CREATE-OBJREF" ></A >bonobo_transient_create_objref ()</H3 ><TABLE BORDER="0" BGCOLOR="#D6E8FF" WIDTH="100%" CELLPADDING="6" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" ><GTKDOCLINK HREF="CORBA-OBJECT" >CORBA_Object</GTKDOCLINK > bonobo_transient_create_objref (<A HREF="bonobo-bonobo-transient.html#BONOBOTRANSIENT" >BonoboTransient</A > *transient, const char *iface_name, const char *name, <GTKDOCLINK HREF="CORBA-ENVIRONMENT" >CORBA_Environment</GTKDOCLINK > *ev);</PRE ></TD ></TR ></TABLE ><P ></P ><P ></P ><P ></P ><TABLE CLASS="VARIABLELIST" BORDER="0" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#FFD0D0" ><TBODY ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5413"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >transient</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > The BonoboTransient manager where the object reference is rooted.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5418"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >iface_name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > The CORBA interface name that the returned object is supposed to implement.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5423"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >name</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > The name of the object inside the <TT CLASS="PARAMETER" ><I >transient</I ></TT > POA's name space.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5429"><SPAN STYLE="white-space: nowrap" ><TT CLASS="PARAMETER" ><I >ev</I ></TT > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > returns possible errors from the <GTKDOCLINK HREF="PORTABLESERVER-POA-CREATE-REFERENCE-WITH-ID" >PortableServer_POA_create_reference_with_id</GTKDOCLINK >() call.</P ></TD ></TR ><TR ><TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="20%" ><A NAME="AEN5435"><SPAN STYLE="white-space: nowrap" ><I CLASS="EMPHASIS" >Returns</I > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="80%" ><P > a CORBA_Object reference for an object named <TT CLASS="PARAMETER" ><I >name</I ></TT > inside the <TT CLASS="PARAMETER" ><I >transient</I ></TT >'s POA naming space that implements the <TT CLASS="PARAMETER" ><I >iface_name</I ></TT > interface The return value can be CORBA_OBJECT_NIL to indicate an error in the incoming arguments.</P ></TD ></TR ></TBODY ></TABLE ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN5443" ></A ><H2 >See Also</H2 ><P > <TT CLASS="CLASSNAME" >BonoboPropertyBag</TT ></P ></DIV ><DIV CLASS="NAVFOOTER" ><BR CLEAR="all"><BR><TABLE WIDTH="100%" BORDER="0" BGCOLOR="#000000" CELLPADDING="1" CELLSPACING="0" ><TR ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="left" ><A HREF="bonobo-bonobo-property-bag-xml.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><<< Previous Page</B ></FONT ></A ></TD ><TD WIDTH="25%" BGCOLOR="#0000C0" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="book1.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Home</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#00C000" ALIGN="center" ><FONT COLOR="#FFFFFF" SIZE="3" ><B ><A HREF="bonobo-properties.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Up</B ></FONT ></A ></B ></FONT ></TD ><TD WIDTH="25%" BGCOLOR="#C00000" ALIGN="right" ><A HREF="bonobo-notification.html" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Next Page >>></B ></FONT ></A ></TD ></TR ><TR ><TD COLSPAN="2" ALIGN="left" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >bonobo-property-bag-xml</B ></FONT ></TD ><TD COLSPAN="2" ALIGN="right" ><FONT COLOR="#FFFFFF" SIZE="3" ><B >Notification and EventSources</B ></FONT ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >