**** This file contains a history of changes made to the QuO release. ***** after version 3.0.11 ------------------- * Support for the CORBA Component Model (CCM) specified in CORBA 3.0 quo Core now supports CCM. We have specifically chosen MICO (Mico is Corba) and CIAO (Component Integrated Ace ORB), the first two C++ implementations of CCM. This release uses mico 2.3.11 and CIAO 0.4.2 * Introducing Qosket Components We introduce the concept of qosket components - CCM components that provides adaptive and dynamic QoS and can be assembled and deployed with other components Three new examples are added to demonstrate this - simple_ciao - example in CIAO demonstrating a componentized switch qosket - diffserv_ciao - example in demonstrating a componentized diffserv qosket -simple_mico - example in MICO demonstrating a componentized switch qosket * Ported quo on MICO ORB --changed codegen so that * it is untied to TAO in terms of downacsting dependency * It now generated code for both tao and mico with appropriate headers and includes and Makefiles * It has a commandline option orb_type --Changed QuoKernel * Added appropriate headers and includes and Makefile * quo_common_header.h added to prevent the code interspersed with ifdefs * Chnaged the implementation of downcast in the *Impl files --Changed switch qosket Added appropriate headers and includes and the Makefiles --Changed simple example Now it run on mico orb * quogen -aspect-sdl/asdl_structures.cpp: Force the array offset constant to unsigned to make newer GCC happy. -contract/cdl_contract.cpp: mico-c++ compiler fails here as it was converting Syscond* to var and then var to CORBA* - add log header to the geenrated code - Made the --selftest option exit when it succeeds. Previously it was falling through for the code generator to continue, which failed if no other arguments were provided. -updated for TAO_1.3.3 - Updated the MS Visual C++ project files to find the ACE libraries in the right location. They were moved to $ACE_ROOT/lib in ACE 5.4.1. - Emit initializers for local variables (if defined) in C++ and Java. - Replace switch() on contract region with if() for delegate regions. - New explicit template intsntiation required for ACE_Hash_Map_Entry, ACE_Has_Map_Manager,ACE_Hash_Map_Manager_Ex - Updated to generate a delegate based on component events. - Support for attributes on sysconds in contracts. - Fixed region_seq, but it doesn't work completely. Before this fix, the contract and delegate generated code that didn't match, so region_seq didn't work at all. Now, they generate compatible code, but region_seq only works to select the first region that is true, it does not work with select statements to allow the choosing of min, max, etc. - Removed TAO_NAMESPACE_BEGIN and TAO_NAMESPACE_END as it is replaced by c++ namespace in the new ACE/TAO/CIAO release - Moved addObservers to end of contract initialization. - Fully parenthesize generated C++ expressions to guarantee that the precedence matches that of the AST. In particular, the AST encodes subexpressions containing parentheses implicitly, so, for example, "A * (B + C)" would otherwise be emitted as "A * B + C". This was already taken care of for AND, OR, NOT, and the comparitors, but not the arithmetic operators. Does not affect Java. - Fixed a bug in the contract code generator that was preventing a contract from having more than one callback with the same type. - generate unused arg in case a contract doesn't have sysconds (like for the local translator example) - Further refactored memory management within the C++ QuO Kernel. * Added cleaning up of servant classes created on the heap by public virtual inheritance from PortableServer::RefCountServantBase for SysCondImpl, ContractImpl, and KernelImpl * Move CORBA::ORB::_duplicate statement into constructor of QUO_ContractImpl * Added debug statements to destructors of ContractImpl, SysCondImpl, and KernelImpl * Fixed memory leaks occured during freeing of children regions and member transitions in Region * Fixed memory leaks in Transition by adding deleting of "code" member * In GeneratedContract::init(), made _servant_base variable a PortableServer::ServantBase_var instead of a pointer type to get reference counting for syscond servant right. Otherwise, syscond servants are not being freed upon orb shutdown by the POA. * In generated Kernel, changed pointer types to inline member storage (scSeqSeq and cbSeqSeq) * Added _remove_ref () on servants after _this() call to get servant reference counting right so that servants are freed up upon orb shutdown - "ace/streams.h" must be explicitly included now in certain files. - In TAO 1.3.5 and higher, "interface TypeCode;" was added to $TAO_ROOT/tao/orb.idl. Previously, the TAO IDL compiler treated "CORBA::TypeCode" as a "pre-defined type". In TAO 1.3.5, the code to treat "CORBA::TypeCode" as a pre-defined type was removed from the TAO IDL compiler. Unfortunately, we still have it in our code generator. This patch conditionally compiles the code, if we are using a TAO version < 1.3.5. * In the Makefile, Introduce a new macro TAO_ORB_IDL_HAS_INTERFACE_TYPECODE. This macro will be defined after grepping $ACE`_ROOT/TAO/tao/orb.idl and grepping for "interface TypeCode;" * In ast_module.cpp and be_support.cpp, change the TAO_BETA_VERSION checks to look for TAO 1.3.6 and TAO_ORB_IDL_HAS_INTERFACE_TYPECODE - Add ACE_UNUSED_ARG macro some unused variables. - Add default: to switch statement to eliminate warnings due to unhandled enum values PT_object and PT_value in be_support.cpp - Older ACE doesn't have ACE_String_Base_Const, so get npos from ACE_CString, which in turn gets it from its ACE_String_Base_Const base class in newer ACE. - Explicitly include ace/Log_Msg.h. - Strip off initial blank entries on IDL names that TAO_IDL puts on -Updated to support CCM -Removed TAO_Namespace to synchronize with ACE 5.4.2/TAO 1.4.2 * Modified and Improved RSS Please look at the documentaions - Users Guide and Reference Guide for further details. Basically --it is simplified significantly and --ported to C++ * Removed mechanism support for RSVP, OODTE after version 3.0.10 -------------------- quoSecurity: * quoOODTE made work with JacORB 1.4.1 quoCore: * The quo idl now includes a few meta-data operations, particularly on QuoKernel, Contract and ContractRegion (the last is a new interface). These are supported by both the cpp and java kernels. Currently the meta-data is only used by the new standalone java gui which talks to a kernel via CORBA. * QuO as a whole now supports the jdk 1.4 ORB in addition to JacORB. * simple example C++: Add CORBA macro and makefile fixes * switch qosket C++ and simple example C++: ACE environment macro fixes * Sliding Window Counter Syscond Implementations for C++: - QUO_SWEventCounterSCImpl counts events over a window. - QUO_SWMeanRateCounterSCImpl computes the mean rate of event occurance over a window. - Added mean rate increment by x via longValue(x) or doubleValue(x). - Added target rate computation to mean rate counter. * Time Syscond for C++: - Fixes. * Remote Value Syscond Monitor: - Add poll rate configuration via CORBA. - Add monitoring of string and double values. * Value Syscond - Exposed unsigned long value attribute to CORBA. * quogen: - Add ACE_THROW_SPEC(( CORBA::SystemException )) in client side delegate - RegionSeq* -> RegionSeq_var. Prevents leak on contract eval in delegate. - fixed namespace clash when having multiple contracts with same region names within the same kernel - fixed various boundary check bugs which caused quogen to segfault under NT [Michael] - added checks to allow delegates to be generated with no contract defined - Made relative operators binary, expressions such as xsetDebug (quo::QuoKernel::DEBUG_CONTRACT) to get that level of debugging. [Michael, Sep 5 2001] after version 3.0.5: -------------------- - quogen: started working on qosket composition. [Michael, Suzi] - quogen: removed --contract flag. A deprecation message is generated when it is used. [Suzi] - quogen: added --delegate flag to be used to specify a name for the generated delegate file. [Suzi] - quogen: automatically generating header files for C++ from qosket IDL. [Suzi] - Our nightly builds are not compiling against vbj anymore. Although we assume our code still compiles with vbj, we no longer actively test against it. We use jacORB instead. [Michael] - Fixed bug in cdl.yy that caused quogen to segfault on calls to syscond conditions in transitions. This bug was introduced by adding sequence of sysconds. [Michael, Suzi] after version 3.0.4: -------------------- - Refactored quoRsvporb to work with TAO 5.1.18 Craig, Michael - Switched to JacORB 1.3.30 [res] - dirm/remos: Converted to work with Remos 2.0 [res] - java kernel: Added support for syscond sequences and quantified expressions (some, every) [res] - quogen: changes to CDL. Added syscond_sequences and callback_sequences. Added quantified expressions (every or some) to be used in region predicates. Added region_seq and the use of sequences in transition statements. [Suzi] - added support for use of IDL defined enums in CDL contracts. [Michael, July 11 ] - changed supported versions to ACE/TAO.5.1.18 Linux gcc 2.95.2 (RH6.2) Linux gcc 2.96.85 (RH7.1) SunOS 5.6, CC 6.0 [Michael, July 24] - modified examples/bette to be more generic so that $APOD_ROOT/examples/bette-3stage can reuse most of the raw application and wrapper helper classes [Michael & Rich, July 20] - extended RsvpControlSC in quoRsvpOrb to allow access via CORBA methods reserve() and teardown(). This was needed to handle reservations in bette-3stage from the QosketImpl class. [Michael & Rich, July 20] after version 3.0.3: -------------------- - quogen: modified to generate local delegates as follows: IDL interface x maps to x_ptr IDL basic types (long, double, ...) map to CORBA:: types IDL string maps to char * The business interface include filename is generated without the 'S', i.e. fooS.h becomes foo.h for local delegates. The return statement for get_remoteObj() does not do a _duplicate for local delegates. And the set_remoteObj call in the qosket does not do a _duplicate. [Suzi] - modified C++ qosket inheritance structure. The C++ Qosket now also inherits from an abstract class QosketInterface. This change involved changing quogen plus updating qosket/switch qosket/methodrtt examples/simple examples/methodrtt. [Michael] - quogen: added asl to Properties (same as asdl), and added --asl==File to cmdline. also updated quogen -h. [Michael] - changed release structure, added quoCodegen as a seperate component (used to be in quoCore). This allows people to use a precompiled quogen, but still custom build their C++ Kernel in a more natural way. [Michael] - changed generated.html to only contain examples that we supply doxygen documentation for [Michael] - quogen: fixed signature for local declarations in C++ delegates generated by ASL. The change is to dump return types instead of in types. This bug showed up when working on the WSOA example. [Michael, fixed by Joe] - quogen: added include statement for qosketimplfile into C++ delegates. This was necessary to get the WSOA example working. [Michael] - quogen: moved TAO_IDL ast/ fe/ narrow/ and driver/ files from TAO 5.1.4 into QuO code release. This allows people to build quogen with later releases of TAO. [Michael] - quogen: added --kernel_middleware flag, values=corba, rmi. Deprecating use of --middleware=kernel_corba,kernel_rmi, added value=none. [Suzi] - quogen: removed buggy transition select functionality from cdl_structure, cdl.yy. The bug caused a wrong Transition code block for the switch qosket on SuOS. [Michael] - documentation: added doxygen documentation for qosket/switch and qosket/methodrtt [Michael] - quogen: corrected passing of quokernel references in C++ adapter. Added duplicate calls before passing references along. [Michael] - Created three Makefile targets for OODTE interceptors, one each for VBJ, TAO, and JacORB. Factored the VBJ interceptors into VBJ-specific, JacORB-specific, and shared parts. The VBJ interceptors work as before. JacORB interceptors exist, but simply pass through data (waiting on patch from JacORB developers). TAO interceptors are under development. Created automated test in Java for both VBJ and JacORB interceptors. [Franklin, 2001 June 6] - quogen: added support for throwing exception (runtime only i.e. like CORBA::NO_PERMISSION) as an asdl +behaviorstatement [Partha, 2001 June 14] - quogen: fixed missing CORBA::_duplicate() in delegate generated from ASL. [Joe, 2001 June 13] - JAVA QuO kernel: added sliding window functionality to CounterSCImpl [Michael, 2001 June 19] - C++ Kernel and quogen : added support for gcc 2.96 and gcc 2.95.3 with correct handling of ACE_THROW_EXCEPTIONS (those compilers do a stricter check on correct exception handling) [Craig, Michael, 2001 June 25] - CDL support for IDL enums in region predicates [Michael ...] - Fixed generation of KernelImpl class when no syscond is present in a Contract. This used to generated a bindSyscond call with just an else block. [Michael, June 26 01] - Always build quogen completely statically when using gcc on Linux. This has the advantage that people using RedHat 7* can just install quoCodegen without having to worry about C library versions. [Craig, Michael, June 23 01] - Extended comments in generated files to contain version number of quogen and info about the QuO webpage [Michael, June 26 01] - Added local-translator and bette-local to quoExamples [Suzi, Rich, Michael ] - various cleanups in the codegenerator to eliminate warnings caused by contract with no sysconds/callbacks. [Michael, June 26 01] - removed simple_cppcore from quoExamples, since nobody should be using CSL anymore. [Michael, June 27 01] - added an include to ast_decl_patched.cpp that enables the code generator to compile with the new ACE+TAO (X.1.17) [Joe Loyall] Mon Oct 25 15:42:15 EDT 1999 ---------------------------- QuO 2.1 released. Mon Jul 19 23:09:42 EDT 1999 ---------------------------- QuO 2.0.1 released. The QuO documentation has been updated in a number of places. Please consult the README file in this directory, as well as the README files that accompany each of the examples, for important configuration information. Several of the Word documents found in $QUO_ROOT/docs have also been updated. This version of QuO can be used with either Visibroker 3.3 or 3.4. However, it has been configured to use Visibroker 3.4 by default. If you are using Visibroker 3.3, you will need to make the changes described in the README file in this directory. The real-time examples included in the 2.0 release of the QuO toolkit (examples/rt_throughput and examples/adaptive_rt_throughput) have been separated out into their own module (rt-2.0.1.tgz). See the document DOC-QI-4---UsingRealTime.doc for more information about installing and using these examples. There also continue to be other modules that can be used with the QuO Toolkit: dirm-2.0.1.tgz - bandwidth management and resource monitoring aqua-2.0.1.tgz - dependability through replication cache-2.0.1.tgz - adaptive caching Note that the DIRM module has undergone significant changes with this release. See the README file in the dirm installation directory for more information. Fri May 28 15:17:23 EDT 1999 ---------------------------- QuO 2.0 released.