Sophie

Sophie

distrib > PLD > ac > amd64 > media > dist > by-pkgid > fd2761970a77896f276e13daf3a9620f > files > 131

bonobo-devel-1.0.22-7.amd64.rpm

<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
>&#60;&#60;&#60; 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 &#62;&#62;&#62;</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&nbsp;--&nbsp;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"
>&#13;

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);&#13;</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"
>&#13;  <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-&#62;vepv = <GTKDOCLINK
HREF="MY-SERVANT-GET-EPV"
>my_servant_get_epv</GTKDOCLINK
>();
        servant-&#62;my_data = g_strdup ("Hello world!");
        POA_My_Iface__init ((PortableServer_Servant) servant, &amp;ev);
        return servant;
}

void
destroy_servant (PortableServer_Servant servant, void *my_callback_data)
{
        CORBA_Environment ev;

        g_free (servant-&#62;my_data);
        CORBA_exception_init (&amp;ev);
        POA_My_Iface__fini (servant, &amp;ev);
        CORBA_exception_free (&amp;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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&#13;</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
>&nbsp;:</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
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="80%"
><P
>&#13;</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&nbsp;:</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
>&#60;&#60;&#60; 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 &#62;&#62;&#62;</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
>