diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-01-22 17:27:39 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-01-22 17:27:39 +0000 |
commit | 5d702a2bd359823bb37e0bf02ee602daeaae6799 (patch) | |
tree | 13f6cff6799a39fa88cbb2dc3353053db71343ad | |
parent | fe639ac1ea7d30756ec66a5a25e0edb8318191f4 (diff) | |
download | ATCD-5d702a2bd359823bb37e0bf02ee602daeaae6799.tar.gz |
This commit was manufactured by cvs2svn to create branch 'poa'.
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PropertyService.idl | 215 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/TAO_IDL_templates.cpp | 26 | ||||
-rw-r--r-- | TAO/performance-tests/Cubit/TAO/MT_Cubit/tmplinst.cpp | 15 | ||||
-rw-r--r-- | TAO/release.chk | 89 | ||||
-rwxr-xr-x | TAO/release.pl | 73 | ||||
-rw-r--r-- | TAO/tao/strategy_T.cpp | 56 | ||||
-rw-r--r-- | TAO/tao/strategy_T.h | 44 | ||||
-rw-r--r-- | TAO/tao/strategy_T.i | 21 | ||||
-rw-r--r-- | TAO/tests/Cubit/TAO/IDL_Cubit/tmplinst.cpp | 15 | ||||
-rw-r--r-- | TAO/tests/Cubit/TAO/MT_Cubit/tmplinst.cpp | 15 |
10 files changed, 569 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/PropertyService.idl b/TAO/orbsvcs/orbsvcs/PropertyService.idl new file mode 100644 index 00000000000..34192d420ce --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/PropertyService.idl @@ -0,0 +1,215 @@ +// -*-c++-*- + +// $Id$ + +// The property service, downloaded from +// ftp://ftp.omg.org/pub/docs/1995/95-06-01.ps + +module CosPropertyService { + + /*****************************************************/ + /* Data Types */ + /*****************************************************/ + + typedef string PropertyName; + struct Property { + PropertyName property_name; + any property_value; + }; + + enum PropertyModeType { + normal, + read_only, + fixed_normal, + fixed_readonly, + undefined }; + + struct PropertyDef { + PropertyName property_name; + any property_value; + PropertyModeType property_mode; }; + + struct PropertyMode { + PropertyName property_name; + PropertyModeType property_mode; + }; + + typedef sequence<PropertyName> PropertyNames; + typedef sequence<Property> Properties; + typedef sequence<PropertyDef> PropertyDefs; + typedef sequence<PropertyMode> PropertyModes; + typedef sequence<TypeCode> PropertyTypes; + + interface PropertyNamesIterator; + interface PropertiesIterator; + interface PropertySetFactory; + interface PropertySetDef; + interface PropertySet; + + /*****************************************************/ + /* Exceptions*/ + /*****************************************************/ + exception ConstraintNotSupported{}; + exception InvalidPropertyName {}; + exception ConflictingProperty {}; + exception PropertyNotFound {}; + exception UnsupportedTypeCode {}; + exception UnsupportedProperty {}; + exception UnsupportedMode {}; + exception FixedProperty {}; + exception ReadOnlyProperty {}; + + enum ExceptionReason { + invalid_property_name, + conflicting_property, + property_not_found, + unsupported_type_code, + unsupported_property, + unsupported_mode, + fixed_property, + read_only_property + }; + + // @@ this was a `struct' in the original definition, I changed it + // to be an `exception'. + exception PropertyException { + ExceptionReason reason; + PropertyName failing_property_name; + }; + + typedef sequence<PropertyException> PropertyExceptions; + + exception MultipleExceptions { + PropertyExceptions exceptions; + }; + + /*****************************************************/ + /* Interface Definitions */ + /*****************************************************/ + + interface PropertySetFactory { + PropertySet create_propertyset(); + PropertySet create_constrained_propertyset(in PropertyTypes allowed_property_types, + in Properties allowed_properties) + raises(ConstraintNotSupported); + PropertySet create_initial_propertyset(in Properties initial_properties) + raises(MultipleExceptions); + }; + + /*---------------------------------------------------*/ + interface PropertySetDefFactory { + PropertySetDef create_propertysetdef(); + PropertySetDef create_constrained_propertysetdef(in PropertyTypes allowed_property_types, + in PropertyDefs allowed_property_defs) + raises(ConstraintNotSupported); + PropertySetDef create_initial_propertysetdef (in PropertyDefs initial_property_defs) + raises(MultipleExceptions); + }; + + /*---------------------------------------------------*/ + interface PropertySet { + /* Support for defining and modifying properties */ + void define_property (in PropertyName property_name, + in any property_value) + raises(InvalidPropertyName, + ConflictingProperty, + UnsupportedTypeCode, + UnsupportedProperty, + ReadOnlyProperty); + + void define_properties (in Properties nproperties) + raises (MultipleExceptions); + + /* Support for Getting Properties and their Names */ + unsigned long get_number_of_properties(); + + void get_all_property_names(in unsigned long how_many, + out PropertyNames property_names, + out PropertyNamesIterator rest); + + any get_property_value(in PropertyName property_name) + raises(PropertyNotFound, + InvalidPropertyName); + + boolean get_properties(in PropertyNames property_names, + out Properties nproperties); + + void get_all_properties(in unsigned long how_many, + out Properties nproperties, + out PropertiesIterator rest); + + /* Support for Deleting Properties */ + void delete_property (in PropertyName property_name) + raises (PropertyNotFound, + InvalidPropertyName, + FixedProperty); + + void delete_properties(in PropertyNames property_names) + raises (MultipleExceptions); + + boolean delete_all_properties(); + + /* Support for Existence Check */ + boolean is_property_defined(in PropertyName property_name) + raises(InvalidPropertyName); + + }; + + /*---------------------------------------------------*/ + interface PropertySetDef:PropertySet { + /* Support for retrieval of PropertySet constraints*/ + void get_allowed_property_types(out PropertyTypes property_types); + void get_allowed_properties(out PropertyDefs property_defs); + + /* Support for defining and modifying properties */ + void define_property_with_mode(in PropertyName property_name, + in any property_value, + in PropertyModeType property_mode) + raises(InvalidPropertyName, + ConflictingProperty, + UnsupportedTypeCode, + UnsupportedProperty, + UnsupportedMode, + ReadOnlyProperty); + + void define_properties_with_modes(in PropertyDefs property_defs) + raises(MultipleExceptions); + + /* Support for Getting and Setting Property Modes */ + PropertyModeType get_property_mode(in PropertyName property_name) + raises(PropertyNotFound, + InvalidPropertyName); + + boolean get_property_modes(in PropertyNames property_names, + out PropertyModes property_modes); + + void set_property_mode(in PropertyName property_name, + in PropertyModeType property_mode) + raises(InvalidPropertyName, + PropertyNotFound, + UnsupportedMode); + + void set_property_modes(in PropertyModes property_modes) + raises(MultipleExceptions); + }; + + /*---------------------------------------------------*/ + interface PropertyNamesIterator + { + void reset(); + boolean next_one(out PropertyName property_name); + boolean next_n (in unsigned long how_many, + out PropertyNames property_names); + void destroy(); + }; + + /*---------------------------------------------------*/ + interface PropertiesIterator { + void reset(); + boolean next_one(out Property aproperty); + boolean next_n(in unsigned long how_many, + out Properties nproperties); + void destroy(); + }; + +}; diff --git a/TAO/orbsvcs/orbsvcs/TAO_IDL_templates.cpp b/TAO/orbsvcs/orbsvcs/TAO_IDL_templates.cpp new file mode 100644 index 00000000000..46fee9fe9ff --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/TAO_IDL_templates.cpp @@ -0,0 +1,26 @@ +// +// $Id$ +// + +#include "orbsvcs/CosNamingC.h" +#include "orbsvcs/RtecEventCommC.h" +#include "orbsvcs/RtecEventChannelAdminC.h" +#include "orbsvcs/RtecSchedulerC.h" + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class TAO_Unbounded_Sequence<CosNaming::NameComponent>; +template class TAO_Unbounded_Sequence<CosNaming::Binding>; +template class TAO_Unbounded_Sequence<RtecEventComm::Event>; +template class TAO_Unbounded_Sequence<RtecEventChannelAdmin::Dependency>; +template class TAO_Unbounded_Sequence<RtecEventChannelAdmin::Publication>; +template class TAO_Unbounded_Sequence<RtecScheduler::Dependency_Info>; +template class TAO_Unbounded_Sequence<RtecScheduler::RT_Info>; +#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate TAO_Unbounded_Sequence<CosNaming::NameComponent> +#pragma instantiate TAO_Unbounded_Sequence<CosNaming::Binding> +#pragma instantiate TAO_Unbounded_Sequence<RtecEventComm::Event> +#pragma instantiate TAO_Unbounded_Sequence<RtecEventChannelAdmin::Dependency> +#pragma instantiate TAO_Unbounded_Sequence<RtecEventChannelAdmin::Publication> +#pragma instantiate TAO_Unbounded_Sequence<RtecScheduler::Dependency_Info> +#pragma instantiate TAO_Unbounded_Sequence<RtecScheduler::RT_Info> +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/performance-tests/Cubit/TAO/MT_Cubit/tmplinst.cpp b/TAO/performance-tests/Cubit/TAO/MT_Cubit/tmplinst.cpp new file mode 100644 index 00000000000..0d0db7963f6 --- /dev/null +++ b/TAO/performance-tests/Cubit/TAO/MT_Cubit/tmplinst.cpp @@ -0,0 +1,15 @@ +// +// $Id$ +// + +// The contents of this file REALLY should be generated by the IDL +// compiler, but that functionality isn't available yet. + +#include "cubitC.h" + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class TAO_Unbounded_Sequence<long>; +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate TAO_Unbounded_Sequence<long> +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + diff --git a/TAO/release.chk b/TAO/release.chk new file mode 100644 index 00000000000..823128b4661 --- /dev/null +++ b/TAO/release.chk @@ -0,0 +1,89 @@ +# $Id$ + +# Hint: use picture-mode to make editing this easier (C-c . will set +# the direction to "down". + +Legend: + Platforms are indicated by position within square brackets, i.e., + [ABCDEF] where + + A = Solaris/CC + B = NT (MSVC++ 5.0) + C = Solaris/g++ + D = IRIX + E = Linux/g++ + F = Other (Linux/egcs, Solaris/egcs, etc.) + + The state is indicated as a tri-state value, e.g., + + 0 = doesn't work + 1 = works + x = not attempted or unknown + + +[1111 ] libTAO and TAO_IDL compile. +[1111 ] IDL_Cubit compiles + [1111 ] Runs +[1111 ] Param_Test compiles and runs for + [x111 ] DII short + [x111 ] DII ubstring + [x011 ] DII fixed_struct + [x100 ] DII strseq + [x100 ] DII var_struct + [x100 ] DII nested_struct + [x000 ] DII struct_seq + [x000 ] DII objref + + [1111 ] SII short + [1111 ] SII ubstring + [1011 ] SII fixed_struct + [1111 ] SII strseq + [1111 ] SII var_struct + [1111 ] SII nested_struct + [0000 ] SII struct_seq + [0000 ] SII objref +[1110 ] MT_Cubit compiles + [101x ] runs for Octet + [101x ] runs for Short + [101x ] runs for Long + [101x ] runs for Struct +[1101 ] orbsvcs compiles + [10 x ] Event_Latency runs + [0x x ] Simple_Naming runs + [xx x ] Logger runs + +NOTES +* Solaris/CC + +* NT +** Warnings on libTAO and tao_idl compilation. +** Param_Test with struct_seq segfaults server. +** MT_Cubit client segfaults after transactions made. + +* Solaris/g++ +** Warnings during tao_idl compilation. +** SII,DII struct_seq causes a bus error on the server. +** SII objref causes marshal exceptions, but no fatalities. +** DII objref client gets illegal instruction. +** orbsvcs fails with missing stuff in ACE_Map_Manager. +** MT_Cubit gets relocation error on startup: + ld.so.1: ./svr: fatal: relocation error: symbol not found: + ACE_Task_Base::activate(long, int, int, long, int, ACE_Task_Base *, + unsigned int *): referenced in ./svr + +* IRIX +** Event Latency won't work because unproper detection of failures for + priority change. + MT_Cubit does not compile due to extra library (-lposix4) only + present in Solaris; IMHO that should go into the platform file for + Solaris/CC + +* Linux/g++ +* Other (Linux/egcs, Solaris/egcs, etc.) + + + +# eval:(overwrite-mode nil) +# Local Variables: +# mode:indented-text +# End: diff --git a/TAO/release.pl b/TAO/release.pl new file mode 100755 index 00000000000..2bbeeb919b0 --- /dev/null +++ b/TAO/release.pl @@ -0,0 +1,73 @@ +$date = `/usr/bin/date +"%a %b %d %T %Y"`; +chop $date; +$VERSION = "VERSION"; +$CHANGELOG = "ChangeLog"; +$TAO_VERSION = ''; +$MODNAME = 'TAO'; + +sub inplace { + my($ext, @files) = @_; + my(@nfiles) = (); + my($nfile); + $ext = '~' if ($ext eq ''); + foreach $file (@files) { + $nfile = $file . $ext; + if (rename ($file, $nfile)) { + push(@nfiles, $nfile); + } + else { + warn "Unable to rename $files[$i] for in-place editing: $!\n"; + } + } + @nfiles; +} + +@inplace = inplace('.del', $VERSION, $CHANGELOG); + +open (VERSION, $inplace[0]) + || die "Unable to open file $inplace[0] for inplace edit: $!\n"; +open (VERSIONOUT, ">$VERSION") + || die "Unable to open file $VERSION for writing: $!\n"; + +undef $version_number; +while (<VERSION>) { + s/(TAO version \d+\.\d+\.)(\d+)/sprintf("$1%d",$2+1)/e; + ($version_number = $_) =~ s/.*(\d+\.\d+\.\d+).*/$1/ if (!defined($version_number)); + if (s/(, released ).*/$1$date./) { + ($TAO_VERSION = $_) =~ s/^This is //; + } + print VERSIONOUT $_; +} + +close (VERSIONOUT); +close (VERSION); + + +$message = $date." ".$ENV{"SIGNATURE"}." <".$ENV{"LOGNAME"}."\@cs.wustl.edu>\n\n\t* ".$TAO_VERSION."\n"; +$message_printed = 0; + +open (CHANGELOG, $inplace[1]) + || die "Unable to open file $inplace[1] for inplace edit: $!\n"; +open (CHANGELOGOUT, ">$CHANGELOG") + || die "Unable to open file $CHANGELOG for writing: $!\n"; + +while (<CHANGELOG>) { + print CHANGELOGOUT "$message" if ( ! $message_printed++ ); + print CHANGELOGOUT $_; +} + +close (CHANGELOG); +close (CHANGELOGOUT); + +# Morph the version number +chop $version_number; +($version_tag = $MODNAME."-".$version_number) =~ s/\./_/g; + +$CVSCOM = 'cvs'; +$COM = qq/$CVSCOM commit -m'$TAO_VERSION' $VERSION $CHANGELOG && $CVSCOM rtag $version_tag $MODNAME/; +print $COM; +system $COM; + +#unlink @inplace; + + diff --git a/TAO/tao/strategy_T.cpp b/TAO/tao/strategy_T.cpp new file mode 100644 index 00000000000..e47a8472046 --- /dev/null +++ b/TAO/tao/strategy_T.cpp @@ -0,0 +1,56 @@ +// ============================================================================ +// +// = FILENAME +// strategy_T.cpp +// +// = AUTHOR +// Chris Cleeland +// +// = VERSION +// $Id$ +// ============================================================================ + +#include "tao/strategy_T.h" + +#if !defined (__ACE_INLINE__) +#include "tao/strategy_T.i" +#endif /* __ACE_INLINE__ */ + +template <class SH> int +TAO_Reactive_Strategy<SH>::activate_svc_handler (SH *svc_handler, void *arg) +{ + ACE_TRACE ("ACE_Reactive_Strategy<SVC_HANDLER>::activate_svc_handler"); + + ACE_Reactor *r = TAO_ORB_Core_instance ()->reactor (); + + int result = 0; + + if (r == 0) + result = -1; + + // Register with the Reactor with the appropriate <mask>. + else if (r->register_handler (svc_handler, this->mask_) == -1) + result = -1; + + // If the implementation of the reactor uses event associations + else if (r->uses_event_associations ()) + { + // If we don't have non-block on, it won't work with + // WFMO_Reactor + // This maybe too harsh + // if (!ACE_BIT_ENABLED (this->flags_, ACE_NONBLOCK)) + // goto failure; + if (svc_handler->open ((void *) this) != -1) + return 0; + else + result = -1; + } + else + // Call up to our parent to do the SVC_HANDLER initialization. + return this->inherited::activate_svc_handler (svc_handler, arg); + + if (result == -1) + svc_handler->close (0); + + return result; +} diff --git a/TAO/tao/strategy_T.h b/TAO/tao/strategy_T.h new file mode 100644 index 00000000000..c9afa9d9c88 --- /dev/null +++ b/TAO/tao/strategy_T.h @@ -0,0 +1,44 @@ +// This may look like C, but it's really -*- C++ -*- +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO +// +// = FILENAME +// strategy_T.h +// +// = AUTHOR +// Chris Cleeland +// +// ============================================================================ + +#if !defined (TAO_STRATEGY_T_H) +# define TAO_STRATEGY_T_H + +#include "ace/Strategies_T.h" + +template <class SH> +class TAO_Reactive_Strategy : public ACE_Reactive_Strategy<SH> +{ +public: + TAO_Reactive_Strategy (void); + ~TAO_Reactive_Strategy (void); + + virtual int activate_svc_handler (SH *sh, void *arg); +}; + +#if defined (__ACE_INLINE__) +#include "tao/strategy_T.i" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "tao/strategy_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("strategy_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif /* TAO_STRATEGY_T_H */ diff --git a/TAO/tao/strategy_T.i b/TAO/tao/strategy_T.i new file mode 100644 index 00000000000..f5d1dba232a --- /dev/null +++ b/TAO/tao/strategy_T.i @@ -0,0 +1,21 @@ +// ============================================================================ +// +// = FILENAME +// strategy_T.i +// +// = AUTHOR +// Chris Cleeland +// +// = VERSION +// $Id$ +// ============================================================================ + + +template <class SH> ACE_INLINE +TAO_Reactive_Strategy<SH>::TAO_Reactive_Strategy (void) +{} + +template <class SH> ACE_INLINE +TAO_Reactive_Strategy<SH>::~TAO_Reactive_Strategy (void) +{} + diff --git a/TAO/tests/Cubit/TAO/IDL_Cubit/tmplinst.cpp b/TAO/tests/Cubit/TAO/IDL_Cubit/tmplinst.cpp new file mode 100644 index 00000000000..0d0db7963f6 --- /dev/null +++ b/TAO/tests/Cubit/TAO/IDL_Cubit/tmplinst.cpp @@ -0,0 +1,15 @@ +// +// $Id$ +// + +// The contents of this file REALLY should be generated by the IDL +// compiler, but that functionality isn't available yet. + +#include "cubitC.h" + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class TAO_Unbounded_Sequence<long>; +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate TAO_Unbounded_Sequence<long> +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + diff --git a/TAO/tests/Cubit/TAO/MT_Cubit/tmplinst.cpp b/TAO/tests/Cubit/TAO/MT_Cubit/tmplinst.cpp new file mode 100644 index 00000000000..0d0db7963f6 --- /dev/null +++ b/TAO/tests/Cubit/TAO/MT_Cubit/tmplinst.cpp @@ -0,0 +1,15 @@ +// +// $Id$ +// + +// The contents of this file REALLY should be generated by the IDL +// compiler, but that functionality isn't available yet. + +#include "cubitC.h" + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class TAO_Unbounded_Sequence<long>; +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate TAO_Unbounded_Sequence<long> +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + |