diff options
Diffstat (limited to 'TAO/docs')
-rw-r--r-- | TAO/docs/DIFFERENCES | 360 | ||||
-rw-r--r-- | TAO/docs/HISTORY | 44 | ||||
-rw-r--r-- | TAO/docs/Options.html | 231 | ||||
-rw-r--r-- | TAO/docs/REFERENCES | 91 | ||||
-rw-r--r-- | TAO/docs/compiler.html | 117 | ||||
-rw-r--r-- | TAO/docs/components.html | 39 | ||||
-rw-r--r-- | TAO/docs/configurations.html | 301 | ||||
-rw-r--r-- | TAO/docs/forwarding.html | 85 | ||||
-rw-r--r-- | TAO/docs/index.html | 49 | ||||
-rw-r--r-- | TAO/docs/orbsvcs.html | 181 | ||||
-rw-r--r-- | TAO/docs/poa_migration.html | 69 | ||||
-rw-r--r-- | TAO/docs/reactivator.html | 358 | ||||
-rw-r--r-- | TAO/docs/releasenotes.html | 26 | ||||
-rw-r--r-- | TAO/docs/releasenotes/ec.html | 182 | ||||
-rw-r--r-- | TAO/docs/releasenotes/index.html | 607 | ||||
-rw-r--r-- | TAO/docs/releasenotes/orbcore.html | 458 |
16 files changed, 0 insertions, 3198 deletions
diff --git a/TAO/docs/DIFFERENCES b/TAO/docs/DIFFERENCES deleted file mode 100644 index 0a8dd343d4d..00000000000 --- a/TAO/docs/DIFFERENCES +++ /dev/null @@ -1,360 +0,0 @@ -@(#)DIFFERENCES 1.1 95/09/13 - -[ NOTE that the CORBA 2.0 specifications have now been published, but are -not yet sufficiently available that this document can usefully just list -any differences between that specification and this software. As a rule, -there are no differences between this software and CORBA 2.0 in areas -where CORBA 2.0 has specified an interface. ] - - -This document summarizes known differences between what is implemented in -this software and currently available OMG specifications. As a rule, these -establish compatibility with revised specifications that are currently being -prepared for publication. However, in some cases the differences resolve -problems that are currently being addressed by ORB taskforces. When those -revised CORBA specifications are published, this document will be updated to -reflect any remaining differences from them. - -The reason for those changes is that different specifications were adopted -at the same time and there were in some cases subtle differences which need -to be resolved. Minor errata have also been fixed. None of these changes -are substantial, with the exception of the TypeCode interpreter API which -was added to the C++ mapping. - -Also, note that the goal of this software is fidelity to the IIOP, so that -issues relating (in particular) to the C++ language mapping or other OMG -specifications were judged to be of less importance at this time. - - -DIFFERENCES from IIOP in UNO Spec (95-3-10) -------------------------------------------- -Some changes to the original specification (94-9-32) for the IIOP protocol -were found to be necessary; most related to the subsequently adopted Interface -Repository (IFR) specification (94-11-7). Others resulted from correction -of minor editorial errors, and experience gained as multiple teams implement -to that specification. - -The bulk of those changes have been incorporated into the 95-3-10 document, -but these few have not. - - -CDR TYPECODE INDIRECTION - -An additional constraint on the use of typecode indirection has been -identified. Specifically, the typecode to which an indirection points -be "self-sufficient", and may not point "outside of itself" for any -further indirections. For example, always indirections occur within -encapsulations, so it's OK for the indirection to point anywhere in -that encapsulation, or at the encoded TCKind enum value immediately -before the encapsulation's length. For typecode encapsulations nested -inside other typecode encapsulations, the indirection may point no -further than the outermost encapsulation. - -Also, when an indirection points to another typecode, the byte order -of that other typecode must be deduced from the encoded value found -there. This is straightforward for encoded TCKind values, all of which -fit into a single byte: if the first byte of the word is zero, then -the encoding is big-endian, else it's little-endian. - -Indirecting to another indirection is not allowed, since the byte order -of the encoded offset can't consistently be deduced. - - -MISCELLANY - -The type GIOP::Version is assumed to be identical to IIOP::Version. -As part of the editorial separation of GIOP from its Internet version -IIOP, this typedef was accidentally omitted. - -This implementation of IIOP supports the OMG-IDL Primitive Data Types as -defined in Appendix A of 94-9-32, but with TCKind numbers following the new -tk_exception and tk_alias codes. (That is, rather than using range 21-25, -these TCKind values are in the range 23-27.) - -These data types are currently the topic of an RFP in process in the OMG, -and are not currently defined as part of a current OMG specification. -Clients and servers using these extended data types are relying on CORBA -extensions that are not yet standardized; and should be prepared to change. - - -CORBA 2.0/CORE Differences --------------------------- -As of this writing, the new CORBA 2.0/CORE document has not yet been made -available. This is a modification of the CORBA 1.2 document, with the -addition of (mandatory) extensions from the UNO (94-9-32) specification: -notably DSI and some new object reference operations. This summarizes -differences between the as-yet-unpublished CORBA 2.0/CORE document and -the original text in the UNO specification. - - -DYNAMIC SKELETON INTERFACE - -Since the new "tk_except" typecodes now include the exception ID (this is -the repository ID describing the exception's type) the "exception" operation -used to report an exception through a ServerRequest no longer includes the -exception ID. - -Since the OperationDef entries for attributes are no longer found in the -interface repositories, the ServerRequest convenience operation to return -this has been removed. Application programs (such as bridges) must compare -the operation name string with the prefixes "_get_" and "_set_" to see if -any given operation applies to an attribute. If an operation is one of the -two for which an OMG-IDL "attribute" declaration is shorthand, then the -application must search the interface repository for that attribute. - -(There are in fact three categories of operations on which an object adapter -and implementation collaborate to handle: user defined operations, user -defined attributes, and operations defined by CORBA such as "is_a" and -"get_implementation". Some object adapters, like the BOA, handle this last -category directly, rather than exposing it to applications.) - -The "non_existent" objref operation accidentally used attribute syntax; this -has been corrected. All operations on CORBA::Object references now use -normal operation syntax in their (pseudo) IDL definitions, and are uniformly -prefixed with underscores as part of their C++ mapping. - - -DIFFERENCES from IDL C++ Mapping (94-9-14) ------------------------------------------- -There are four basic ways in which the IIOP framework does not comply -with the OMG's IDL C++ mapping specification, beyond the use of the CORBA2 -module/namespace rather than the CORBA module/namespace. (CORBA2 is used -so that this software can be linked with existing ORBs, which should be -using the CORBA module/namespace already.) - -These ways are beyond the portability-derived use of the "class" construct -(instead of the C++ namespace construct), and the use of CORBA2::Environment -(rather than C++ exceptions), both of which are accomodated by the mapping: - - (1) This framework does not attempt to be complete. - - Completeness is not required to implement the Internet IOP, - so time was not spent in providing a complete mapping. - - (2) In some cases the API provided is not the one in the mapping. - For example CORBA2::Environment is not always passed in all - operations. This was done to promote ease of implementation - and coding. - - (3) Implementation details are generally exposed. - - This isn't so much a noncompliance issue (it's not specified - that such details must be hidden) as an issue of allowing - noncompliant applications. The effort required to actively - prevent use of implementation details by higher level code - would be nontrivial, and could slow down IIOP code, so no - time was applied to hiding such details. - - (However, note that when the software was modified to use COM, - standard C++ techniques were used to hide most such details.) - - (4) The C++ mapping needs completion in some areas. - - Notably, 94-9-14 does not satisfy requirements to provide - support for for all data types in an "Any" or exception without - needing any precompiled data type support routines. The - TypeCode interpreter addresses this issue. - - Some additional operations were not adopted at the time 94-9-14 - was defined; both 94-9-32 and 94-11-7 added new ORB interfaces - which are not found in the initial C++ mapping document. - -With respect to this fourth issue, descriptions of the API extensions -used is provided later in this file. The additional CORBA operations -are not described since their mapping is straightforward if it isn't given -in those documents. - - -ACCESS TO ALL DATA IN "ANY" AND EXCEPTIONS - -The "void *" value in an "Any", and any "CORBA2::Exception *" value, may -always be passed to the TypeCode interpreter (see next). This allows access -to all data held within an "Any" and an Exception. The "void *" value in an -Any with an exception TypeCode is of type CORBA2::Exception *". Due to -the way CORBA is specified, it is not possible to tell whether an "Any" -holding an exception denotes a user or standard (system-defined) exception -except by exhaustive comparison against exception IDs. - -Also, _all_ legal OMG-IDL data types may be held in an "Any", and may be -manipulated using the TypeCode interpreter. This satisfies a language -mapping requirement that DII (and DSI) be able to manipulate all OMG-IDL -data types without requiring compiler generated support for them. - - -TYPECODE INTERPRETER - -In any given C/C++ execution environment there is a binary standard for how -data is represented. While that standard will differ between execution -environments, there are a very limited number of ways in which those -representations differ. Those differences are encapsulated only in the -TypeCode interpreter, so that portable applications using the dynamic -typing infrastructure in the ORB can completely ignore how it's done in -any particular environment. - -The APIs in this software distribution have been suggested for adoption as -part of the OMG specification suite. The two APIs are nonstatic member -functions in the C++ mapping's TypeCode pseudo-object, and are augmented -by a single new enumeration type. - - unsigned long size() - - This returns the size of an instance of the type that is - described by the TypeCode. - - For example, when invoked on the typecode constant CORBA::_tc_Short, - the value returned is sizeof(CORBA::Short); and when invoked on the - typecode for a structure, it is the size of that structure (including - any internal and tail padding needed). When invoked on a sequence - typecode, it returns a value that does not include the size for - any embedded buffer. - - enum traverse_status {TRAVERSE_STOP, TRAVERSE_CONTINUE }; - - This is a data type used in the traverse() member function. - It allows data type traversal to be terminated early for - non-exceptional conditions, and eliminates the confusion - that some similar APIs have created when they use a single - boolean value (does TRUE mean to stop, or to continue?). - - traverse_status traverse ( - const void *value1; - const void *value2 - traverse_status visit ( - TypeCode_ptr tc, - const void *visit_value1, - const void *visit_value2, - void *visit_context - ), - void *context - ); - - (In the current language mapping, CORBA2::Environment references - are passed as the final parameter to the 'traverse' and 'visit' - routines for use when reporting exceptions.) - - The pointers "value1" and "value2" point to instances of the - data type described by the typecode (or are null pointers). - - For each constituent of that data type (e.g. structure member) - the visit() routine is called once. The constituent's type - is described by "tc"; "visit_value1" points to the constituent - of that type in "value1" (assuming the traverse routine was - not passed a null pointer) and similarly for "visit_value2". - The "visit_context" parameter is the context parameter passed - to the traverse() routine, and can point to whatever data is - needed by the visit() routine. - - Members are traversed in first-to-last order, as defined in the - IDL specification for the data type. So for example, the - visit routine for a structure could print out each element - on a IO stream passed through the context parameter, perhaps in - a neatly formatted form intended for human consumption. - - The visit() function may choose to recursively traverse() each - element. So for example if "tc->kind()" in a visit routine - returned CORBA::tk_struct, the contents of that struct would - be ignored unless the visit routine invoked traverse() using - the typecode and values passed to it. - - If the visit() routine returns TRAVERSE_CONTINUE, succeeding - constituents of the data type are visited in turn; if it - returns TRAVERSE_STOP, the traverse() routine returns that - value to its caller. Of course, if a visit() routine calls - traverse() itself, it may choose to ignore TRAVERSE_STOP. - -The traverse() routine is a powerful tool. It is used in the IIOP code -itself in several ways; look at such use for tutorial details. You could -implement data value comparison and "debug" data dumping as simple exercises -in the use of these APIs. - -The "marshaling interpreter" (marshal.cc) uses it to encode and decode -values according to the IIOP protocol specification. The "Any" code -(any.cc) uses traverse() both to free embedded pointers, and to make "deep" -copies of any data structure given its TypeCode. - -Only that "deep copy" visit routine uses "value2" as anything other than a -null pointer; it allows efficient construction of "deep copies" without -needing extra space for temporary values or coroutine stacks. (A general -purpose two-value comparison could also use "value2".) Most uses of the API -only manipulate a single data value at a time; no realistic need has yet -been seen for manipulating more than two data values at once. - -With respect to the OMG C and C++ mappings, it is clear that this style API -must be provided for the C mapping, but some people have noted that a -"purer" object oriented style API could also be provided in C++. That style -would use another internal visit routine, performing the requisite "switch" -over the fixed number of TCKind values, and then make a virtual function -call to an instance of a C++ class whose private state was the "context" and -whose member functions matched the arms of the switch. - - -MEMORY ALLOCATION - -In order to dynamically manipulate instances of arbitrary data types, -applications need to be able to allocate and free memory. The OMG C++ -mapping only says how to do this for data types which have static C++ -interfaces defined, which is clearly inadequate for using constructed -types with the DII/DSI/Any family of interfaces. - -This infrastructure requires the standard "malloc" and "free" primitives to -be used, and cast to the appropriate type. Data allocated using malloc -will normally be sized according to TypeCode::size(), and then be stored -inside an Any. When the Any is deleted, if the ORB deallocates the memory -it always uses "free" (including for any nested pointers, and correctly -handling cases such as arrays and sequences). - -Note that to support implementations where C and C++ language bindings -share the same ORB infrastructure, this solution is inadequate. This is -because the C binding's CORBA_free() interface would have no way to -determine the type of the data being freed. Instead, typed allocation -APIs will need to be used even when using the dynamically typed CORBA -subsystem ... a TypeCode::malloc() routine would suffice, if it returned -memory that was internally tagged with that TypeCode. In such a case, -the CORBA_free() routine could use that TypeCode to "deep free" data as -required, and C++ "new" and "delete" operators would need to know about -the internal tagging for all those data types. Such tagged allocation -would need to be used for all data that was to be freed by the ORB. - -(Having the C mapping require use of "typed free" routines, instead of the -CORBA_free interface, is sufficient to eliminate this problem.) - - -PASSING EXCEPTIONS THROUGH THE DII - -The C++ mapping's Dynamic Invocation Interface (DII) has key omissions -in that it doesn't say how to access to user-defined exception values, -and implicitly requires ORBs either to pass "excess" data on the wire -or else to consult an interface repository to deal with exceptions or -(deprecated) "context" strings. - -This software changes the DII specification in two ways to support the -requirement for DII users to be able to see user-defined exceptions, yet -not to violate the OMG-IDL type model by reporting illegal exceptions: - - * The Object::_create_request() member function, through which DII - users provide all the information included in an IDL operation's - signature, has an additional parameter. - - That parameter is a sequence of exception typecodes, describing - the user-defined exceptions that the operation can return. (The - standard exceptions defined in CORBA may always be returned.) - When any other exception is returned, the client's ORB reports that - the object's type definition has been violated by the server's ORB. - - * The TypeCode interpreter (see above) may be used to examine all - exception values reported through a CORBA::Environment. A new - Exception::id() operation may be used to determine which typecode - should be used. - -Note that a number of portability and specification problems have been -identified in the current C++ mapping for DII, e.g. for details of memory -management. Later versions of this code may attempt to closely comply -with an improved mapping for DII, to the extent that the interpretation -used here differs from that more unambiguous specification. - -Since there is no efficient way to distinguish typecodes for user defined -exceptions from ones for system-defined ("standard") exceptions (comparing -the exception ID against all the system defined ones is inefficient :-) -a new enum type "ExceptionType" is defined. (An analogous type is already -defined for the C language mapping.) This is used to report exceptions -through DII and DSI. diff --git a/TAO/docs/HISTORY b/TAO/docs/HISTORY deleted file mode 100644 index d97a8e35b2e..00000000000 --- a/TAO/docs/HISTORY +++ /dev/null @@ -1,44 +0,0 @@ -@(#)HISTORY 1.1 95/09/13 - -Mmmmmmmm DD, 1995 -- RELEASE 1.3: ---------------------------------- -Release 1.3 includes bugfixes, and support for the COM binary interface -model, both on UNIX and on MS-Windows platforms. The source tree has -been considerably restructured, with the goal of enabling addition of -other components at both the binary and source levels. - - -September 1, 1995 -- RELEASE 1.2: ---------------------------------- -Release 1.2 includes fixes for problems noted in the recent multivendor -interoperability testing at Object World, and as reported by other users on -the Internet. The most notable of these is that in some cases, when using -multiple connections to IIOP servers and clients, the connection management -code previously would get confused about which connection was which. (One -consequence of fixing this is that an old test has been removed.) Also, -there was no simple way to use Solaris 2.4 threads; see the Makefile for -details. A few other minor features were added to facilitate use of this -code for more than just protocol testing. - - -June 28, 1995 -- RELEASE 1.1: ------------------------------ -Release 1.1 includes support for several new platforms. Particular thanks -go to the team at APM, which contributed the bulk of the new "autoconf" -support (substantially enhancing portability), support for DEC Alpha and -HP 9000 platforms, runtime initialization of the size and alignment table -used to drive the typecode interpreter, and more; see README.apm for details. - -Release 1.1 includes POSIX.1c threading support; on platforms which provide -POSIX.1c threads, applications will be able to take advantage of them. - -Union and indirection support has been added to the TypeCode interpreter, -and more typecode utility APIs have been implemented. Various bugfixes and -cleanup have also been provided. Unfinished stubs for the COS Naming service -are included; these rely on C++ exception support. - - -March 21, 1995 -- RELEASE 1.0: ------------------------------- -The original release ran on a set of UNIX platforms (including Solaris, -SunOS, Linux, and NEXTSTEP) as well as with 16-bit and 32-bit MS-Windows. diff --git a/TAO/docs/Options.html b/TAO/docs/Options.html deleted file mode 100644 index 13f8ea2a7e2..00000000000 --- a/TAO/docs/Options.html +++ /dev/null @@ -1,231 +0,0 @@ -<HTML> -<HEAD> - <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac"> - <TITLE>Options for TAO Components</TITLE> -</HEAD> - -<BODY text = "#000000" -link="#000fff" -vlink="#ff0f0f" -bgcolor="#ffffff"> - -<H1 ALIGN=CENTER>Options for TAO Components</H1> - -<H2>Overview</H2> -<blockquote> -<P>Certain components in TAO such as the ORB Core or object adapter -can be tuned by users by providing value for options to them. These -options are commonly specified as strings (<EM>e.g.</EM>, passed on -the command-line) and are passed to component initialization methods -for consumption.</P> - -<P><EM>Programmer's Note:</EM> the internal structure for these -options is the traditional <CODE>argc</CODE>/<CODE>argv</CODE> vector -of strings style popularized by C and Unix. By convention, an -initialization method will consume, <EM>i.e.</EM>, remove from the -vector, any options that it recognizes.</P> </blockquote> - -<H2>Types of Options</H2> - -<H2>Roadmap</H2> - -<blockquote> -<P>The following components can be tuned via options:</P> - -<UL> - <LI><A HREF="#ORB"><CODE>CORBA::ORB</CODE></A> - <LI><A HREF="#POA"><CODE>CORBA::POA</CODE></A> - <LI><A HREF="#ResourceFactory"><CODE>TAO_Resource_Factory</CODE></A> - <LI><A HREF="#DefaultServer"><CODE>TAO_Default_Server_Strategy_Factory</CODE></A> - <LI><A HREF="#DefaultClient" TARGET="_top"><CODE>TAO_Default_Client_Strategy_Factory</CODE></A> -</UL> -</blockquote> - -<H2>Options</H2> - -<blockquote> -<H3><CODE>CORBA::ORB</CODE><A NAME="ORB"></A></H3> - -<blockquote> -<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING= -"0"> -<TR> -<TH>Option</TH> -<TH>Description</TH></TR> -<!-- <TR NAME="ORBsvcconf"> --> -<TD><CODE>-ORBsvcconf</CODE> <EM>config file name</EM></TD> -<TD>Specifies the name of the file from which it will read dynamic service configuration -directives <EM>ala</EM> ACE's Service Configurator.</TD></TR> -<TD><CODE>-ORBsvcconfdirective</CODE> <EM>directivestring</EM></TD> -<TD>Specifies a service configuration -directive, which is passed to ACE's Service Configurator.</TD></TR> -<TR> -<TD><CODE>-ORBdaemon</CODE></TD> -<TD>Specifies that the ORB should <I>daemonize</I> itself.</TD></TR> -<TR> -<TD><CODE>-ORBdebug</CODE></TD> -<TD>Turns on the output of debugging messages within ACE's Service Configurator -componentry.</TD></TR> -<TR> -<TD><CODE>-ORBhost</CODE> <EM>hostname</EM></TD> -<TD><a name="-ORBhost"></a>Tells the Object Adapter to listen for requests on the interface associated -with the host named <I><EM>hostname</EM></I>.</TD></TR> -<TR> -<TD><CODE>-ORBport</CODE> <EM>portspec</EM></TD> -<TD>Tells the Object Adapter to listen for requests on the port specified by -<I><EM>portspec</EM></I>, which can be a name as found in <TT>/etc/services</TT> -or a number. The default is <TT>10013</TT>.</TD></TR> -<TR> -<TD><CODE>-ORBobjrefstyle</CODE> <EM>which</EM></TD> -<TD>Specifies the user-visible style of object references. The range of values -is <CODE>IOR</CODE>, which is the traditional nonsensical object reference, -or <CODE>URL</CODE>, which looks more like a URL.</TD></TR> -<TR> -<TD><CODE>-ORBobjdemux</CODE> <EM>demux_method</EM></TD> -<TD>Specifies the method used to demultiplex to an object. The range of values -is <CODE>dynamic</CODE>, <CODE>linear</CODE>, <CODE>active</CODE>, or <CODE>user</CODE>.</TD></TR> -<TR> -<TD><CODE>-ORBtablesize</CODE> <EM>object table size</EM></TD> -<TD>Specifies the size of the object table as a positive, non-zero integer. -If not specified, the default is <TT>64</TT>.</TD></TR> -<TR> -<TD><CODE>-ORBrcvsock</CODE> <EM>receive buffer size</EM></TD> -<TD><A NAME="-ORBrcvsock"></a>Specify the size of the socket receive buffer as a positive, non-zero integer. -If not specified, the system-dependent default is used.</TD></TR> -<TR> -<TD><CODE>-ORBsndsock</CODE> <EM>send buffer size</EM></TD> -<TD><A NAME="-ORBsndsock"></a>Specify the size of the socket send buffer as a positive, non-zero integer. -If not specified, the system-dependent default is used.</TD></TR> -<TR> -<TD><CODE>-ORBnameserviceport</CODE> <EM>portspec</EM></TD> -<TD>Specifies which port the Naming Service is listening on.</TD></TR> -<TR> -<TD><CODE>-ORBnameserviceior</CODE> <EM>ior</EM></TD> -<TD>Specifies the IOR for the Naming Service.</TD></TR> -<TR> -<TD><CODE>-ORBcollocation</CODE> <EM>yes/no</EM></TD> -<TD>Specifies the use of collocation object optimization. Default is yes.</TD></TR> -<TR> -<TD><CODE>-ORBpreconnect</CODE> <EM>host</EM><STRONG>:</STRONG><EM>port</em>[<STRONG>,</STRONG><EM>host</EM><STRONG>:</STRONG><EM>port</em>...]</TD> -<TD><A name="-ORBpreconnect"></a>Pre-establishes a blocking connection to each listed -<em>host</em>:<em>port</em> combination. If a connection cannot -be established, a warning is announced and it continues with the -next listed. Listing the same combination multiple times will -properly establish multiple connections to that endpoint.</TD></TR> -<TR> -<TD><CODE>-ORBCDRtradeoff</CODE> <EM>maxsize</EM></TD> -<TD><A name="-ORBCDRtradeoff"></a>Control the strategy to tradeoff -between copy vs no copy marshalling of octet sequences. -If an octet sequence is smaller than <EM>maxsize</EM> and the current -message block contains enough space for it the octet sequence is -copied instead of appended to the CDR stream.</TD></TR> -</TABLE> -</P> -</blockquote> - -<H3><CODE>CORBA::POA</CODE><A NAME="POA"></A></H3> - -<blockquote> -<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0"> -<TR> -<TH>Option</TH> -<TH>Description</TH></TR> -<TR> -<TD><CODE>-OAid</CODE> <EM>OA Identifier</EM></TD> -<TD>Associates <I><EM>OA Identifier</EM></I> with the Object Adapter.</TD></TR> -</TABLE> -</P> -</blockquote> - -<H3><CODE>TAO_Resource_Factory</CODE><A NAME="ResourceFactory"></A></H3> - -<blockquote> -<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0"> -<TR> -<TH>Option</TH> -<TH>Description</TH></TR> -<TR> -<TD><CODE>-ORBresources</CODE> <EM>which</EM></TD> -<TD>Specify whether each thread uses a global -(<em>which</em> = <code>global</code>) or a thread-specific -(<em>which</em> = <code>tss</code>) instance for the resources it returns.</TD></TR> -<TR> -<TD><CODE>-ORBpoa</CODE> <EM>which</EM></TD> -<TD><a name="-ORBpoa"></a>Specify whether each thread uses a global -(<em>which</em> = <code>global</code>) or a thread-specific -(<em>which</em> = <code>tss</code>) instance for the Root POA.</TD></TR> -<TR> -<TD><CODE>-ORBcoltable</CODE> <EM>which</EM></TD> -<TD><a name="-ORBcoltable"></a>Specify whether each ORB uses a global -(<em>which</em> = <code>global</code>) or a per-ORB -(<em>which</em> = <code>orb</code>) collocation table.</TD></TR> -</TABLE> -</P> -</blockquote> - -<H3><CODE>TAO_Default_Server_Strategy_Factory</CODE><A NAME="DefaultServer"></A></H3> - -<blockquote> -<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0" > -<TR> -<TH>Option</TH> -<TH>Description</TH></TR> -<TR> -<TD><CODE>-ORBconcurrency</CODE> <EM>which</EM></TD> -<TD>Specify which concurrency strategy to use. Range of values is <code>reactive</code> -for a purely Reactor-driven concurrency strategy or -<code>thread-per-connection</code> for creating a new thread to service each connection.</TD></TR> -<TR> -<TD><CODE>-ORBtablesize</CODE> <EM>object table size</EM></TD> -<TD>Specify the size of the object table. If not specified, the default value -is 64.</TD></TR> -<TR> -<TD><CODE>-ORBdemuxstrategy</CODE> <EM>demultiplexing strategy</EM></TD> -<TD>Specify the demultiplexing lookup strategy. The <EM>demultiplexing strategy</EM> -can be one of <CODE>dynamic</CODE>, <CODE>linear</CODE>, <CODE>active</CODE>, -or <CODE>user</CODE>.</TD></TR> -<TR> -<TD><CODE>-ORBthreadflags</CODE> <EM>thread flags</EM></TD> -<TD>Specify the flags used for thread creation. Flags can be any logical-OR -combination of <CODE>THR_DETACHED</CODE>, <CODE>THR_BOUND</CODE>, <CODE>THR_NEW_LWP</CODE>, -<CODE>THE_SUSPENDED</CODE>.</TD></TR> -<TR> -<TD><CODE>-ORBpoalock</CODE> <EM>lock type</EM></TD> -<TD><a name="-ORBpoalock"></a>Specify the type of lock to be used for -POA accesses. Possible values for <em>lock type</em> are -<code>thread</code>, which specifies that an inter-thread mutex is -used to guarantee exclusive acccess, and <code>null</code>, which -specifies that no locking be performed. The default is -<code>null</code>.</TD></TR> -<TR> -<TD><CODE>-ORBcoltbllock</CODE> <EM>lock type</EM></TD> -<TD><a name="-ORBtoltbllock"></a>Specify the type of lock to be used for -the global collocation table. Possible values for <em>lock type</em> are -<code>thread</code>, which specifies that an inter-thread mutex is -used to guarantee exclusive acccess, and <code>null</code>, which -specifies that no locking be performed. The default is -<code>thread</code>.</TD></TR> -<TR> -<TD><CODE>-ORBpoamgrlock</CODE> <EM>lock type</EM></TD> -<TD><a name="-ORBpoamgrlock"></a>Specify the type of lock to be used for -POA Manager accesses. Possible values for <em>lock type</em> are -<code>thread</code>, which specifies that an inter-thread mutex is -used to guarantee exclusive acccess, and <code>null</code>, which -specifies that no locking be performed. The default is -<code>null</code>.</TD></TR> -</TABLE> -</P> -</blockquote> - -<H3><CODE>TAO_Default_Client_Strategy_Factory</CODE><A NAME="DefaultClient"></A></H3> - -<BLOCKQUOTE> - <P>There are currently no options for the <CODE>TAO_Default_Client_Strategy_Factory</CODE>.</P> -</BLOCKQUOTE> -</blockquote> - -<P><HR><P> -Back to the TAO <A HREF="components.html">components documentation</A>. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> -</HTML> diff --git a/TAO/docs/REFERENCES b/TAO/docs/REFERENCES deleted file mode 100644 index a44ef31c16e..00000000000 --- a/TAO/docs/REFERENCES +++ /dev/null @@ -1,91 +0,0 @@ -@(#)REFERENCES 1.2 95/11/08 - -REFERENCES -========== -Most of the relevant references here are to OMG documents, however there -are a few external references of some note: - - * http://www.uci.agh.edu.pl/research/cs/TOCOOS/COPERNICUS.html - - -OMG REFERENCES --------------- -As of this writing, OMG is in the process of publishing new versions of the -base CORBA specifications, merging specifications as needed into single -documents and splitting out the C mapping from the CORBA/CORE specification. - -This software has made every effort to track both the base documents and the -agreed corrections and revisions. Since those documents have not yet been -published, there will inevitably be areas in which it does not reflect the -versions yet to be published. See the "DIFFERENCES" file for information -about where this software differs from these current base documents: - -* CORBA 2.0/Interoperability: Universal Networked Objects (UNO), OMG - TC Document 95-3-10. This includes the mandatory IIOP and bridging - support, as well as the optional DCE-CIOP protocol. - -* CORBA 1.2 specification, OMG TC Document 93-12-43. This is the - base document on which the CORBA 2.0 CORE specifications build. - -* Universal Networked Objects (UNO), OMG TC Document 94-9-32. Until - the CORBA 2.0/CORE document is published, replacing the CORBA 1.2, - initialisation, and IFR specifications, you must use this earlier - version of UNO to see (only!) the specification for DSI and several - other CORBA CORE extensions (for bridging) adopted by the OMG. - [ NOTE: use the IIOP specification in 95-3-10, not the one here; - 95-3-10 has changes required by the IFR specification, 95-11-7. ] - -* Initialisation, OMG TC Document 94-10-24. This defines the portable - APIs for initialising ORBs. - -* Interface Repository, OMG TC Document 94-11-7. This updates the - CORBA specifications above and is referenced by the UNO document. - -* IDL C++ Language Mapping Specification, OMG TC Document 94-9-14. - This defines the mapping of CORBA 1.2, including OMG-IDL, onto C++. - -There are a few inconsistencies between these documents, which are in the -process of being resolved. The inconsistencies arose because different -groups worked on different parts of the system, at different times and -with some different goals. Contact the various revision committees to -find out how these differences are being resolved: - - - interop@omg.org ... the interop revision task force (RTF) - - cxx_revision@omg.org ... the C++ RTF - - orb_revision@omg.org ... the general ORB RTF - -Also, note that these ORB specifications correspond to only the lowest levels -of OMG's Object Management Architecture. In particular, the "Object Services" -define object interfaces for naming, events, persistence, relationships, -lifecycle, externalization, transactions, and concurrency control. Also, -"Common Facilities" objects will address such things as compound document -architecture. If you intend to develop software based on ORBs, these -specifications are likely to be of interest. The OMA is available in -technical bookstores: - - Richard Soley (ed.), Object Management Architecture Guide, - Second Edition, John Wiley & Sons, New York, 1992. - - -ACQUIRING REFERENCE DOCUMENTS ------------------------------ -To acquire those reference documents, use the OMG document server through -Internet email. Send a message to "server@omg.org", with content lines -such as - - send help - -to get directions about how to use the server, or - - send docs/95-3-10.ps - -to get a PostScript copy of any particular document. (OMG specifications -are available only in PostScript.) - -The OMG document server is maintained for use by OMG members, but is also -available for general Internet access. Only members will be supported in -the case of problems. - -To find out more about the OMG, send email to "omg@omg.org", or look -at the Web page at "http://www.omg.org". - diff --git a/TAO/docs/compiler.html b/TAO/docs/compiler.html deleted file mode 100644 index 61ae35b0fa2..00000000000 --- a/TAO/docs/compiler.html +++ /dev/null @@ -1,117 +0,0 @@ -<html> - <!-- $Id$ --> - <head> - <title>TAO IDL compiler User's Guide</title> - </head> - -<BODY text = "#000000" -link="#0000ff" -vlink="#cc0000" -bgcolor="#ffffff"> - - <body> -<HR><P> - <h3>TAO IDL compiler User's Guide</h3> - <H2>Scope</H2> - - <P> - This document describes the options and features of TAO IDL - compiler, - it is not a reference manual or tutorial on IDL. - </P> - - <H2>Generated Files</H2> - - <P> - The IDL compiler generates 6 files from each <CODE>.idl</CODE> - file, - the file names are obtained by taking the IDL basename and - appending - <CODE>C.h</CODE>, - <CODE>C.i</CODE>, - <CODE>C.cpp</CODE>, - <CODE>S.h</CODE>, - <CODE>S.i</CODE> - and <CODE>S.cpp</CODE>; - the client stubs are declared in the <CODE>C.h</CODE> file, - the skeletons in the <CODE>S.h</CODE> file. - </P> - - <P> - Both clients and servers should link against the object files - for the stubs and skeletons, - this is needed to transparently support collocated objects. - </P> - - <H2>Options</H2> - - <P> - The IDL compiler invokes your <CODE>C</CODE> - (or <CODE>C++</CODE>) preprocessor to resolve included IDL files, - it receives the common options for preprocessors - (such as <CODE>-D</CODE> or <CODE>-I</CODE>); - but also receives other options that are specific to it. - </P> - - <P> - <TABLE BORDER="2" - CELLSPACING="2" - CELLPADDING= "0"> - <TR> - <TH>Option</TH><TH>Description</TH></TR> - <TR NAME="V"> - <TD><CODE>-V</CODE></TD> - <TD>The compiler printouts its version and exits</TD></TR> - <TR NAME="Wb"> - <TD><CODE>-Wb,</CODE><EM>option_list</EM</TD> - <TD>Pass options to the backend.</TD></TR> - <TR NAME="export_macro"> - <TD></TD> - <TD><CODE>export_macro=</CODE><EM>macro_name</EM></TD> - <TD> - The compiler will emit - <EM>macro_name</EM> - right after each <CODE>class</CODE> or <CODE>extern</CODE> - keyword, - this is needed for Windows/NT that requires special - directives to export symbols from DLLs, - usually the definition is just a space on unix platforms. - </TD> - </TR> - <TR NAME="export_include"> - <TD></TD> - <TD><CODE>export_include=</CODE><EM>include_path</EM></TD> - <TD> - The compiler will generate code to include - <EM>include_path</EM> at the top of the client header, - this is usually a good place to define the export macro. - </TD> - </TR> - <TR NAME="E"> - <TD><CODE>-E</CODE></TD> - <TD>Only invoke the preprocessor</TD></TR> - <TR NAME="Wp"> - <TD><CODE>-Wp,</CODE><EM>option_list</EM</TD> - <TD>Pass options to the preprocessor.</TD> - <TR NAME="D"> - <TD><CODE>-D</CODE><EM>macro_definition</EM></TD> - <TD>It is passed to the preprocessor</TD></TR> - <TR NAME="U"> - <TD><CODE>-U</CODE><EM>macro_name</EM></TD> - <TD>It is passed to the preprocessor</TD></TR> - <TR NAME="I"> - <TD><CODE>-I</CODE><EM>include_path</EM></TD> - <TD>It is passed to the preprocessor</TD></TR> - <TR NAME="A"> - <TD><CODE>-A</CODE><EM>assertion</EM></TD> - <TD>It is passed to the preprocessor</TD></TR> - <TR NAME="Y"> - <TD><CODE>-Y</CODE></TD> - <TD>It is passed to the preprocessor</TD></TR> - </TABLE> - </P> - - <hr><P> - <address><a href="mailto:coryan@cs.wustl.edu">Carlos O'Ryan</a></address> - </body> -</html> diff --git a/TAO/docs/components.html b/TAO/docs/components.html deleted file mode 100644 index 9e782b2709a..00000000000 --- a/TAO/docs/components.html +++ /dev/null @@ -1,39 +0,0 @@ -<HTML> - <HEAD> - <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac"> - <TITLE>TAO Component Documentation</TITLE> - </HEAD> - -<BODY text = "#000000" -link="#000fff" -vlink="#ff0f0f" -bgcolor="#ffffff"> - -<HR> - <H3 ALIGN=CENTER>Component Documentation</H3> - - <P>The following documentation is available on certain TAO components:</P> - - <UL> - <LI><A HREF="Options.html">Options</A> ­ describes the - options available to customize various components within TAO. - These customizations can be done by an end-user and do not - require C++ programming.<P> - - <li><a href="configurations.html">Configuration</a> ­ - describes how to mix and match component <a - href="Options.html">options</a> to customize - how TAO processes requests. For example, this - document explains how to configure TAO to process - all request in one thread, each request in a separate thread, or each connection - in a separate thread, <em>etc.</em><P> - - </UL> - </BODY> - -<P><HR><P> -Back to the TAO <A HREF="index.html">documentation index</A>. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> - -</HTML> diff --git a/TAO/docs/configurations.html b/TAO/docs/configurations.html deleted file mode 100644 index fa1b2e68e2e..00000000000 --- a/TAO/docs/configurations.html +++ /dev/null @@ -1,301 +0,0 @@ -<HTML> - <HEAD> - <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac"> - <TITLE>Configuring TAO's Components</TITLE> - </HEAD> - -<BODY text = "#000000" -link="#000fff" -vlink="#ff0f0f" -bgcolor="#ffffff"> - - <H1 ALIGN=CENTER>Configuring TAO's Components</H1> - - <H2>Overview</H2> - <blockquote> - <p>As described in the <a href="Options.html">options</a> - documentation, various components in TAO can be "tuned" by specifying - options for those components. Here we present some examples of how to - combine these options to achieve certain effects on ORB operations.</P> - </blockquote> - - <H2>Where Are Options Specified?</H2> - <blockquote> - <p>TAO configures itself using the ACE Service Configurator - framework. Thus, options are specified in the familiar - <code>svc.conf</code> file (if you want to use a different file - name, use the <a - href="Options.html#svcfonf"><code>-ORBsvcconf</code></a> - option</p> - </blockquote> - - - <H2>Roadmap</H2> - - <blockquote> - <P>Details for the following configurations are provided.</P> - - <UL> - <LI><A HREF="#reactive">Single-threaded, reactive model.</A> - <LI><A HREF="#tpc">Multiple threads, thread-per-connection model.</A> - <LI><A HREF="#multiorb">Multiple threads, orb-per-thread model.</A> - <LI><A HREF="#multiorb-tpc">Multiple threads, orb-per-thread, - thread-per-connection model.</A> - <li><a href="#tpool">Multiple threads, thread-pool model.</a> - (Not yet implemented.) - <li><a href="#multiorb-tpool">Multiple threads, - orb-per-thread, thread-pool model.</a> (Not yet implemented.) - </UL> - - <p>Each configuration has the following information:</p> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <tr> - <tr> - <th>Typical Use</th> - <td>A brief description of the scenario and its typical use.</td> - </tr> - - <tr> - <th>Number Threads</th> - <td>The number of threads used by ORB-related activities.</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Identifies the creator of the threads discussed above.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Where information on various resources is stored.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>Describes what task is undertaken for each thread.</td> - </tr> - <tr> - <th>Options</th> - <td>Specifies the options for each service in order to utilize this configuration.</td> - </tr> - </table> - </p> - - </blockquote> - - <H2>Configurations</H2> - - <blockquote> - - <H3>Single-threaded, reactive model.<A NAME="reactive"></A></H3> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <th>Typical Use</th> - <td> - This is definitely the most common use of an ORB in a - server situation, where there is a single thread handling - requests from multiple clients. - </td> - </tr> - - <tr> - <th>Number Threads</th> - <td>1</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Operating System or whoever creates the main thread in a process.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Resources are stored process-wide.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>The single thread processes all connection requests and CORBA messages.</td> - </tr> - - <tr> - <th>Options</th> - <td> - <code>TAO_Resource_Manager</code>: <code>-ORBresources global</code><br> - <code>TAO_Server_Strategy_Factory</code>: <code>-ORBconcurrency reactive</code> - </td> - </tr> - </table> - </p> - - <H3>Multiple threads, thread-per-connection model.<A NAME="tpc"></A></H3> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <tr> - <th>Typical Use</th> - <td>A brief description of the scenario and its typical use.</td> - </tr> - - <tr> - <th>Number Threads</th> - <td>The number of threads used by ORB-related activities.</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Identifies the creator of the threads discussed above.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Where information on various resources is stored.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>Describes what task is undertaken for each thread.</td> - </tr> - </table> - </p> - - <H3>Multiple threads, orb-per-thread model.<A NAME="multiorb"></A></H3> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <tr> - <th>Typical Use</th> - <td>A brief description of the scenario and its typical use.</td> - </tr> - - <tr> - <th>Number Threads</th> - <td>The number of threads used by ORB-related activities.</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Identifies the creator of the threads discussed above.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Where information on various resources is stored.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>Describes what task is undertaken for each thread.</td> - </tr> - </table> - </p> - - <H3>Multiple threads, orb-per-thread, thread-per-connection - model.<A NAME="multiorb-tpc"></A></H3> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <tr> - <th>Typical Use</th> - <td>A brief description of the scenario and its typical use.</td> - </tr> - - <tr> - <th>Number Threads</th> - <td>The number of threads used by ORB-related activities.</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Identifies the creator of the threads discussed above.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Where information on various resources is stored.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>Describes what task is undertaken for each thread.</td> - </tr> - </table> - </p> - - <H3><A NAME="tpool">Multiple threads, thread-pool model.</A> - (Not yet implemented.)</H3> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <tr> - <th>Typical Use</th> - <td>A brief description of the scenario and its typical use.</td> - </tr> - - <tr> - <th>Number Threads</th> - <td>The number of threads used by ORB-related activities.</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Identifies the creator of the threads discussed above.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Where information on various resources is stored.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>Describes what task is undertaken for each thread.</td> - </tr> - </table> - </p> - - <H3>Multiple threads, orb-per-thread, thread-pool model.<A - NAME="multiorb-tpool"></A> (Not yet implemented.)</H3> - - <p> - <table border=2 width="90%" cellspacing="2" cellpadding="0"> - <tr> - <th>Typical Use</th> - <td>A brief description of the scenario and its typical use.</td> - </tr> - - <tr> - <th>Number Threads</th> - <td>The number of threads used by ORB-related activities.</td> - </tr> - - <tr> - <th>Thread Creator</th> - <td>Identifies the creator of the threads discussed above.</td> - </tr> - - <tr> - <th>Resource Location</th> - <td>Where information on various resources is stored.</td> - </tr> - - <tr> - <th>Thread task</th> - <td>Describes what task is undertaken for each thread.</td> - </tr> - </table> - </p> - - </blockquote> - -</blockquote> - -<P><HR><P> -Back to the TAO <A HREF="components.html">components documentation</A>. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> -</BODY> -</HTML> diff --git a/TAO/docs/forwarding.html b/TAO/docs/forwarding.html deleted file mode 100644 index d94c67254d5..00000000000 --- a/TAO/docs/forwarding.html +++ /dev/null @@ -1,85 +0,0 @@ -<html> - <!-- $Id$ --> - <head> - <title>Implementation of location forwarding</title> - </head> - - <BODY text = "#000000" - link="#0000ff" - vlink="#cc0000" - bgcolor="#ffffff"> - - <body> - <HR> - <h1>Location forwarding</h1> - <HR> - <h2>Context</h2> - The motivation to support location forwarding for objects is - to allow objects to move or forward certain requests to other objects. - Moving of objects is very important for the Common Object Services - LifeCycle Service. An objet complying to the LifeCycleObject interface, - defined by the LifeCycle Service should support the move operation. The move - operation allows the client to keep its object reference to the object, - but the object is going to be relocated on the same or a different server. - Making location forwarding transparent to the client is the most important - issue. - - <h2>Communication between server and client</h2> - GIOP defines a message named "LOCATION_FORWARD", which should be used to - inform the client stub, that the object has been moved. The message body - has to contain an object reference to the new location of the forwarded - object. - - - <h2>Server side implementation</h2> - Two approaches are possible, one is that the POA replaces the object with - a forwarding servant, which knows the new location. This servant will then - raise an exception each it time it is called, as supposed to be the - actual object. The exception will be a user exception and will be caught - in the marshalling code of the server request "IIOP_ServerRequest". The involved - methods are "set_exception", "marshall" and "init_reply". "set_exception" will - check the user exceptions for the special one, only raised by the forwarding - servant and will extract the new location. "init_reply" will then create - the proper GIOP Reply message with the message type set to LOCATION_FORWARD. - The message is encoded into a CDR (Common Data Representation) stream. - - The second approach is to use a POA servant locator for the child POA, where - the object resides on. The servant locator will be used each time the object - will be accessed. Basically two methods, named "preinvoke" and "postinvoke" - are called each time before and after the actual upcall to the object. - Forwarding using the servant locator works in the following way. The object - tells its servant locator that it has moved and supports the servant locator - with the new object reference. The object locator then raises a special system - exception "forward_request" in "preinvoke" each time the object is called from now on. - The exception is then caught by the lowest possible level, when the - system exceptions are going to be marshalled. Which is in "TAO_Server_Connection_Handler", - the involved methods are "handle_input" and "send_error". "handle_input" - checks for errors (involving exceptions) and calls "send_error" to create - the proper GIOP Reply containing either the system exception or - the location forwarding in case the system exception was the - "forward_request" exception. - - <h2>Client side implementation</h2> - The client has to expect the location forwarding GIOP message and should - respond to it in setting the IIOP_Profile of its IIOP_Object right. - The IIOP_Object is a low level object, to which CORBA::Object has a - pointer to. The reply type is determined by "TAO_GIOP_Invocation::invoke" - which then calls "TAO_GIOP_Invocation::location_forward". "location_forward" - sets the changes the IIOP_Profile of the object. The call is then - reissued by "TAO_IIOP_Object::do_static_call". - - - <h2>Conclusion</h2> - Changing the IIOP_Profile is transparent to the client. So the - client gets no idea, that the object now resides somewhere else. - - <HR> - For more details and questions, - <p> - - <address><a href="mailto:mk1@cs.wustl.edu">Michael Kircher</a></address> - <p> - <address><a href="mailto:irfan1@cs.wustl.edu">Irfan Pyarali</a></address> - </body> -</html> - diff --git a/TAO/docs/index.html b/TAO/docs/index.html deleted file mode 100644 index 5c8de5e7908..00000000000 --- a/TAO/docs/index.html +++ /dev/null @@ -1,49 +0,0 @@ -<HTML> -<HEAD> - <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac"> - <TITLE>TAO Documentation</TITLE> -</HEAD> - -<BODY text = "#000000" -link="#0000ff" -vlink="#cc0000" -bgcolor="#ffffff"> - -<HR> -<H3 ALIGN=CENTER>TAO Documentation</H3> - -<CENTER> -<TABLE cellpadding=10 cellspacing=8 border=10> - -<TD><FONT SIZE=+1> -<DL> - <DT><A HREF="http://www.cs.wustl.edu/~schmidt/corba-research-realtime.html">Technical Overview</A> <P> - <DT><A HREF="http://www.cs.wustl.edu/~schmidt/events_tutorial.html">Event Service Tutorial</A><P> - <DT><A HREF="http://www.cs.wustl.edu/~schmidt/TAO/index.html">TAO Viewgraphs</A><P> - -</DL> -<TD><FONT SIZE=+1> -<DL> - <DT><A HREF="components.html" TARGET="_top">Component Configuration</A><P> - <DT><A HREF="compiler.html" TARGET="_top">TAO IDL Compiler Options</A><P> - <DT><A HREF="orbsvcs.html" TARGET="_top">ORB services directories</A><P> - -</DL> -</FONT></TD> - -<TD><FONT SIZE=+1> -<DL> - <DT><A HREF="releasenotes/index.html">Release Notes</A><P> - <DT><A HREF="poa_migration.html" TARGET="_top">POA Migration Notes</A><P> - <DT><A HREF="reactivator.html" TARGET="_top">Reactivator service</A><P> -</DL> -</FONT></TD> -</TABLE> -</CENTER> - -<P><HR><P> -Back to the <A HREF="http://www.cs.wustl.edu/~schmidt/TAO.html">TAO</A> home page. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> -</BODY> -</HTML> diff --git a/TAO/docs/orbsvcs.html b/TAO/docs/orbsvcs.html deleted file mode 100644 index f16fcafd7b5..00000000000 --- a/TAO/docs/orbsvcs.html +++ /dev/null @@ -1,181 +0,0 @@ -<html> - <!-- $Id$ --> - <head> - <title>TAO's CORBA Object Services Documentation</title> - </head> - -<BODY text = "#000000" -link="#0000ff" -vlink="#cc0000" -bgcolor="#ffffff"> - - <body> -<HR> - <h3>TAO's CORBA Object Services Directory Hierarchy</h3> - - <P>The file and directory organization for TAO services can be - confusing at first glance (and even on subsequent ones to be - honest), - so we felt like some rationale and explanation of the directory - hierarchy was needed.</P> - - <P>For general sanity all TAO services files are located under - <CODE>$TAO_ROOT/orbsvcs</CODE>.</P> - - <P>It is expected that clients use more - than one service at the same time - (in fact some of the services already do, for instance the - <B>Event Service</B> uses the <B>Naming Service</B> and the - <B>Scheduling Service</B>). - For this reason all the services stubs are grouped in one - library. - This library is located in - <CODE>$TAO_ROOT/orbsvcs/orbsvcs</CODE>. - Usually the include path is only <CODE>$TAO_ROOT/orbsvcs</CODE>, - so files are included like this:</P> - -<P><CODE> -#include "orbsvcs/CosNamingC.h" -</CODE></P> - - <P>To simplify the IDL generation the skeletons are also on the - library, - this is not a problem for client programs and most services need - to link the library anyway - (since they use other services.) - Further, - the current support for collocation requires that clients link - the skeleton files anyway. - </P> - - <P>In the future we intend to use ACE Service Configurator to give - the users control over collocation of the services implementation. - As a first cut all the service implementations are included in the - orbsvcs library <CODE>$TAO_ROOT/orbsvcs/orbsvcs</CODE>. - Since there are serveral services and each one is implemented - using several files we have given a different directory to each - service. - This structure could also simplify a future split into several - libraries (if it proves necessary). - </P> - - <P>The complete list of directories is:</P> - - <P> - <TABLE BORDER="2" - CELLSPACING="2" - CELLPADDING= "0"> - <TR> - <TH>Service</TH> - <TH>Implementation Sub-directory</TH></TR> - <TR> - <TD>A/V Streams Service</TD><TD><CODE>orbsvcs/AV</CODE></TD></TR> - <TR> - <TD>Concurrency Service</TD><TD><CODE>orbsvcs/Concurrency</CODE></TD></TR> - <TR> - <TD>Event Service</TD><TD><CODE>orbsvcs/Event</CODE></TD></TR> - <TR> - <TD>LifeCycle Service</TD><TD><CODE>orbsvcs/LifeCycle</CODE></TD></TR> - <TR> - <TD>Logging Service</TD><TD><CODE>orbsvcs/Log</CODE></TD></TR> - <TR> - <TD>Naming Service</TD><TD><CODE>orbsvcs/Naming</CODE></TD></TR> - <TR> - <TD>Property Service</TD><TD><CODE>orbsvcs/Property</CODE></TD></TR> - <TR> - <TD>Scheduling Service</TD><TD><CODE>orbsvcs/Sched</CODE></TD></TR> - <TR> - <TD>Trading Service</TD><TD><CODE>orbsvcs/Trader</CODE></TD></TR> - </TABLE> - </P> - - <P>Note that in the current version of TAO we still have standalone - binaries for some of the services. However, some applications - may want to control what process implements a particular service. - Therefore, it has proved useful for - debugging purposes to keep the most used services separated. - The binaries in question are located in - <CODE>$TAO_ROOT/orbsvcs</CODE>, and the list includes: - </P> - - <UL> - <LI>Concurrenty_Service</LI> - <LI>Dump_Schedule</LI> - <LI>LifeCycle_Service</LI> - <LI>Event_Service</LI> - <LI>Naming_Service</LI> - <LI>Scheduling_Service</LI> - <LI>Trading_Service</LI> - </UL> - - <P>In the future we plan to use a single binary and ACE Service - Configurator and keep a single binary.</P> - - <P>Finally the tests and example programs are located in - <CODE>$TAO_ROOT/orbsvcs/tests</CODE>; - once more each may involves more than a single binary, - so each one is kept in its own directory; - the following list describes the contents of each one: - </P> - - <P> - <TABLE BORDER="2" - CELLSPACING="2" - CELLPADDING= "0"> - <TR> - <TH>Test directory</TH> - <TH>Purpose</TH></TR> - <TR> - <TD><CODE>AVStreams</CODE></TD> - <TD>A complete A/V server and client.</TD></TR> - <TR> - <TD><CODE>Concurrency</CODE></TD> - <TD>Test the Concurrency Service.</TD></TR> - <TR> - <TD><CODE>Event_Latency</CODE></TD> - <TD>Test the Event Service and measure end-to-end latency, - it also uses the Scheduling and Naming services.</TD></TR> - <TR> - <TD><CODE>EC_Multiple</CODE></TD> - <TD>Connect two Event Channels using the - <CODE>EC_Gateway</CODE>, - measure latency, utilization and minimum spacing.</TD></TR> - <TR> - <TD><CODE>Logger</CODE></TD> - <TD>An example logging service using the Naming Service to - locate a factory.</TD></TR> - <TR> - <TD><CODE>Naming</CODE></TD> - <TD>An advanced test of the Naming Service.</TD></TR> - <TR> - <TD><CODE>Property</CODE></TD> - <TD>Testing for the Property Service.</TD></TR> - <TR> - <TD><CODE>Sched</CODE></TD> - <TD>A test of the Scheduling Service.</TD></TR> - <TR> - <TD><CODE>Simple_Naming</CODE></TD> - <TD>A very simple Naming Service test.</TD></TR> - <TR> - <TD><CODE>Simulator</CODE></TD> - <TD>Prototype implementation of DOVE (DOVE Agent, DOVE - Browser, DOVE MIB, DOVE Application). The DOVE Agent - consists of the Event Channel, which is then connected to - a DOVE Browser implemented in Java.</TD></TR> - <TR> - <TD><CODE>Trading_Service</CODE></TD> - <TD>Implementation of the Trading Service.</TD></TR> - </TABLE> - </P> - - <H2>SEE ALSO</H2> - - <P>You may you to check TAO - <A HREF="releasenotes/index.html">release notes</A> - for up to date information on status, changes, future work, etc.</P> - - <hr> - - <address><a href="mailto:coryan@macarena.cs.wustl.edu">Carlos O'Ryan</a></address> - </body> -</html> diff --git a/TAO/docs/poa_migration.html b/TAO/docs/poa_migration.html deleted file mode 100644 index 5623a283698..00000000000 --- a/TAO/docs/poa_migration.html +++ /dev/null @@ -1,69 +0,0 @@ -<HTML> -<HEAD> - <META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac"> - <TITLE>Migrating from the BOA to the POA</TITLE> -</HEAD> - -<BODY text = "#000000" -link="#0000ff" -vlink="#cc0000" -bgcolor="#ffffff"> - -<HR><P> -<H3>Migrating from BOA to POA</H3> - -<UL> -<LI><EM><B>Client side</b></EM><P> -<ul> -<li>Very little has changed, and some have not needed any changes.</li><P> -<li>You'll have to insure that the Makefile includes .o's for both the server -and client; this is necessary to support collocation.</li> <P> -</ul> - -<LI><EM><B>Server side</B></EM><P> -<UL> -<li>POA_init() is replaced with resolve_initial_references("RootPOA") followed -by a _narrow operation.</li><P> -<li>The implementation no longer inherits from the client-side stub; they -inherit from PortableServer::ServantBase. The implications of this are (a) if -you want a object reference for that, you must use the _this() method.</li><P> -<li>Object ID's are assigned by the POA unless you activate the servant with a -specific ID; IDL_Cubit has examples on how to do this.</li><P> -<li>Unlike the BOA, the POA explicitly addresses the temporal nature of servants -and declares that a POA can service either transient or persistent servants -(not both). The root POA's (mandated, unchangeable) policy is "transient". -The implications of this are that in order for a client to be able to -manufacture an object reference on its own and use that to access an object, -the servant for that object must be registered with a POA whose policy is -"persistent". Thus, you must create a child POA with that policy and register -the servant with that POA. NOTE: when the POA declares something as -"persistent", it is only stating that the key is valid between different runs -of the server; it makes no claims that state or anything else is persistent.</li><P> - -<ul> - <li> Servants are not automatically activated, hence you must register - them by calling some of the activate_object* methods on a POA or - calling _this() on the servant; with the latest you have no control on - the ObjectId (which sometimes is good), and the POA must support the - right policies (the RootPOA does).</li><P> - - <li>Servant constructors use to take a <const char*> parameter to set - they object id, this is not needed now, in fact in many cases they use - to pass this argument to the skeleton class: this will fail now.</li><P> -</ul> -This list is not intended to be exhaustive, but should give you a good -starting point. If you find things along the way which have to change and I -didn't note them, please send them to me. Perhaps we can work together on the -ultimate migration document. <P> -</UL> -</UL> - -<hr><P> - -Back to the <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/docs/index.html">TAO -documentation</A> page. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> -</BODY> -</html> diff --git a/TAO/docs/reactivator.html b/TAO/docs/reactivator.html deleted file mode 100644 index 71ab9c5d64d..00000000000 --- a/TAO/docs/reactivator.html +++ /dev/null @@ -1,358 +0,0 @@ -<html> - -<head> -<title> -TAO Reactivation Service -</title> -</head> - -<BODY text = "#000000" -link="#0000ff" -vlink="#cc0000" -bgcolor="#ffffff"> - -<hr> -<h3> -TAO Reactivation Service -</h3> - -This document describes the proposed design of the TAO reactivator. -If you have any comments or suggestions for improvement, please let <A -HREF="mailto:schmidt@cs.wustl.edu">me</A> know. <P> - -<hr> - -<h3> -Goals of the Reactivation Service -</h3> - -The Reactivation Service will add support to TAO's architecture so -that servers using Persistent Object References (defined in the -Portable Object Adapter (POA) specification) can be restarted. This -service will allow servers to come and go without invalidating the -Persistent Object References that they use. - -<h3> -Constraints when using the Reactivation Service -</h3> - -<ul> - -<li> - -When a server is restarted by the Reactivation Service, it must be -able to recreate enough state to deal correctly with the request -issued by a client on the Persistent Object Reference. Therefore, the -restarted server's endpoint must be the same endpoint specified in the -Persistent Object Reference. Unless dynamic servant and POA activation -is used, the restarted server must also recreate the POA in which the -Persistent object was registered and register the persistent object -with that POA. - -<li> - -The Reactivation Service will track all processes it has restarted. It -will ensure that multiple instances of same server processes are not -started simultaneously. - -<li> -The use of the Reactivation Service in TAO will be optional. Real-time -applications can choose not to use the Reactivation Service. - -</ul> - -<h3> -Alternate Implementations -</h3> - - -Other ORB vendors use alternative techniques for Activation / -Reactivation Services. These techniques usually require new naming -techniques for persistent objects and new client-side APIs to bind to -persistent objects. TAO's Reactivation Service will not require such -extensions. -<p> - -One implementation of an Activation / Reactivation Service is to use -an Object Reference that points to the Activation Service instead of -pointing directly to the persistent object. This extra level of -indirection is used by the Activation Service to start the server, and -then use the Location Forwarding mechanism to forward the client -request to the server. This technique forces clients to use the -Activation Service (at least once) even when the server is already -running. -<p> - -<h3> -Design Constraints of the Reactivation Service -</h3> - -This design makes TAO dependent on the Reactivation Service. -<p> - -<hr> -<h2> -Implementation -</h2> - -Here is a preliminary interface of the Reactivation Service in IDL: - -<code><pre> -module TAO -{ - // .... - - exception Already_Registered {}; - // Object already bound in the Reactivator - - exception Object_Not_Persistent {}; - // Object is not persistent - - exception Not_Found {}; - // Object not found in the Reactivator - - struct Environment_Variable - { - string name_; - string value_; - }; - // One environment variable - - typedef sequence<Environment_Variable> Environment; - // Complete environment - - typedef sequence<string> Command_Line_Options; - // Command line options - - struct Process_Options - { - string executable_name_; - // Executable name - - Command_Line_Options command_line_options_; - // Command line options - - Environment environment_; - // Environment - - string working_directory_; - // Working directory - - unsigned long creation_flags_; - // Creation flags - }; - - interface Reactivator - { - boolean reactivate_object (in Object obj) - raises (Not_Found); - // Restart server that will contain this persistent object - // - // The <Not_Found> exception is raised when <obj> is not found - // in the Reactivation Service. - - void register_object (in Object obj, - in Process_Options options) - raises (Already_Registered, - Object_Not_Persistent); - // Restart server process when client is looking for <obj>. - // - // The <Already_Registered> exception is raised when <obj> has - // already been registered with the Reactivation Service. - // - // The <Object_Not_Persistent> exception is raised when <obj> is - // not a Persistent Object Reference. - - enum Host_Port_Options - { - NONE, - HOST, - PORT, - HOST_AND_PORT - }; - // NONE: Use no information from the Object Reference - // - // HOST: Use the host information taken from the Object - // Reference (-ORBhost) - // - // PORT: Use the port information taken from the Object - // Reference (-ORBport) - // - // HOST_AND_PORT: Use both the host and port information from - // the Object Reference (-ORBport) and (-ORBhost) - - void register_object_using_info_in_ior (in Object obj, - in Process_Options options, - in Host_Port_Options host_port_options) - raises (Already_Registered, - Object_Not_Persistent); - // Restart server process <executable_name> when client is - // looking for <obj>. Depending on the <host_port_options>, - // information from the <obj> object reference is used to - // specify (-ORBport) and (-ORBhost) options for the server. - - void reregister_object (in Object obj, - in Process_Options options) - raises (Not_Found, - Object_Not_Persistent); - - void reregister_object_using_info_in_ior (in Object obj, - in Process_Options options, - in Host_Port_Options host_port_options) - raises (Not_Found, - Object_Not_Persistent); - // The above reregister methods are similar to the register - // methods except they are used for rebinding. - - void remove_object (in Object obj) - raises (Not_Found); - // Remove <obj> from the Reactivation Service. - // - // The <Not_Found> exception is raised when <obj> is not found - // in the Reactivation Service. - }; -}; -</pre></code> - -<hr> -<h2> -Accessing the Reactivation Service -</h2> - -Servers can use either of the following techniques to get access to -the Reactivation Service. Remember that the Reactivation Service will -be transparent to the clients. - -<ul> - -<li> -Use ORB::resolve_initial_reference ("TAO Reactivation Service") -<br> - -This works like the bootstrapping mechanism to obtain the Naming -Service. This method will return the reference to a Reactivation -Service. -<p> - -<li> -Use a Helper Application -<br> -A helper application will be part of the Reactivation Service. It -will be a command-line utility that will assist users with adding and -removing Persistent Object References from the Reactivation Service. -<p> - -</ul> - -<h3> -Locating an instance of Reactivation Service -</h3> - -<h4> -Server side -</h4> - -The Reactivation Service will be located on the same host as the -server. If not, host information can be specified through command -line options or environment variables. The default port of the -Reactivation Service can be overwriting through command line options -or environment variables. - -<h4> -Client side -</h4> - -The correct Reactivation Service will be located by multicasting (on a -default multicast group) the Persistent Object Reference the client is -interested in. The default multicast group can be overwriting through -command line options or environment variables. If multicasting is not -preferred, the location of a the Reactivation Service will be assumed -to be the same as the Persistent Object. The default port of the -Reactivation Service can be overwriting through command line options -or environment variables. - -<hr> -<h2> -Reactivation algorithm used on the Client Side -</h2> - -<ul> - -<li> -Client obtains an Object Reference - -<li> -Then it makes a request on the Object Reference. If the IOR has -multiple Object References, then it will try all of the Object -References until one succeeds - -<li> - -If all of the Object References fail, then for each Object Reference -in the IOR, the following steps will be taken to reactivate the -server - -<li> -The ORB examines the Object Reference - -<li> -If it is a Transient Object Reference, then the call fails - -<li> -If multicast is available: - -<ul> - -<li> -Multicast the Object Reference to a group of Reactivation Services - -<li> -Wait until response or a timeout. The response will contain the -Object Reference of a Reactivation Service that knows about the Object -Reference - -<p> -</ul> - -<li> -If no multicast: - -<ul> - -<li> -Extract the host from the Persistent Object Reference - -<li> -Manufacture an Object Reference for the Reactivation Service - -<p> -</ul> - -<li> -Now connect to the Reactivation Service - -<li> -Call <i>reactivate ()</i> passing the Persistent Object Reference - -<li> -Reactivation service sends back a yes / no response - -<li> -If "yes", retry the request using the Persistent Object Reference -again. If request fails, then fail (no more retries) - -<li> -If "no", then fail - -</ul> - -<hr><P> - -Back to the <A -HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/docs/index.html">TAO -documentation</A> page. - -<!--#include virtual="/~schmidt/cgi-sig.html" --> -</BODY> -</html> - diff --git a/TAO/docs/releasenotes.html b/TAO/docs/releasenotes.html deleted file mode 100644 index 21854918af1..00000000000 --- a/TAO/docs/releasenotes.html +++ /dev/null @@ -1,26 +0,0 @@ -<HTML> -<HEAD> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> - <META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (X11; I; Linux 2.0.30_SMP i686) [Netscape]"> - <META HTTP-EQUIV="Refresh" CONTENT="1;URL=releasenotes/index.html"> - <TITLE>TAO Release Information and TODO List</TITLE> -</HEAD> -<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#000FFF" VLINK="#FF0F0F"> -<!-- $Id$ --> -<CENTER> -<H2> -Release Information for The ACE ORB (TAO)</H2></CENTER> - -<CENTER> -<H3> -Version 0.0.12</H3></CENTER> - -<CENTER> -<H3> -17-October-1997</H3></CENTER> - -<HR> - -This document has moved <a href="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/docs/releasenotes/index.html">here</a>. - -</HTML> diff --git a/TAO/docs/releasenotes/ec.html b/TAO/docs/releasenotes/ec.html deleted file mode 100644 index de0f72af5fe..00000000000 --- a/TAO/docs/releasenotes/ec.html +++ /dev/null @@ -1,182 +0,0 @@ -<!-- $Id$ --> - -<HTML> - <HEAD> - <TITLE>Event Service Status</TITLE> - </HEAD> - -<BODY TEXT="#000000" BGCOLOR="#FFFFFF"> - <BODY> - <H3>Event Service Status</H3> - Point of contact: <A HREF="mailto:coryan@cs.wustl.edu">Carlos O'Ryan</A> - - <H4>Last Updated: $Date$ </H4> - - <H3>New on this release</H3> - - <UL> - <LI>The <CODE>Gateway</CODE> to connect two event channels was - moved from a test to the library. - The corresponding test (<CODE>EC_Multiple</CODE>) has been - expanded and improved.</LI> - </UL> - - <H3>Known issues:</H3> - <DL> - <DT><EM>The schedule cannot be downloaded</EM></DT> - <DD> - The Scheduling Service seems to compute proper schedules, - but it is not possible to download them, - apparently there is a marshalling problem for sequences of - complex structures. - - <P>Due to this problem we have been unable to test the - run-time scheduler and performance it is impossible to - complete performance measurements and optimizations: - the (global) scheduling service latency and overhead is at - least as large as the EC itself.</P> - </DD> - - <DT><EM>Run-time scheduler requires re-link</EM></DT> - <DD> - During a normal execution of the system - there is no - need to use the a global Real-time Scheduling Service, - a faster, - collocated implementation for the service is available. - Obviously the scheduling information is precomputed in some - config run. - - <P>Unfortunately the current scheme requires a relink of all the - involved applications against the generated tables for the - run-time scheduling service.</P> - - <P>We should be able to download the schedule to the interested - parties, - without need for a separate link phase. - This will simplify and speed up the developing cycle, - but requires a (small and fixed) amount of dynamic memory - allocation. - It could be interesting to "save" the schedule computation in - some persistent form, - so startup cost are lower too.</P> - - <P>The current design contemplates a config run were a global - consumer accumulates the QoS requirements of all the objects, - next an external utility is used to force a computation and - save of the schedule. - In future executions - the global scheduler pre-loads this schedule and - the clients simply download the precomputed schedule, - and all scheduling queries are to a local scheduling service, - without any further contact to the global instance.</P> - </DD> - - <DT><EM>Users have no control over service - collocations</EM></DT> - <DD> - The user should have complete control of services collocation, - using ACE Service Configurator; - currently the services must be explicitly instantiated by the - user. - </DD> - - </DL> - - <H3>Examples</H3> - - <P>For general documentation on the Event Service please read - <A HREF="http://www.cs.wustl.edu/~schmidt/oopsla.ps.gz"> - The Design and Performance of a Real-time CORBA Event - Service</A>. - - <P>The simplest test for the Event Channel is - <CODE>Event_Latency</CODE>, - below are the basic instructions to run it:</P> - - <OL> - <LI> Compile everything under <CODE>$TAO_ROOT/orbsvcs</CODE>, this - needs, obviously, <CODE>$TAO_ROOT/tao</CODE> and - the IDL compiler in <CODE>$TAO_ROOT/TAO_IDL</CODE>.</LI> - - <LI><P>Run the naming service, the scheduling service, the event service - and the test in - <CODE>$TAO_ROOT/TAO/orbsvcs/tests/Event_Latency</CODE>; - remember to give a different port to each one, - using the <CODE>-ORBport</CODE> option. As in:</P> - - <CODE> - <P> - $ cd $TAO_ROOT/orbsvcs - </P> - <P> -$ cd Naming_Service ; ./Naming_Service -ORBport 10000 & - </P> - <P> -$ cd Scheduling_Service ; ./Scheduling_Service -ORBport 10010 & - </P> - <P> -$ cd Event_Service ; ./Event_Service -ORBport 10020 & - </P> - <P> -$ cd tests/Event_Latency ; ./Event_Latency -ORBport 10030 -m 20 & - </P> - </CODE> - - You may want to run each program in a separate window. - </LI> - - <LI> If you want real-time behavior on Solaris you may need to run - these programs as root; on the other hand, this particular - example really has no priority inversion, since only one - thread runs at a time.</LI> - </OL> - - <P>Another example is <CODE>EC_Multiple</CODE>, - numerous examples on how to run this test can be found in the - scripts located in - <CODE>$TAO_ROOT/orbsvcs/tests/EC_Multiple</CODE>.</P> - - <H3>Features in previous releases</H3> - - <UL> - <LI> - <P> - When several suppliers are consumers are distributed over the - network it could be nice to exploit locality and have a - separate Event Channel on each process (or host). - Only when an event is required by some remote consumer we need - to send it through the network. </P> - - <P> - The basic architecture to achieve this seems very simple, - each Event Channel has a proxy that connects to the EC peers, - providing a "merge" of its (local) consumer subscriptions as - its own subscription list. </P> - - <P> - Locally the proxy connects as a supplier, - publishing all the events it has register for. </P> - - <P> - To avoid event looping the events carry a time-to-live field - that is decremented each time the event goes through a proxy, - when the TTL gets to zero the event is not propagated by the - proxy. </P> - - <P> - In the current release an experimental implementation is - provided, - it basically hardcodes all the subscriptions and publications, - we are researching on how to automatically build the - publication list.</P> - </LI> - - <LI> <P> - We use the COS Time Service types (not the services) to - specify time for the Event Service and Scheduling Service.</P> - </LI> - </UL> - - </BODY> -</HTML> diff --git a/TAO/docs/releasenotes/index.html b/TAO/docs/releasenotes/index.html deleted file mode 100644 index df9a232eba0..00000000000 --- a/TAO/docs/releasenotes/index.html +++ /dev/null @@ -1,607 +0,0 @@ -<HTML> -<HEAD> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> - <META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (X11; I; SunOS 5.5.1 sun4u) [Netscape]"> - <TITLE>TAO Release Information and TODO List</TITLE> -</HEAD> -<BODY TEXT="#000000" BGCOLOR="#FFFFFF"> -<!-- $Id$ --> -<CENTER> -<HR></CENTER> - -<CENTER> -<H3> -Release Information for The ACE ORB (TAO)</H3></CENTER> -Information is available on the following topics related to the <A HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/VERSION">current -release</A> of <A HREF="http://www.cs.wustl.edu/~schmidt/TAO.html">TAO</A>: -<UL> -<LI> -<A HREF="orbcore.html">ORB Core</A></LI> - -<LI> -<A HREF="#idl">IDL Compiler</A></LI> - -<LI> -<A HREF="#poa">Portable Object Adapter</A></LI> - -<LI> -<A HREF="#nservices">CORBA Naming Service</A></LI> - -<LI> -<A HREF="ec.html">CORBA Event Service</A></LI> - -<LI> -<A HREF="#tservices">CORBA Trader Service</A></LI> - -<LI> -<A HREF="#pservices">CORBA Property Service</A></LI> - -<LI> -<A HREF="#cservices">CORBA Concurrency Control Service</A></LI> - -<LI> -<A HREF="#av">CORBA Audio/Video Control Service</A></LI> - -<LI> -<A HREF="#apps">Test & Example Applications</A></LI> - -<LI> -<A HREF="#ace">ORB-related ACE Changes</A></LI> - -<LI> -<A HREF="#dove">The DOVE Demo</A></LI> - -<LI> -<A HREF="#forwarding">Location forwarding</A></LI> - -</UL> - -A complete list of all modifications to TAO is available in the <A HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/ChangeLog">ChangeLog</a>.<P> - -<HR> -<!--#include virtual="orbcore.html" --> -<HR> -<H3> -<A NAME="idl"></A>IDL Compiler</H3> -Point of contact: <A HREF="mailto:gokhale@cs.wustl.edu">Aniruddha Gokhale</A> - -<P>Current status: (As of June 11th, 1998.) -<UL> -<LI> -Added support for Arrays. Right now, support for typedefed arrays is -in. Still needs testing. -</LI> -<LI> -Added support for TIE classes. If the interfaces are defined inside -modules, then the TIE class and its code gets generated inside a -conditional macro. For platforms that support namespaces, this macro -will allow these TIE classes else they get commented out. The reason -to do this is because nested templates have problems on most compilers. -</LI> - -<LI> -The <<= and >>= operators for user-defined types are now generated.</LI> - -<LI> -Completely redesigned the IDL compiler using the Visitor patterns. Many -incomplete issues have been resolved. These include support for "sequence -of typecodes", passing object references as in, inout, and out parameters. -Code generation for sequences is also properly handled i.e., for a named -sequence such as "typedef sequence <char>CharSeq;", we now generate -a new class (and hence a type) called "class CharSeq". Arrays are still -being worked out and will be done soon. An important difference in the -generated code is that the skeletons now use a table driven approach very -similar to the stubs.</LI> - -<LI> -Support for the "native" keyword added.</LI> - -<LI> -Introduced tests for object references to TAO. Still incomplete.</LI> - -<LI> -Param_Test example is able to test string sequences, fixed structs, variable -sized structs and nested structs</LI> - -<LI> -Param_Test test suite can now test fixed structs and string sequences.This -needed bug fixes to TAO ORB core.</LI> - -<LI> -A new test to test all the parameter passing modes for a number of data -types has been added. At this point in time, it tests primitive types and -strings. Other tests will be added. Bugs discovered thru these tests have -been fixed.</LI> - -<LI> -Very preliminary support for arrays. Not working yet.</LI> - -<LI> -Many bugs associated with stub generation fixed. This included support -for return values that are variable sized IDL types. Unions improved.</LI> - -<LI> -Support for sequences of strings and object references added. However, -it is not tested yet so there may be some bugs. We should have these fixed -in a day or so.</LI> - -<LI> -Support for handling exceptions added. TAO does not use direct C++ exceptions. -Instead it uses the CORBA::Environment based approach.</LI> - -<LI> -Sequences as out parameters have been tested in the IDL_Cubit example. -A test suite is currently being built to test all the parameter passing -modes on a variety of IDL data types.</LI> - -<LI> -Support for attributes completed. Not tested yet.</LI> - -<LI> -The problem of incorrect code generation for typedefs defined in an imported -file is resolved.</LI> - -<LI> -Problems when interfaces use single or multiple inheritance solved. The -problem was with the demultiplexing code, the generated operation tables, -and the dispatching mechanism. We are currently testing this with the Event -Channel code.</LI> - -<LI> -The problems arising due to public virtual inheritance when casting from -an interface class to CORBA::Object_ptr has been solved. We do this casting -inside the stubs/skeletons rather than first converting an interface class -pointer to a void*, storing it in an Any, and casting it to CORBA::Object_ptr -in the encode/decode methods. The casting inside the stubs/skeletons work -because the compiler has knowledge of both types.</LI> - -<LI> -The compiler generates correct code for COSS Naming service and it runs -properly. Correct code also gets generated for the Event Channel program</LI> - -<LI> -Include files are handled properly. So are the definitions used inside -the include files that are used in the currently parsed files.</LI> - -<LI> -IN, INOUT, and OUT object reference parameters are now supported properly. -We think the same approach should work for sequences, structs, and unions.</LI> - -<LI> -Many IDL constructs supported including primitive types, typedefs, sequences, -structures, and unions.</LI> - -<LI> -Generates C++ stubs and skeletons that use TAO's <A HREF="http://www.cs.wustl.edu/~schmidt/HICSS-97.ps.gz">interpretive -IIOP protocol engine</A>.</LI> - -<LI> -Generated code closely follows the C++ Mapping specified in the POA Specification -(ORBOS/97-05-15).</LI> - -<LI> -Support dynamic libraries on NT, i.e., marking classes for DLL export was -added. Two backend options control the name of the export macro, and the -name of an extra include file were the macro is defined; the options are -<TT>-Wp,export_macro=MACRO_NAME</TT> <TT>-Wp,export_include=INCLUDE_NAME</TT>.</LI> -</UL> -Known bugs/unimplemented constructs: -<UL> -<LI> -Generation of Managed types must somehow be moved to the ORB Core</LI> - -<LI> -We need support for ``TIEs'' (i.e., the object form of the Adapter pattern).</LI> - -<LI> -TypeCode generation for multidimensional arrays and indirected typecodes -is still a problem.</LI> - -<LI> -Unions with default cases yet to be handled</LI> - -<LI> -Deal with names in the IDL definition that are C++ keywords.</LI> - -<LI> -IDL is case-insensitive. However, it looks like our front-end is case-sensitive. -Thanks to Anil Gopinath (anil@ittc.ukans.edu) for pointing this out.</LI> - -<LI> -tao_idl generates code for a *.idl file only inside the directory where -the *.idl resides. However, it may be required to generate code elsewhere -i.e., in the directory where the compiler was invoked. Thanks to Tom Richards -(tomr@MCMEnterprise.com) for this suggestion.</LI> -</UL> -Future work: -<UL> -<LI> -Need to relocate the various libraries used by the IDL compiler out of -the ACE directory. Having them here can cause problems when working with -multiple versions of TAO and a single version of ACE.</LI> - -<LI> -Improve IDL compiler to generate compiled form of stubs/skeletons.</LI> - -<LI> -Fix bugs in the SunSoft IDL front-end we've uncovered. These primarily -include support for Unions.</LI> - -<LI> -Add command line options to TAO IDL. These options will decide what strategy -to use for operation name demultiplexing. Another option may decide whether -to use the interpretive IIOP engine or generate compiled stubs/skeletons.</LI> - -<LI> -Use <A HREF="http://www.cs.utah.edu/projects/flux/flick/">Flick</A> (from -the University of Utah) to generate compiled stubs.</LI> - - -<P>Goal is to measure the code size of the interpretive stubs generated -by TAO IDL compiler <I>vs</I> code size of compiled stubs. Then compare -the performance of each. We want to prove the thesis that TAO IDL compiler -generated interpretive stubs have a small code size, yet are comparable -in performance (or slightly less) than compiled stubs. Hence, it will be -useful for small distributed equipment such as handsets, PDAs, etc. - -<P>In doing the above, improvements to the IIOP protocol engine in terms -of size/performance/determinism will be made. -<LI> -Tweak the IDL compiler to generate code that's more easily integrated back -into the ORB Core, e.g., POA, etc. This will depend largely on our ability -to generalize the changes necessary to generated code.</LI><P> -</UL> - -<HR> -<H3> -<A NAME="poa"></A>Portable Object Adapter</H3> -Point of contact: <A HREF="mailto:irfan@cs.wustl.edu">Irfan Pyarali</A> - -<P>Current Status: -<UL> -<LI> -TAO fully supports the POA spec. This section will carry updates as available.</LI> -</UL> -Known issues: -<DL> -<DT> -<I>Support for collocation is not complete.</I></DT> - -<DD> -If an object which should be collocated is created via <TT>string_to_object</TT>, -it is created as a remote object rather than collocated.</DD> -</DL> -Critical work: -<UL> -<LI> -None.</LI> -</UL> -Future work: -<UL> -<LI> -Determine the degree to which we will support the full semantics of remote -objects on a collocated object. The spec mandates that collocated object -should behave <I>exactly</I> like remote objects, but that means that request -will have to be queued rather than calling a method directly, and this -could be hazardous to our quest for real-time ORB status.</LI> - -<LI> -Provide extensions of the specification to ensure real-time delivery of -messages.</LI> -</UL> - -<HR><!--#include virtual="ec.html" --> -<HR> -<H3> -<A NAME="nservices"></A>CORBA Naming Service</H3> -Point of contact: <A HREF="mailto:sergio@cs.wustl.edu">Sergio Flores-Gaitan</A> -and <A HREF="mailto:marina@cs.wustl.edu">Marina Spivak</A> - -<P>Current status (as of Feb 27th): -<UL> -<LI> -The Naming Service implementation is complete.</LI> -</UL> -Future work: -<UL> -<LI> -Currently the bindings are stored as a table in memory. Future work will -include a persistent database to store the bindings.</LI> - -<LI> -Replication of the bindings to other Naming Service's currently running. -It will probably be modeled after the LDAP Multi-Master Replication Protocol. -For more information on this replication protocol please read <A HREF="ftp://ds.internic.net/internet-drafts/draft-ietf-asid-ldap-mult-mast-rep-02.txt">LDAP -Multi-Master Replication Protocol</A></LI> -</UL> -For general documentation on the Naming Service please read <A HREF="ftp://www.omg.org/pub/docs/formal/97-07-12.pdf">The -Naming Service Specification</A>. - -<P> -<HR> -<H3> -<A NAME="tservices"></A>CORBA Trading Service</H3> -Point of contact: <A HREF="mailto:sbw1@cs.wustl.edu">Seth Widoff</A> - -<P>Development is complete, and testing and debugging have commenced on -the TAO Trading Service. Currently, it meets the Linked Trader conformance -requirements, in that it supports the Lookup, Register, Admin, and Link -interfaces. The Lookup interface supports subtype searching, preference -sorting, dynamic property evaluation, federated queries, and concurrent -queries as a multi-threaded servant. - -<P>The Trading Service uses the Object Space implementation of the Standard -Template Library. - -<P>Future Work: -<UL> -<LI> -The Proxy Interface.</LI> - -<LI> -Persistent storage of service types and offers.</LI> -</UL> -For general documentation of the Trading Service, please read <A HREF="http://www.omg.org/corba/sectrans.htm#trader">The -Trading Service Specification.</A> - -<P> -<HR> -<H3> -<A NAME="pservices"></A>CORBA Property Service</H3> -Point of contact: <A HREF="mailto:alex@cs.wustl.edu">Alexander Babu Arulanthu</A> - -<P>Current status (as of May 02, 1998) -<BR> -<BR>All the interfaces of this service have been implemented. Please -go through the test examples at $TAO/orbsvcs/tests/CosPropertyService. -Property Service is now used by the AVStreams that is currently being -developed for TAO. More testing is being done. - -<P>For general documentation of the Property Service, please read <A HREF="http://www.omg.org/corba/sectrans.htm#prop">The -Property Service Specification.</A> - -<P> -<HR> -<H3> -<A NAME="cservices"></A>CORBA Concurrency Control Service</H3> -Point of contact: <A HREF="mailto:tworm@cs.wustl.edu">Torben Worm</A> - -<P>Current status (as of May 3rd): -<UL> -<LI> -A simple version of the concurrency service has been implemented, -i.e. a version without transactions. It is currently being -tested.</LI> -</UL> -Future Work: -<UL> -<LI> -Implementation of the Concurrency Control Service with transactions</LI> -</UL> -For general documentation of the Concurrency Control Service, please read -<A HREF="http://www.omg.org/corba/sectrans.htm#concur">The Concurrency -Control Service Specification.</A> - -<P> -<HR> -<H3> -<A NAME="av"></A>CORBA Audio/Video Control Service</H3> -Point of contact: <A HREF="mailto:sumedh@cs.wustl.edu">Sumedh Mungee</A> -and <A HREF="mailto:naga@cs.wustl.edu">Nagarajan Surendran</A> - -<P>This is an implementation of the OMG spec addressing the <A HREF="http://www.cs.wustl.edu/~sumedh/research/corbaav.pdf">Control -and Management of Audio/Video Streams</A>. - -<P>We are currently implementing the various interfaces defined in the -above spec. We are also working on building a audio/video streaming demo -that will use the above service as the control mechanism and JAWS as an -efficient transport and protocol processing framework. - -<P>Current Status: -<UL> -<LI> -Implemented the handshake mechanism between the consumer and supplier of -the stream.</LI> - -<LI> -Implemented a simple version of the stream controller (StreamCtrl).</LI> - -<LI> -Implemented the VDev and StreamEndPoint base class functionality.</LI> - -<LI> -Implemented the MMDevice interface, which is a factory for StreamEndPoint -and VDev objects.</LI> -</UL> -Work in progress: -<UL> -<LI> -Implementing the SFP protocol</LI> - -<LI> -Porting the distributed audio/video player developed at <A HREF="http://www.cse.ogi.edu/~scen/Player">OGI</A> -to ACE (and in the future to JAWS)</LI> - -<LI> -Implementing the CORBA Stream controller for the above audio/video player</LI> -</UL> - -<HR> -<H3> -<A NAME="apps"></A>Test & Example Applications</H3> -Point of contact: <A HREF="mailto:naga@cs.wustl.edu">Nagarajan Surendran</A> - -<P>Current Status: - -<P>The TAO IDL_Cubit test application makes use of the Naming Service and -the server holds a TAO_Naming_Server component.Just running server and -client is enough to test the application. - -<P>The various tests in the tests/POA test the different features of the -Portable Object Adapter interface like Explicit Activation, On Demand Activation,etc.. - -<P>Future work: - -<P>Developing a one-buttoned test for all the different TAO tests similar -to the ACE-one buttoned test. - -<P>MT_Cubit: - -<P>Current status: - -<P>The TAO MT_Cubit test application is meant to serve as a starting point -for real-time tests on the TAO system. It comprises the following parts: -<UL> -<LI> -<I>Server.</I> The server creates multiple CORBA objects (servants), each -with different real-time priorities. This priority is implemented by using -real-time thread support provided by the operating system. Thus, requests -sent to a high-priority servant are handled by a high-priority real-time -thread, and those sent to a lower priority servant are handled by correspondingly -lower priority threads.</LI> - -<LI> -<I>Client.</I> The client component binds to the servants, and sends a -stream of CORBA requests to the servants. It measures the response time, -i.e. the time taken for the request to complete successfully. In particular, -it measures the time taken for requests sent to the high priority servant -to complete. The volume of lower priority requests is configurable. The -client is thus able to measure the performance of the high-priority servant -in the presence of competition from several lower-priority servants.</LI> -</UL> -Clearly, if the ORB endsystem handles the priorities of the various requests -correctly, increasing the volume of lower priority requests should not -affect the performance seen by the higher priority requests. The application -thus serves as a tool to measure and confirm this behavior. - -<P>Future work: -<UL> -<LI> -Study the impacts of scheduling & concurrency strategies on performance.</LI> - -<LI> -Evolve into a testbed for discovering sources of performance non-determinism -& priority inversion.</LI> -</UL> - -<HR> -<H3> -<A NAME="ace"></A>ORB-related ACE Changes</H3> -Points of contact: <A HREF="mailto:nanbor@cs.wustl.edu">Nanbor Wang</A> -and <A HREF="mailto:irfan@cs.wustl.edu">Irfan Pyrarli</A> - -<P>Recently Completed Work: -<UL> -<LI> -Added special declaration to OS.h for <TT>inet_ntoa</TT> and other functions -because VxWorks doesn't provide full argument prototypes for these library -functions.</LI> - -<LI> -The current caching connector behaves properly in the face of a non-blocking -connect request. The "fix" is simply to not support non-blocking connects -through the cache. When the <TT>connect()</TT> fails with <TT>EWOULDBLOCK</TT>, -morph the error to -1 and clean up the request.</LI> - -<LI> -Service handlers obtained from the caching connector are now cleaned up. -The application needs to be able to signal that it's not using it any longer, -and, when the application encounters an error, needs to effectively close -down that connection for good so that a new connection can be initiated.</LI> - -<BR>Added the ability for a Svc_Handler to recycle itself. idle() can be -called when the Svc_Handler is done serving a particular connection and -can how be recycled. The Svc_Handler now also has a pointer to a recycler -that is responsible for managing the connections. The recycler is usually -a Cached_Connector. -<BR>Added new class ACE_Recycling_Strategy. It defines the interface (and -default implementation) for specifying a recycling strategy for a Svc_Handler. -This strategy acts as a consular to the Svc_Handler, preparing it for the -tough times ahead when the Svc_Handler will be recycled. -<BR>Added new class ACE_NOOP_Concurrency_Strategy. It implements a no-op -activation strategy in order to avoid calling open on a recycled svc_handler -multiple times. -<BR>ACE_Cached_Connect_Strategy now implements the ACE_Connection_Recycling_Strategy -interface. This allows Svc_Handlers to cache themselves with ACE_Cached_Connect_Strategy -when they become idle. It also allows them to purge themselves from the -connection cache when the Svc_Handlers close down. -<BR>Also added ~ACE_Cached_Connect_Strategy that will cleanup up the connection -cache.</UL> -Future work: -<BLOCKQUOTE><I>None currently scheduled.</I></BLOCKQUOTE> - -<HR> -<H3> -<A NAME="dove"></A>The DOVE Demo</H3> -Point of contact: <A HREF="mailto:mk1@cec.wustl.edu">Michael Kircher</A>. - -<P>DOVE is described in detail on the following site: <A HREF="http://www.cs.wustl.edu/~schmidt/dove.html">DOVE -documentation</A> - -<P>We focus on the following goals at the moment: -<UL> -<LI> -Have a DOVE Browser running using Java Beans as vizualization components.</LI> - -<LI> -Have the Event Channel as DOVE Agent running with an Event Consumer in -the DOVE Browser.</LI> - -<LI> -Having a DOVE Management Information Base (MIB), which dumps all events -transfered on the Event Channel into a file on persistent storage for later -reuse.</LI> -</UL> -The DOVE Browser uses independent visualization components (Java Beans) -and the Event Channel as DOVE Agent. Connections can be established between -monitored metrics and the visualization components. - -<P>We have three major components: Observables (monitored metrics), Observers -(a Java Bean for displaying the metric) and a DataHandler (for demultiplexing -the monitored metrics to the appropriate Observables). Each component inherits -from a base class, so that a certain behavior of the components can be -assured for each component. Relationships between components are based -on these base classes. - -<P>The used Java Beans are required to conform to some standards, as they -have to support a function called "getProperty" which allows the DOVE Browser -to determine if the vizualization capabilities of a specific Java Bean -are sufficient to display the metric. A JavaBean is for example a Java -Panel which shows a Graph of the delivered doubles. So all metrics can -be displayed by this visualization component which can be expressed by -a single double. - -<P>The DataHandler is connected to the Event Push Consumer (PUSH, because -we use the push concept of the Event Service). The Event Push Consumer -does not know what kind of data is transported. The only component knowing -all the details about the dependencies of the metrics is the DataHandler. -This separation allows easy extension and change of the demo. - -<P><A HREF="http://students.cec.wustl.edu/~mk1/dove.html">Object Diagrams</A> -are available about this new concept. - -<P>Event Service events are used as communication between DOVE Applications -and the DOVE Browser. The DOVE MIB analyses the event data field of all -events and stores this information into a file. The event data filed is -of type CORBA::Any and the DOVE MIB has no notion of what is conveyed in -this field. So the DOVE MIB has to discover the content via the embedded -type code information. Future work includes: -<UL> -<LI>Enhancing MIB functionality</LI> -<LI>Monitoring the AV Streaming Service</LI> -</UL> - -<P> -<HR> -<H3> -<A NAME="forwarding"></A>Location forwarding</H3> -Point of contact: <A HREF="mailto:irfan@cs.wustl.edu">Irfan Pyarali</A>, -<A HREF="mailto:mk1@mk1.wustl.edu">Michael Kircher</A>. -<P> -For more information see <A HREF="../forwarding.html">Location forwarding</A> - -<HR> - -<P>Back to the TAO <A HREF="../index.html">documentation index</A>. <!--#include virtual="/~schmidt/cgi-sig.html" --> -</BODY> -</HTML> diff --git a/TAO/docs/releasenotes/orbcore.html b/TAO/docs/releasenotes/orbcore.html deleted file mode 100644 index fbb5867ebf1..00000000000 --- a/TAO/docs/releasenotes/orbcore.html +++ /dev/null @@ -1,458 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> - -<!-- $Id$ --> - -<html> - <head> - <title>ORB Core Status</title> - </head> - -<BODY TEXT="#000000" BGCOLOR="#FFFFFF"> - <H3><A NAME="orb"></A>ORB & ORB Core</H3> Point of - contact: <A HREF="mailto:nanbor@cs.wustl.edu">Nanbor Wang</A> - - <p>Last Update: $Date$ </P> - -<P> -<b>Current status:</b> - -<UL> - <LI>Provides dynamically linked wholesale assignment of ORB - strategies for communication, concurrency, demultiplexing, - scheduling, and dispatching using the ACE Service Configurator - framework.</LI> - - <LI>Supports several concurrency models out of the box: - Reactive, Thread-per-Connection, and ORB-per-thread. The - ORB-per-thread design is optimized for real-time I/O - subsystems.</LI> - - <LI>Supports <TT>resolve_initial_references("NameService")</TT> - using ACE support for multicast.</LI> -</UL><p> - -<b>Known issues:</b> -<UL> - <LI> The current demarshalling scheme may not work in cases of - complex types such as sequences of unions or anys or object - references. The engine has difficulty determining the dynamic - type of the objects. - - <LI>Object references for objects dynamically created within - a server may not have proper host.</em> (See also <a - href="#hostfix">recent fix</a>.) - When an object is dynamically created and its object - reference returned, it simply has to "guess" at the host - information that is returned in the IIOP Profile. Currently, it - guesses using the host name, which is a reasonable guess in most - cases. - - However, if there are multiple interfaces on a machine - <i>and</i> they have different host names, it is possible that - the desired effect will not be realized, i.e., the connection to - that new object may use a different interface from the original - object. Currently the only way to change this is to use the <a - href="../Options.html#-ORBhost"><b>-ORBhost</b> option</a> to - manually specify that dynamically-created objects bind to a - specific interface so that their IIOP Profile has the desired - hostname. A more desirable fix is being investigated.<p> -</Ul> - -<b>Recently Completed Work:</b> - -<UL> - <li>Making the collocation table configurable. We can either - use a global collocation table to share objects among ORBs, - or use the per-ORB collocation table. - - <li>Implement the inheritance mechanism in - Default_Server_Connection_Handler to access the parent's - POA. This is necessary when we are using - thread-per-connection concurrency model. - - <li>It is often desireable for a server to start up and not have - to specify the TCP port number on which the ORB will listen, - i.e., let the OS decide. While this works properly (by - providing an argument <code>-ORBport 0</code>), the actual - port number used by the server won't be available after the - server starts listening. TAO now tries to bind the address - when <code>-ORBport 0</code> is issued so it can get the - actual address to publish the IOR for clients' use. - - <li>Added optimization for collocated objects. This - optimization enables TAO to bypass communication layers and - talks to collocated objects directly.</li> - - <li>Broke the tight coupling between <code>CORBA_Object</code> - and <code>IIOP_Object</code> so that multiple - <code>CORBA_Object</code>s can share a single - <code>IIOP_Object</code>. This has a big win in - <code>_narrow</code> operations.</li> - - <li>Eliminated substantial memory leaks in servers.</li> - - <li>Added documentation for <a - href="../Options.html#-ORBpoa"><b>-ORBpoa</b></a>, which - allows individual tweaking of the POA's locality (global - vs. thread-specific) independent of the locality of other - ORB resources. Also, <a - href="../Options.html#-ORBpoalock"><b>-ORBpoalock</b></a> - and <a - href="../Options.html#-ORBpoamgrlock"><b>-ORBpoamgrlock</b></a> - control locking in the POA and POA manager, respectively, - according to application needs.</li> - - <li>Began the process of changing the internals of TAO to use - the "underbar" namespace mapping. This should be completed - soon.</li> - - <li>The ORBs manipulation of object keys and object ids is now - consistent. Canonically, everything is managed as an opaque - sequence of octets. Conversion to/from strings is permitted, - with non-printables turning into a trigraph <b>\hl</b> where - <b>h</b> is the high nibble digit in hex, and <b>l</b> is the - low nibble in hex.</li> - - <li><code>CORBA_ORB::run()</code> should be able to be called - multiply in the same execution path now.</li> - - <li>Fixed the <b>LOCATION_FORWARD</b> capabilities to work as - described in the CORBA 2.1 and the POA specification.</li> - - <li>Fixed problem in the IDL Cubit example which caused the - server to dump core when dealing with <code>_out</code> sequence - types <em>ONLY</em> when compiled with G++. It seems that G++ - decided to interpret the expression <code>output == 0</code> - (where <code>output</code> is of type <code>vector_out</code>) - differently from Sun's C++ compiler.</li> - - <li>Fixed a slight problem in <a href="#hostfix">other recent - work</a> where a servant listening on <code>INADDR_ANY</code> - reported an IOR with address <tt>0.0.0.0</tt>. It now reports - the default hostname instead.</li> - - <LI>Working version of TAO on VxWorks with VME transport.</li> - - <li>TAO now reacts gracefully in the face of a non-existent - <code>svc.conf</code> file or simply missing entries in the - file. It logs a warning message and uses default values - versions of items which it would normally obtain from the - Service Repository.</li> - - <li><a name="hostfix"></a>Fixed problem where object references - for objects dynamically created within a server do not have - proper host, at least if the desired host was specified using <a - href="../Options.html#-ORBhost"><b>-ORBhost</b></a> on the - command line.</li> - - <li>Added support for <a - href="../Options.html#-ORBsndsock"><b>-ORBsndsock</b></a> and <a - href="../Options.html#-ORBrcvsock"><b>-ORBrcvsock</b></a> ORB - options. See <a href="../Options.html">options - documentation</a> for details.</li> - - <li>Added support for pre-established connections using the <a - href="../Options.html#-ORBpreconnect"><b>-ORBpreconnect</b></a> - option. This allows connections to be esablished before any - CORBA requests are made. See <a href="../Options.html">options - documentation</a> for details.</li> - - <li>Eliminated deprecated <b>-OAxxx</b> options parsed by the - Object Adapter <code>init</code> method but no longer used by - part of the ORB.</li> - - <li>Made argument parsing within the ORB and POA consume the - arguments it parses.</li> - - <li>Placed an optimization in IIOP::Profile that should speed up - invocations on the client side rather substantially. This was - done by caching an instance of <code>ACE_INET_Addr</code> in - the private portion of <code>Profile</code> because the cost - of constructing one for every invocation (in - <code>TAO_GIOP_Invocation::start</code>) was simply - enormous--the construction was something like 100 cycles on - Solaris. This is all because deep down this ends up calling - <code>gethostbyname()</code>, which can be very costly. Of - course, this is platform-dependent, so the improvements may - not be as great on a different platform.</li> - - <li>Got rid of need to have compile in TSS ORB Core - (<code>-DTAO_HAS_TSS_ORBCORE</code>). This is accomplished by - having a Resource Factory (<code>TAO_Resource_Factory</code>) - singleton which the ORB Core consults in order to get pointers - to resources. The Resource Factory can be configured to - return pointers from thread-specific storage, or - process-global storage. By doing this, the ORB Core is - shielded from ever having to know whether or not its resources - are global or not.</li> - - <li>Made all command-line like options look like the - standard-professed options, i.e., <b>-ORBxxx</b> or - <b>-OAxxxx</b>.</li> - - <li>Moved ORB option parsing into - <code>TAO_ORB_Core::init()</code> rather than in - <code>ORB_init()</code>.</li> - - <li>Define <code>_FAR</code> for all cases as an interim fix - for LynxOS.</li> - - <li>Fixed TAO so that the default port of 5001 is defined in - <code>orb_core.h</code> config header somewhere rather than in - <code>orbobj.cpp</code>, and use <b>MAXHOSTNAMELEN</b> ACE - constant for the hostname buffer.</li> - - <li>Eliminated need for <code>CORBA::Object</code> to keep a - pointer to its orb sitting around anywhere.</li> - - <LI>Tested <code>CORBA_ORB::shutdown()</code> as a manner in - which a thread of control can request that - <code>CORBA_ORB::run()</code> should return and no longer - service requests. It only honors a - <em>wait_for_completion</em> argument of <b>FALSE</b> right - now because we haven't fully explored the issues which - surround doing all the completion.</li> - - <li>Created a brief section in <a - href="../../TAO-INSTALL.html"><code>$TAO_ROOT/TAO-INSTALL.html</code></a> - that <em>briefly</em> documents installation on Unix - platforms. There is also a brief section which documents - issues that apply across ALL platforms, such as the fact that - TAO and its application will likely not work well if your ACE - is linked through Orbix, VisiBroker, or another ORB. <a - href="../../ChangeLog">ChangeLog</a> discovery attribution for - this should go to <em>Steve Wohlever - <wohlever@mitre.org></em>.</li> - - <LI>Implemented <code>CORBA_ORB::shutdown()</code> as a manner - in which a thread of control can request that - <code>CORBA_ORB::run()</code> should return and no longer - service requests.</li> - - <LI>Validated movement of Strategy Connector into - ORB Core.</LI> - - <li>Tested and commited <code>Connector::connect_n</code> - changes to ACE</code>.</li> - - <li>ACE & TAO compiling cleanly using Sun's CC on Solaris and - G++ on Linux. Also, the ACE tests run properly.</li> - - <li>Use <code>truss</code> to verify for <a - href="mailto:PAUL.G.WEHLAGE@cdev.com">Paul Wehlage</a> that - TAO really uses <code>select</code> vs. <code>recv</code> for - <b>-R</b> vs. <b>-T</b>.</li> - - <li>Renamed <code>boa.*</code> to <code>poa.*</code>.</li> - - <LI>Renamed following files: Orb_Core.* ->orb_core.* - & orbobj.* -> corba_orb.*.</LI> - - <LI>The lock used in <code>giop.cpp:626</code> originally - appeared in the IIOP-1.4 code base. Its purpose was to - protect access to the <code>fwd_profile</code> data member. - The original features are available, but they are currently - not used because none of our concurrency models present a - thread-unsafe condition. The <a - href="../../ChangeLog">ChangeLog</a> presents more details - on the subject.</li> - - <li>Fixed problems seen by <a - href="mailto:brian.r.mendel@boeing.com">Brian Mendel</a> of - Boeing where the Cubit server application was crashing in - <code>TAO_OA_Connection_Handler::handle_message</code> when it - was trying to call <code>CORBA::POA::handle_request</code> - through a NULL <code>root_poa</code> pointer. The NULL - pointer resulted from the inadvertent use of the - Thread-per-Connection concurrency model, which is currently - incompatible with the ORB-per-thread model. It was not caught - because the change is normally done in configuration files - parsed by the Service Configurator, and VxWorks requires - special code in that area which was not tested until Boeing - got hold of the code.</li> - - <li>Clean up build under g++. All 'function used before - declared inline' warnings have been eliminated. Also, all - other warnings (except for one that is nearly unavoidable) - have been eliminated. - </li> - - <LI>Removed BOA and ROA names from the ORB.</LI> - - <LI>Changed <code>CORBA_ORB::open()</code> to return an error - status (first cut at this already there--needs to be checked - out).</LI> - - <LI>Added README file to multiCubit test.</li> -</UL><p> - -<b>Ongoing Work:</b> - -<UL> - <LI>Verify ACE & TAO on Linux using g++, Solaris using CC, and - Solaris using g++.</LI> - - <LI>Use Purify to eliminate straggling problems.</LI> - - <LI>Clean up the internals and analyze for performance - bottlenecks using Quantify.</LI> - - <li>Resolve <code>// @@</code> comment blocks. These are - questions or comments placed in the code by a reviewer - (typically Doug).</li> - - <li>Make more and better documentation on the internals of - TAO.</li> -</UL><p> - -<b>Current Work:</b> - -<UL> - <LI> - <p>Verify that, in the ORB-per-thread concurrency model, - it's possible to have a factory in each thread that creates - a client and returns an object reference to that client - within that thread. This is different from the model that - Sumedh originally had where the factory was trying to turn - out a client in a separate thread/ORB combination. - - <p>There is no application which attempts this at the moment, - so both a client and a server will need to be manufactured. - Using existing Cubit-like examples (that poor app is so - weary) should reduce development time to a couple of - hours. - - <p>The real strategy/solution is to make - <code>CORBA::Object</code> not keep a pointer to its orb - sitting around anywhere. It should only get it when it needs - it. This should not be difficult to change. - </LI> -</UL><p> - -<b>Critical Work:</b> - -<UL> - <LI>Support new concurrency models, e.g., Thread-per-Request, - thread pool, etc..</LI> - -</UL> - -<b>Future work:</b> -<UL> - <li>Performance optimizations, such as: - <ol> - <li>Strategize the connection management scheme so that we - don't always have to pay the price of a look up in the - connection cache. Basically, we want to be able to "hold" a - service handler for a string of requests. And, of course, - do this in a portable manner.</LI> - - <li>Replace all uses of <code>new</code> and - <code>delete</code> with allocators that can be put into - TSS. The main motivation for this is to eliminate lock - contention when multiple threads need to allocate/deallocate - memory, however it might also be possible to substitute an - allocator better-tuned to an application's specific - usage.</li> - </ol> - </li> - - <li>Robustness improvements: - <ol> - <li>Improve connection cache so that it won't crash when there - are no more slots or sockets.</li> - - <li>Add an option to the ORB core, e.g., - <b>-ORBnameservicetimeout</b>, to allow specification of an - upper bound on the itime-to-wait for a response from the - ORB's multicast "search" for a running name server.</li> - </ol> - </li> - - <li>New features: - <ol> - <li>Implement <code>ORB::perform_work</code> and - <code>ORB::work_pending</code> so that <code>ORB::run</code> - <em>could</em> be implemented in terms of them.</li> - - <li>Improve the <code>Service Configurator</code> service - entry faking on VxWorks.</li> - - <li>Integrate with realtime upcalls (RTUs).</li> - - </ol> - </li> - - <li>Internal restructuring: - <ol> - <li>Remove <code>_FAR</code> from all code.</li> - - <li>Rework underlayment to eliminate <code>IUnknown</code> class.</li> - - <li>Create some sort of internal "request" object which - carries enough context to suport deferred method invocation - such as one might find in the thread-pool approach or - wherever queuing might occur.</li> - - <li>Rethink the entire memory allocation model used by the - ORB. The current one from SSIIOP may no longer be suitable - for our purposes.</li> - </ol> - </li> - - <li>Documentation: - <ol> - <li>Update ORB Patterns paper to reflect the latest TAO has to - offer. Specifically - <ul> - <li>sections on the Abstract Factory and Concurrency - strategies need to be updated, and the entire paper needs to - be reviewed for accuracy w.r.t the current TAO.</li> - <li>Metrics must be re-computed.</li> - <li>Tighten existing discussions.</li> - <li>Add information on new patterns (such as TSS) which - have been used since initial work.</li> - </ul> - - <li>Make the section in <a - href="../../TAO-Install.html"><code>$TAO_ROOT/TAO-Install.html</code></a> - that documents installation on Unix platforms more complete.</li> - - </ol> </li> - - <li>Miscellany: - <ol> - <LI>Assist in porting higher level services (e.g., <A - HREF="#eventchannel">Event Channel</A>) to TAO.</LI> - - <li>Compile and verify ACE and TAO on Linux using the Kuck and - Associates, Inc. (KAI) compiler tools.</li> - <LI>CORBA::TypeCode is causing a memory leak. Since objects - of this type are rather static in nature, this is - currently not a big deal. However, it should be fixed - soon. </LI> - <LI>CORBA_Exception::Release is not working correctly as the - memory is never really freed. </LI> - </ol> - </li> - - - <li>Potential Optimizations: - <ol> - <LI>There is a certain amount of overhead introduced by the - use of TSS Singletons. TSS singletons are very - convenient as the variable does not have to be passed - from function to function. Even though sort of access is - generally acceptable, the overhead of this approach - maybe too high when used in code which is executed - frequently (e.g., during an upcall). This critical code - may have to be restructured not to use TSS Singletons - because of the high overhead associated with it. </LI> - </ol> - </li> - - -</UL> - -</body> -</html> |