summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLogs/TAO-2_4_7283
-rw-r--r--TAO/NEWS2
-rw-r--r--TAO/PROBLEM-REPORT-FORM4
-rw-r--r--TAO/VERSION2
-rw-r--r--TAO/bin/tao_orb_tests.lst7
-rw-r--r--TAO/docs/cec_options.html8
-rw-r--r--TAO/docs/documentation.html2
-rw-r--r--TAO/docs/releasenotes/PSS.html2
-rw-r--r--TAO/docs/releasenotes/TODO.html4
-rw-r--r--TAO/docs/releasenotes/amh.html77
-rw-r--r--TAO/docs/releasenotes/ec.html1
-rw-r--r--TAO/docs/releasenotes/index.html21
-rw-r--r--TAO/docs/releasenotes/orbcore.html1
-rw-r--r--TAO/docs/rtcorba/architecture.html1
-rw-r--r--TAO/docs/rtcorba/faq.html2
-rw-r--r--TAO/docs/rtcorba/features.html4
-rw-r--r--TAO/docs/rtcorba/issues.html2
-rw-r--r--TAO/docs/rtcorba/omg_issues.html4
-rw-r--r--TAO/docs/rtcorba/status.html2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Activator_Options.cpp8
-rw-r--r--TAO/tao/Connector_Registry.cpp37
-rw-r--r--TAO/tao/Object.cpp5
-rw-r--r--TAO/tao/Strategies/SHMIOP_Acceptor.cpp15
-rw-r--r--TAO/tao/Strategies/SHMIOP_Connector.cpp9
-rw-r--r--TAO/tao/Synch_Invocation.cpp20
-rw-r--r--TAO/tao/Version.h8
-rw-r--r--TAO/tests/SHMIOP/SHMIOP_Test.mpc11
-rw-r--r--TAO/tests/SHMIOP/Test.idl9
-rw-r--r--TAO/tests/SHMIOP/run_test.pl84
-rw-r--r--TAO/tests/SHMIOP/run_test_collocated.pl40
-rw-r--r--TAO/tests/SHMIOP/shmiop_test.cpp126
-rw-r--r--TAO/tests/SHMIOP/static_shmiop.conf1
32 files changed, 672 insertions, 130 deletions
diff --git a/TAO/ChangeLogs/TAO-2_4_7 b/TAO/ChangeLogs/TAO-2_4_7
new file mode 100644
index 00000000000..65d37fbae34
--- /dev/null
+++ b/TAO/ChangeLogs/TAO-2_4_7
@@ -0,0 +1,283 @@
+commit b1228f4bfd1be92b1590de65fe49c8511c2b71e1
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Tue Mar 13 10:58:36 2018 -0500
+
+ TAO test list: mark tests that won't run with CORBA/e compact
+
+commit 5a4a08e16062d6ecbf0e599fc2bdb26f103e72d3
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Mon Mar 12 11:19:23 2018 -0500
+
+ TAO NEWS for shmiop change
+
+commit 66e84f43246a74b1efadf60ff7aef1146a853c98
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Tue Mar 6 11:06:41 2018 -0600
+
+ Bug 1220 fix applied to SHMIOP (fixed for IIOP long ago).
+
+ Also added a SHMIOP test, IPv6 compatibility, and fixed wrong indent in Synch_Invocation.cpp.
+
+commit 71a517bfb38858939cecc4e021dc3805663ff07a
+Merge: 7aadef4fc59 d4c520ce4cf
+Author: Adam Mitz <mitza@objectcomputing.com>
+Date: Mon Feb 26 14:12:55 2018 -0600
+
+ Merge pull request #582 from mitza-oci/master
+
+ NEWS for upcoming release
+
+commit d4c520ce4cf5fc14aa296936e6c80cccbc12757e
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Mon Feb 26 11:24:58 2018 -0600
+
+ NEWS for upcoming release
+
+commit 73307efb832657d40b3c39492a2c4ae4b0b47762
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Mon Feb 26 18:20:26 2018 +0100
+
+ Doxygen fixes and fixed some typos
+
+ * TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedEventChannel.h:
+ * TAO/orbsvcs/orbsvcs/Naming/Hash_Naming_Context.h:
+ * TAO/orbsvcs/orbsvcs/Naming/Naming_Context_Interface.h:
+ * TAO/orbsvcs/orbsvcs/Naming/Storable_Naming_Context.h:
+ * TAO/tests/Bug_2953_Regression/client.cpp:
+ * TAO/tests/Bug_2953_Regression/server.cpp:
+ * TAO/tests/Smart_Proxies/Benchmark/client.cpp:
+ * TAO/tests/Smart_Proxies/Policy/client.cpp:
+ * TAO/tests/Smart_Proxies/client.cpp:
+
+commit dded6e0e48ee7e1c6c39240d60fb0b3111ceddf2
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Fri Feb 23 09:05:06 2018 +0100
+
+ TAO/tests/Bug_3940_Regression/test.idl
+ - Address issue #571 comment by jwillemsen: Disable content of IDL file
+ for Borland C++ Builder. The cpp32 preprocessor apparently strips out
+ all @ characters which inhibits processing of annotations.
+
+commit 35218a474eeb88b4288df227a98f04cbf0865f8b
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Sun Feb 18 02:30:07 2018 +0100
+
+ Address https://github.com/DOCGroup/ACE_TAO/issues/571 :
+ Shift handling of annotation applications from lexer to parser.
+
+ TAO/TAO_IDL/fe/idl.ll
+ - Remove rule matching annotation applications.
+
+ TAO/TAO_IDL/fe/idl.ypp
+ - Define %type <idval> defining_id.
+ - Duplicate rule `id' as defining_id.
+ In defining_id allow for annotation applications.
+ - Substitute `id' by defining_id in following rules:
+ template_module_ref, template_module_inst, interface_decl, value_decl,
+ const_dcl, simple_declarator, struct_decl, union_decl, enum_type,
+ array_declarator, exception, component_forward_decl, component_header,
+ home_header, factory_decl, finder_decl, event_concrete_forward_decl,
+ event_abs_forward_decl, event_abs_header, event_custom_header,
+ event_plain_header.
+ - Allow for annotation applications in following rules:
+ definitions, at_least_one_definition, tpl_definitions, member_i,
+ case_branch, case_labels, enumerator, operation, init_decl,
+ porttype_decl, at_least_one_actual_parameter, actual_parameters,
+ connector_header.
+ - New rule `annotations' implements sequence of 0 or more annotation_appl.
+ - New rules annotation_appl, annotation_appl_params, annotation_appl_param
+ implement rules 225, 226, 227 from IDL 4.2 section 7.4.15.3.
+ - New rule at_least_one_annotation_appl_param implements 2nd alternative
+ on RHS of rule 226.
+ - New rule annotation_appl_named_params is auxiliary to
+ at_least_one_annotation_appl_param.
+ It implements a sequence of 0 or more annotation_appl_param.
+
+ TAO/TAO_IDL/fe/idl.yy.cpp
+ - Regenerate from idl.ll using TAO/TAO_IDL/regen.sh with flex-2.6.4.
+
+ TAO/TAO_IDL/fe/idl.tab.cpp
+ - Regenerate from idl.ypp using TAO/TAO_IDL/regen.sh with bison-3.0.2.
+
+commit cb29bd46571e428d1d71c860ec9010d29a3a1fe4
+Merge: 4665969af11 d14029823bf
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Feb 16 16:05:33 2018 +0100
+
+ Merge pull request #573 from jwillemsen/jwi-taoidlleak
+
+ Add new C++ compiler test for testing a feature TAO is using
+
+commit 4473a426454c16a2d7af7328778369d603d701ca
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Feb 16 10:23:41 2018 +0100
+
+ Fixed typo in comment
+
+ * TAO/tests/Bug_3683_Regression/Simple_util.h:
+
+commit 0b1e33835dcdb9397c9eeb23eef5db53908d87e0
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Feb 16 10:23:28 2018 +0100
+
+ Convert to doxygen style comments
+
+ * TAO/tests/Bug_3683_Regression/Echo.idl:
+
+commit 4665969af11545a831900244fd4ac6fa6f30a155
+Merge: cbb40b5f6f2 c8d9edf5117
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Thu Feb 15 10:32:39 2018 +0100
+
+ Merge pull request #572 from jwillemsen/jwi-taoidlleak
+
+ Fixed memory leak when we have a wstrval
+
+commit c8d9edf5117f6aa7334bd63e351e816d4946aece
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Feb 13 19:23:59 2018 +0100
+
+ Fixed memory leak when we have a wstrval
+
+ * TAO/TAO_IDL/ast/ast_expression.cpp:
+
+commit e1f507ba668b0373e2ef3ab6fb74a9f792374fb3
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Sun Feb 4 19:43:06 2018 +0100
+
+ Followup to commit 3f751cb addresses
+ https://github.com/DOCGroup/ACE_TAO/pull/567#issuecomment-360504123 ,
+
+ > [...] the Solaris/SunCC build failed because its preprocessor splits
+ > the @ from the following token:
+ >
+ > $ echo '@foo' > /tmp/foo.c && /opt/compilers/suncc5.12/bin/CC -E \
+ > /tmp/foo.c && rm /tmp/foo.c
+ > #1 "/tmp/foo.c"
+ > @ foo
+
+ TAO/TAO_IDL/fe/idl.ll
+ - Modify the rule matching annotations to include an optional space
+ after the '@',
+ @ ?[A-Za-z][A-Za-z0-9_]*[ \t]*(\([^)]+\))?
+
+commit be871ac59565386b582b41e48ef129d509c354fc
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Wed Jan 24 22:24:13 2018 +0100
+
+ Followup to PR #565: Address new conversion warning at
+ http://buildlogs.remedy.nl/win_msvc15_opendds_debug/index.html ,
+ > fe\idl.yy.cpp(1383): warning C4267: 'argument': conversion from
+ > 'size_t' to 'int'
+
+ TAO/TAO_IDL/tao_idl_fe.mpc rule lex.yy
+ - In the sed regexes, replace the fread related substitution by an
+ #include <errno.h> substitution.
+ As a marginal cosmetic improvement, adjust the tab substitution
+ to produce 4 spaces per tab.
+ - In the error message of the else-part, increase the minimum required
+ flex version to 2.6.4.
+
+ TAO/TAO_IDL/fe/idl.yy.cpp
+ - Regenerate using regen.sh with flex 2.6.4.
+
+commit a2f4310d1beb46927e396cbfb1f563abf390eb8f
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Fri Jan 19 21:43:43 2018 +0100
+
+ Follow suggestion by mitza-oci at
+ https://github.com/DOCGroup/ACE_TAO/pull/565 :
+ > Since it's a compile-only test, it shouldn't need a run_test.pl or a
+ > test.cpp (build a library instead of an executable).
+
+ TAO/tests/Bug_3940_Regression/Bug_3940_Regression.mpc
+ - Change superproject to taolib_with_idl.
+ - Remove exename and Source_Files.
+
+ TAO/tests/Bug_3940_Regression/test.cpp
+ TAO/tests/Bug_3940_Regression/run_test.pl
+ - Remove files.
+
+commit 383454e6ee7d814cbfa3e1758f506a90f96b7d13
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Wed Jan 17 22:01:45 2018 +0100
+
+ * TAO/tests/Bug_3940_Regression :
+ New test verifies that tao_idl tolerates IDL4 annotations.
+
+commit 3f751cb31255f9916a5b5ec31f572f4aa1758c96
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Tue Jan 16 22:09:36 2018 +0100
+
+ http://bugzilla.dre.vanderbilt.edu/show_bug.cgi?id=3940#c4
+ Attachment 1524: Patch to make tao_idl ignore IDL4 annotations
+
+ TAO/TAO_IDL/fe/idl.ll
+ - Add rule @[A-Za-z][A-Za-z0-9_]*[ \t]*(\([^)]+\))? with action "break".
+
+ TAO/TAO_IDL/fe/idl.tab.cpp
+ TAO/TAO_IDL/fe/idl.tab.hpp
+ TAO/TAO_IDL/fe/idl.yy.cpp
+ - In directory TAO/TAO_IDL execute script regen.sh using flex 2.6.0 and
+ bison 3.0.2.
+
+ TAO/TAO_IDL/fe/idl.ypp
+ - Fix typo in comment.
+
+commit 2a2491926e1a1e044da01f979dcaa4e1e2032c51
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Mon Jan 15 18:14:06 2018 +0100
+
+ Removed reference to CIAO, moved to a separate repo, added msvc 14.1 (Visual Studio 2017)
+
+ * TAO/TAO-INSTALL.html:
+
+commit 57a3da79bd35109aadaa74110f58440e4a5eab86
+Author: Oliver Kellogg <okellogg@users.sourceforge.net>
+Date: Fri Jan 12 00:03:25 2018 +0100
+
+ - In section "Building and Installing TAO from git", mention that the
+ ACE_ROOT and TAO_ROOT env vars are set different from ACE_wrappers.
+ - Fix a few typos.
+ - Add a few missing </LI> tags.
+
+commit 6fbf5788f0589ae7cde5448baeda0d6e9b1bfc79
+Merge: ac9ffb65e75 4ac686684c6
+Author: Adam Mitz <mitza@objectcomputing.com>
+Date: Tue Jan 2 09:36:50 2018 -0600
+
+ Merge pull request #555 from mitza-oci/singleton-restart
+
+ ACE_Singleton should work after ACE::fini, ACE::init (fixes issue #554)
+
+commit dff4439b18379b9008ee696303be492d84d794dd
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Mon Jan 1 11:24:13 2018 +0100
+
+ Updated copyright to 2018
+
+ * ACE/tests/ACE.bsp:
+ Deleted, not used anymore
+
+ * ACE/COPYING:
+ * TAO/COPYING:
+
+commit 5bbbaacd283951886642a5113300f0c0543e51c0
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Thu Dec 21 10:18:10 2017 -0600
+
+ fixed issue #554 ACE_Singleton use after ACE::fini, ACE::init
+
+commit 52618c6f2a83446eb15ecd95e98e9d178a013d47
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Dec 8 09:38:58 2017 +0100
+
+ Make ACE 6.4.6 and TAO 2.4.6 public
+
+ * ACE/NEWS:
+ * ACE/bin/diff-builds-and-group-fixed-tests-only.sh:
+ * ACE/debian/debian.control:
+ * ACE/docs/Download.html:
+ * ACE/docs/bczar/bczar.html:
+ * ACE/etc/index.html:
+ * TAO/NEWS:
diff --git a/TAO/NEWS b/TAO/NEWS
index 0ed87bd8d9c..f63639663a2 100644
--- a/TAO/NEWS
+++ b/TAO/NEWS
@@ -3,6 +3,8 @@ USER VISIBLE CHANGES BETWEEN TAO-2.4.6 and TAO-2.4.7
. TAO_IDL parses and discards IDLv4 annotations (applying, not defining)
+. Fixed Bug 1220 as it applies to the SHMIOP transport.
+
USER VISIBLE CHANGES BETWEEN TAO-2.4.5 and TAO-2.4.6
====================================================
diff --git a/TAO/PROBLEM-REPORT-FORM b/TAO/PROBLEM-REPORT-FORM
index 7d6bc051567..de278b594bf 100644
--- a/TAO/PROBLEM-REPORT-FORM
+++ b/TAO/PROBLEM-REPORT-FORM
@@ -40,8 +40,8 @@
To: tao-bugs@list.isis.vanderbilt.edu
Subject: [area]: [synopsis]
- TAO VERSION: 2.4.6
- ACE VERSION: 6.4.6
+ TAO VERSION: 2.4.7
+ ACE VERSION: 6.4.7
HOST MACHINE and OPERATING SYSTEM:
If on Windows based OS's, which version of WINSOCK do you
diff --git a/TAO/VERSION b/TAO/VERSION
index b1072b15d50..96091bea5bb 100644
--- a/TAO/VERSION
+++ b/TAO/VERSION
@@ -1,4 +1,4 @@
-This is TAO version 2.4.6, released Fri Dec 08 08:48:59 CET 2017
+This is TAO version 2.4.7, released Fri Mar 16 08:05:28 CET 2018
If you have any problems with or questions about TAO, please send
e-mail to the TAO mailing list (tao-bugs@list.isis.vanderbilt.edu),
diff --git a/TAO/bin/tao_orb_tests.lst b/TAO/bin/tao_orb_tests.lst
index fc10728010b..6e087048ee9 100644
--- a/TAO/bin/tao_orb_tests.lst
+++ b/TAO/bin/tao_orb_tests.lst
@@ -203,12 +203,12 @@ TAO/tests/Bug_3919_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MI
TAO/tests/Bug_3926_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS
TAO/tests/Bug_3941_Regression/run_test.pl: !CORBA_E_MICRO
TAO/tests/Bug_3942_Regression/run_test.pl: !FIXED_BUGS_ONLY
-TAO/tests/Bug_3953_Regression/run_test.pl: !CORBA_E_MICRO
+TAO/tests/Bug_3953_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/Bug_3954_Regression/run_test.pl:
TAO/tests/Bug_4010_Regression/run_test.pl:
TAO/tests/Bug_4059_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/Bug_4082_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
-TAO/tests/Bug_4097_Regression/run_test.pl: !CORBA_E_MICRO
+TAO/tests/Bug_4097_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRRO
TAO/tests/DIOP/run_test.pl: !ST !NO_DIOP !ACE_FOR_TAO !CORBA_E_MICRO
TAO/tests/DIOP/run_test_ipv6.pl: IPV6 !ST !NO_DIOP !ACE_FOR_TAO !CORBA_E_MICRO
TAO/tests/RTCORBA/Activate_Object_Multiple_ORBs/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST
@@ -267,6 +267,9 @@ TAO/tests/No_Server_MT_Connect_Test/run_test.pl: !ST !MINIMUM !CORBA_E_COMPACT !
TAO/tests/Connect_Strategy_Test/run_test.pl:
# DISABLED TAO/tests/Client_Leaks/run_test.pl: !VxWorks !ST !Tru64
TAO/tests/Server_Leaks/run_test.pl: !ANDROID
+TAO/tests/SHMIOP/run_test_collocated.pl: !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
+TAO/tests/SHMIOP/run_test.pl: !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
+TAO/tests/SHMIOP/run_test.pl with_collocated: !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/Smart_Proxies/Policy/run_test.pl:
TAO/tests/Smart_Proxies/run_test.pl:
TAO/tests/Smart_Proxies/dtor/run_test.pl:
diff --git a/TAO/docs/cec_options.html b/TAO/docs/cec_options.html
index e91ac919a4e..1e5db2f4db5 100644
--- a/TAO/docs/cec_options.html
+++ b/TAO/docs/cec_options.html
@@ -452,13 +452,5 @@ static CEC_Factory "-CECDispatching reactive ....."
<P><HR><P>
Back to the TAO <A HREF="index.html">components documentation</A>.
-
- <!--#include virtual="/~schmidt/cgi-sig.html" -->
-
- <address><a href="mailto:coryan@cs.wustl.edu">Carlos O'Ryan</a></address>
-<!-- Created: Thu Jul 1 21:44:28 CDT 1999 -->
-<!-- hhmts start -->
-Last modified: Fri Apr 20 15:24:09 CDT 2001
-<!-- hhmts end -->
</body>
</html>
diff --git a/TAO/docs/documentation.html b/TAO/docs/documentation.html
index 39e70620173..38bfe9d57db 100644
--- a/TAO/docs/documentation.html
+++ b/TAO/docs/documentation.html
@@ -25,7 +25,7 @@ bgcolor="#ffffff">
<dt> <img alt="o" src="redball.gif"> <a HREF="http://www.theaceorb.com/product/index.html">OCI TAO Developer's Guide</a> </dt><P>
- <dt> <img alt="o" src="redball.gif"> <a HREF="http://www.remedy.nl/opensource/corbapg.html">Remedy TAO Programmer's Guide</a> </dt><P>
+ <dt> <img alt="o" src="redball.gif"> <a HREF="https://www.remedy.nl/opensource/corbapg.html">Remedy IT CORBA Programmer's Guide</a> </dt><P>
<dt> <img alt="o" src="redball.gif"> <a HREF="orbsvcs.html">Online ORB Services Documentation</a> </dt><P>
diff --git a/TAO/docs/releasenotes/PSS.html b/TAO/docs/releasenotes/PSS.html
index 6b021fe8e06..de4907bf3ea 100644
--- a/TAO/docs/releasenotes/PSS.html
+++ b/TAO/docs/releasenotes/PSS.html
@@ -15,7 +15,7 @@
<p>Last Update: 2002/07/29 </p>
</center>
- <p>Persistent State Service (PSS) desribes a way of making a
+ <p>Persistent State Service (PSS) describes a way of making a
service persistent. The fact that PSS is being used by a
service is known only to the service (server) and not to the
client which makes use of the service. PSS presents persistent
diff --git a/TAO/docs/releasenotes/TODO.html b/TAO/docs/releasenotes/TODO.html
index 75e33df01e6..65e12cbc427 100644
--- a/TAO/docs/releasenotes/TODO.html
+++ b/TAO/docs/releasenotes/TODO.html
@@ -17,10 +17,6 @@
Bugzilla
</A> now.
</P>
- <P>
- Last Updated: $Date$ $Revision$
- </P>
-
<HR>
<P>Back to the TAO <A HREF="../index.html">documentation index</A>.&nbsp;<!--#include virtual="/~schmidt/cgi-sig.html" -->
diff --git a/TAO/docs/releasenotes/amh.html b/TAO/docs/releasenotes/amh.html
index 141d1a4eabe..556692c3d16 100644
--- a/TAO/docs/releasenotes/amh.html
+++ b/TAO/docs/releasenotes/amh.html
@@ -9,11 +9,10 @@
<h3>TAO's Asynchronous Method Handling (AMH) Feature</h3>
Point of contact: <a href="mailto:coryan@uci.edu">Carlos O'Ryan, </a>
<a href="mailto:mayur@ics.uci.edu">Mayur Deshpande</a>
- <h4>Last Updated: $Date$</h4>
- <p> The purpose of this document is to provide a guide to using the AMH
-capability available in TAO. This capability is not specified by any
-CORBA specification (as of date). This document lists the motivation for AMH,
+ <p> The purpose of this document is to provide a guide to using the AMH
+capability available in TAO. This capability is not specified by any
+CORBA specification (as of date). This document lists the motivation for AMH,
how to use it and its current implementation status. </p>
<HR SIZE=4 WIDTH="100%">
@@ -21,42 +20,42 @@ how to use it and its current implementation status. </p>
<h3>Context</h3>
For many types of distributed systems, the CORBA asynchronous method
-invocation
-<a href="index.html/#ami"> (AMI) </a>
-mechanism can improve concurrency, scalability, and
-responsiveness significantly. AMI allows clients to invoke multiple
+invocation
+<a href="index.html/#ami"> (AMI) </a>
+mechanism can improve concurrency, scalability, and
+responsiveness significantly. AMI allows clients to invoke multiple
two-way requests without waiting for responses. The time normally
spent waiting for replies can therefore be used to perform other
-useful work. The TAO asynchronous method handling (AMH) is a
-mechanism, which extends the concepts of AMI from clients to
-servers. Servers with AMH capability can return immediately
-from (potentially) long, blocking requests. This makes the
-servers capable of higher throughput. For a detailed description
-for the motivation and potential use-cases of AMH, please refer to
+useful work. The TAO asynchronous method handling (AMH) is a
+mechanism, which extends the concepts of AMI from clients to
+servers. Servers with AMH capability can return immediately
+from (potentially) long, blocking requests. This makes the
+servers capable of higher throughput. For a detailed description
+for the motivation and potential use-cases of AMH, please refer to
<a href="http://www.cs.wustl.edu/~schmidt/PDF/AMH.pdf">AMH-Motivation. </a>
<HR SIZE=4 WIDTH="100%">
<h3>Using AMH</h3>
-Servers that want to take advantage of AMH capability must use
-AMH-servants derived from AMH-skeletons. Invoking the
+Servers that want to take advantage of AMH capability must use
+AMH-servants derived from AMH-skeletons. Invoking the
<a href="index.html#idl">IDL-Compiler </a>
with the "-GH" option causes the IDL-Compiler to generate
-AMH-skeletons for all interfaces in the ".idl" file. The signatures
-of the AMH-methods differ from the original interfaces as per the
-rules described in
+AMH-skeletons for all interfaces in the ".idl" file. The signatures
+of the AMH-methods differ from the original interfaces as per the
+rules described in
<a href="http://www.cs.wustl.edu/~schmidt/PDF/DOA-02.pdf"">AMH-In-Detail. </a>
-Servants derived from the AMH-skeletons are registered with the POA in the usual manner
-and appear to clients as "normal" servants for the corresponding
-interfaces; Thus even while being transparent to the client, these
-servants are now capable of handling requests asynchronously.
-AMH-servants can be registered in any POA and can intermix with
-"normal" servants in the same POA. The granularity of AMH is at
+Servants derived from the AMH-skeletons are registered with the POA in the usual manner
+and appear to clients as "normal" servants for the corresponding
+interfaces; Thus even while being transparent to the client, these
+servants are now capable of handling requests asynchronously.
+AMH-servants can be registered in any POA and can intermix with
+"normal" servants in the same POA. The granularity of AMH is at
the interface level and not at the method level; Thus for an interface
-compiled with the "-GH" option, all operations in that interface are
+compiled with the "-GH" option, all operations in that interface are
asynchronous. Currently, AMH doesn't work in conjunction with
-<a href="index.html#interceptor">Interceptors </a>
+<a href="index.html#interceptor">Interceptors </a>
and behaviour is undefined if both are used together.
<HR SIZE=4 WIDTH="100%">
@@ -73,7 +72,7 @@ and behaviour is undefined if both are used together.
<li>Generation of AMH ResponseHandlers.</li>
<li>AMH Exceptions.</li>
<li>Fix the narrow method bug for AMH skeletons : Fixed
-<li>Sending intelligent exception codes back to client in case
+<li>Sending intelligent exception codes back to client in case
something nasty happens in the AMH server.</li>
<li>Example of using AMH available at ACE_wrappers/TAO/examples/AMH/Sink_Server.</li>
<li>Test for AMH : ACE_wrappers/TAO/performance-tests/Latency/AMH</li>
@@ -85,17 +84,17 @@ something nasty happens in the AMH server.</li>
<h3>Credits</h3>
-Original idea first proposed by
-<a href="mailto:coryan@uci.edu">Carlos O'Ryan </a>
-and changes to ORB for AMH first attempted by
-<a href="mailto:brucetrask@aol.com">Bruce Trask. </a>
-First go to get the IDL-Compiler to generate AMH code attempted by
-<a href="mailto:brunsch@doc.ece.uci.edu"> Darrell Brunsch. </a>
-ORB changes for AMH as they stand today put in by
-<a href="mailto:mayur@ics.uci.edu">Mayur Deshpande. </a>
-Second go at getting IDL-compiler to generate code attempted by Mayur and
-<a href="mailto:parsons@cs.wustl.edu">Jeff Parsons. </a>
-Getting the IDL-Compiler beast to generate the right AMH code finally
+Original idea first proposed by
+<a href="mailto:coryan@uci.edu">Carlos O'Ryan </a>
+and changes to ORB for AMH first attempted by
+<a href="mailto:brucetrask@aol.com">Bruce Trask. </a>
+First go to get the IDL-Compiler to generate AMH code attempted by
+<a href="mailto:brunsch@doc.ece.uci.edu"> Darrell Brunsch. </a>
+ORB changes for AMH as they stand today put in by
+<a href="mailto:mayur@ics.uci.edu">Mayur Deshpande. </a>
+Second go at getting IDL-compiler to generate code attempted by Mayur and
+<a href="mailto:parsons@cs.wustl.edu">Jeff Parsons. </a>
+Getting the IDL-Compiler beast to generate the right AMH code finally
achieved by Carlos.
<HR SIZE=4 WIDTH="100%">
diff --git a/TAO/docs/releasenotes/ec.html b/TAO/docs/releasenotes/ec.html
index 3a6a3bca6cb..43c142707db 100644
--- a/TAO/docs/releasenotes/ec.html
+++ b/TAO/docs/releasenotes/ec.html
@@ -8,7 +8,6 @@
<H3>TAO's Real-time Event Service</H3>
Point of contact: <A HREF="mailto:jwillemsen@remedy.nl">Johnny Willemsen</A>
- <H4>Last Updated: $Date$</H4>
Documentation for the command line and service configurator
options used to configure the real-time event service is available <A
diff --git a/TAO/docs/releasenotes/index.html b/TAO/docs/releasenotes/index.html
index a529c8898a2..f676bdf3c39 100644
--- a/TAO/docs/releasenotes/index.html
+++ b/TAO/docs/releasenotes/index.html
@@ -185,24 +185,6 @@ Notification Service
</td>
<td VALIGN=TOP>
-<ul>
-<b>CCM Related</b>
-<br><BR>
-<li>
-<a href="../../../CIAO/docs/releasenotes/index.html">CORBA Component Model (CIAO)</a></li>
-<li>
-<a href="../../../CIAO/docs/releasenotes/dance.html">Deployment and
- Configuration Engine (DAnCE)</a></li>
-<li>
-<a href="../../../CIAO/CIDLC/README.html">Component Implementation
-Definition Language Compiler (CIDLC)</a></li>
-<li>
-<a href="../../../CIAO/docs/static_ciao_contents.html">Static Configuration
- Support for Real-Time Platforms</a></li>
-</ul>
-</td>
-
-<td VALIGN=TOP>
</td>
</tr>
</table>
@@ -215,7 +197,7 @@ Definition Language Compiler (CIDLC)</a></li>
</table>
-A complete list of all modifications to TAO is available in the <a href="../../ChangeLog">ChangeLog</a>.
+A complete list of all modifications to TAO is available in the <a href="../../ChangeLogs">ChangeLogs</a>.
<p>
<hr>
<h3>
@@ -2555,6 +2537,5 @@ Need to test local object support more systematically and comprehensively.
<hr>
<p>Back to the TAO <a href="../index.html">documentation index</a>.<!--#include virtual="/~schmidt/cgi-sig.html" -->
-<hr><!-- hhmts start -->Last modified: Thu May 4 13:08:35 UTC 2006<!-- hhmts end -->
</body>
</html>
diff --git a/TAO/docs/releasenotes/orbcore.html b/TAO/docs/releasenotes/orbcore.html
index 611fb321c69..60aad951879 100644
--- a/TAO/docs/releasenotes/orbcore.html
+++ b/TAO/docs/releasenotes/orbcore.html
@@ -23,7 +23,6 @@
Point of contact: <a href="mailto: bala@cs.wustl.edu">Balchandran Natarajan</a>
-<p>Last Update: $Date$</p>
</center>
<!-- ============================================================ -->
diff --git a/TAO/docs/rtcorba/architecture.html b/TAO/docs/rtcorba/architecture.html
index a88c762f940..b160c6fb7cf 100644
--- a/TAO/docs/rtcorba/architecture.html
+++ b/TAO/docs/rtcorba/architecture.html
@@ -112,6 +112,5 @@ and deposit the requests into the right queue for processing.&nbsp;&nbsp;</p>
is an easier design to implement, integrate and test piece-by-piece.</li>
</ul>
<hr>
-<p><i>Last modified: $Date$</i></p>
</body>
</html>
diff --git a/TAO/docs/rtcorba/faq.html b/TAO/docs/rtcorba/faq.html
index ac0ec52cfb4..efd90ea90c7 100644
--- a/TAO/docs/rtcorba/faq.html
+++ b/TAO/docs/rtcorba/faq.html
@@ -33,8 +33,6 @@
<hr>
<i>
-<p>Last modified: $Date$ </i></p>
-
<p>&nbsp;</p>
</body>
</html>
diff --git a/TAO/docs/rtcorba/features.html b/TAO/docs/rtcorba/features.html
index a8d1edc5d3b..c1a16aa8f28 100644
--- a/TAO/docs/rtcorba/features.html
+++ b/TAO/docs/rtcorba/features.html
@@ -208,7 +208,7 @@ ThreadPools are now fully supported. Endpoint priorities are no longer
supported.</li>
<li>
By default dynamic RTCorba threads live forever after they are created.
-When using the <code>RTORBDynamicThreadIdleTimeout</code> from the
+When using the <code>RTORBDynamicThreadIdleTimeout</code> from the
<code>RT_ORB_Loader</code> it
can be specified that the dynamic threads should end after a given
idle time. Timeout must be specified in microseconds, 0 means the threads
@@ -838,7 +838,7 @@ priority</tt>
map the RTCORBA priority to the network priority.
</ul>
<br>
-<i>Last Modified: $Date$</i></dl>
+</dl>
</body>
</html>
diff --git a/TAO/docs/rtcorba/issues.html b/TAO/docs/rtcorba/issues.html
index 9aadf5c3eb6..c94a48f40ef 100644
--- a/TAO/docs/rtcorba/issues.html
+++ b/TAO/docs/rtcorba/issues.html
@@ -225,7 +225,7 @@ the guidelines are followed, of course ;-) )</p>
<i>
-<p>Last modified: $Date$ </i></p>
+</p>
<p></p>
</body>
</html>
diff --git a/TAO/docs/rtcorba/omg_issues.html b/TAO/docs/rtcorba/omg_issues.html
index 33316e69210..381d0d2a840 100644
--- a/TAO/docs/rtcorba/omg_issues.html
+++ b/TAO/docs/rtcorba/omg_issues.html
@@ -25,7 +25,7 @@ Unnecessary <i>ClientProtocolPolicy</i> complexity</h3>
in CORBA 2.4 cautions against defining policies that can be set
in both places:&nbsp;
<blockquote><br>
- If the <b><font FACE="Arial" SIZE="2">Policy </font></b> can be
+ If the <b><font FACE="Arial" SIZE="2">Policy </font></b> can be
used with <b><font FACE="Arial" SIZE="2">POA </font></b>creation
to tune <b><font FACE="Arial" SIZE="2">IOR </font></b>contents
and can also be specified (overridden) in the client, specify how to reconcile the policy's
@@ -98,6 +98,6 @@ provide different semantics or be invalid when used in another ORB, with both
ORBs being compliant with the specification.&nbsp;&nbsp;&nbsp; </p>
<hr>
-<p><i>Last Modified: $Date$</i></p>
+</p>
</body>
</html>
diff --git a/TAO/docs/rtcorba/status.html b/TAO/docs/rtcorba/status.html
index 54be0cc28aa..6bb5549cbc7 100644
--- a/TAO/docs/rtcorba/status.html
+++ b/TAO/docs/rtcorba/status.html
@@ -126,6 +126,6 @@ for their implementation:
<hr>
<i>
-<p>Last modified: $Date$</i></p>
+</p>
</body>
</html>
diff --git a/TAO/orbsvcs/ImplRepo_Service/Activator_Options.cpp b/TAO/orbsvcs/ImplRepo_Service/Activator_Options.cpp
index ecfe8758e38..dcae5824b66 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Activator_Options.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/Activator_Options.cpp
@@ -322,7 +322,7 @@ Activator_Options::load_registry_options ()
// If there aren't any saved parameters, then that's ok.
return 0;
}
- char tmpstr[4096];
+ ACE_TCHAR tmpstr[4096];
DWORD sz = sizeof (tmpstr);
DWORD type = 0;
err = ACE_TEXT_RegQueryValueEx (key, ACE_TEXT("ORBInitOptions"), 0, &type,
@@ -331,7 +331,7 @@ Activator_Options::load_registry_options ()
{
ACE_ASSERT (type == REG_SZ);
tmpstr[sz - 1] = '\0';
- this->cmdline_ = tmpstr;
+ this->cmdline_ = ACE_TEXT_ALWAYS_CHAR(tmpstr);
}
sz = sizeof(tmpstr);
@@ -341,7 +341,7 @@ Activator_Options::load_registry_options ()
{
ACE_ASSERT (type == REG_SZ);
tmpstr[sz - 1] = '\0';
- this->ior_output_file_ = ACE_TEXT_CHAR_TO_TCHAR(tmpstr);
+ this->ior_output_file_ = tmpstr;
}
sz = sizeof(debug_);
@@ -359,7 +359,7 @@ Activator_Options::load_registry_options ()
{
ACE_ASSERT (type == REG_SZ);
tmpstr[sz - 1] = '\0';
- this->name_ = tmpstr;
+ this->name_ = ACE_TEXT_ALWAYS_CHAR(tmpstr);
}
DWORD tmpint = 0;
diff --git a/TAO/tao/Connector_Registry.cpp b/TAO/tao/Connector_Registry.cpp
index 0f828f613b1..8d3d2eece02 100644
--- a/TAO/tao/Connector_Registry.cpp
+++ b/TAO/tao/Connector_Registry.cpp
@@ -165,8 +165,13 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr)
CORBA::ULong tag = 0;
// If there is an error we abort.
- if ((cdr >> tag) == 0)
+ if (!(cdr >> tag))
+ {
+ TAOLIB_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::")
+ ACE_TEXT ("create_profile: Unable to extract tag from CDR stream\n")));
return 0;
+ }
TAO_Connector *connector =
this->get_connector (tag);
@@ -195,7 +200,6 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr)
}
}
-
TAO_Profile *pfile = 0;
ACE_NEW_RETURN (pfile,
TAO_Unknown_Profile (tag,
@@ -203,6 +207,9 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr)
0);
if (pfile->decode (cdr) == -1)
{
+ TAOLIB_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::")
+ ACE_TEXT ("create_profile: Unable to decode unknown profile from CDR stream\n")));
pfile->_decr_refcnt ();
pfile = 0;
}
@@ -217,18 +224,36 @@ TAO_Connector_Registry::create_profile (TAO_InputCDR &cdr)
// ProfileData is encoded as a sequence of octet. So first get the
// length of the sequence.
CORBA::ULong encap_len = 0;
- if ((cdr >> encap_len) == 0)
+ if (!(cdr >> encap_len))
+ {
+ TAOLIB_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::")
+ ACE_TEXT ("create_profile: Unable to extract encapsulated length from CDR stream\n")));
return 0;
+ }
// Create the decoding stream from the encapsulation in the buffer,
// and skip the encapsulation.
TAO_InputCDR str (cdr, encap_len);
- if (str.good_bit () == 0
- || cdr.skip_bytes (encap_len) == 0)
+ if (!str.good_bit () || !cdr.skip_bytes (encap_len))
+ {
+ TAOLIB_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::")
+ ACE_TEXT ("create_profile: Unable to skip encapsulated stream from CDR stream\n")));
return 0;
+ }
+
+ TAO_Profile* profile = connector->create_profile (str);
+
+ if (!profile)
+ {
+ TAOLIB_ERROR ((LM_ERROR,
+ ACE_TEXT ("TAO (%P|%t) - TAO_Connector_Registry::")
+ ACE_TEXT ("create_profile: Connector returned null profile for tag 0x%x\n"), tag));
+ }
- return connector->create_profile (str);
+ return profile;
}
char
diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp
index 3e73ac25c1c..78a7cd0d77c 100644
--- a/TAO/tao/Object.cpp
+++ b/TAO/tao/Object.cpp
@@ -929,9 +929,8 @@ operator>> (TAO_InputCDR& cdr, CORBA::Object*& x)
// profile from the IOR.
TAOLIB_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("TAO (%P|%t) - ERROR: Could not create all ")
- ACE_TEXT ("profiles while extracting object [%d, %d]\n")
- ACE_TEXT ("TAO (%P|%t) - ERROR: reference from the ")
- ACE_TEXT ("CDR stream.\n"),
+ ACE_TEXT ("profiles while extracting object [%d, %d] ")
+ ACE_TEXT ("reference from the CDR stream.\n"),
mp.profile_count (), profile_count),
false);
}
diff --git a/TAO/tao/Strategies/SHMIOP_Acceptor.cpp b/TAO/tao/Strategies/SHMIOP_Acceptor.cpp
index 2a582f8e2a5..83443fd6430 100644
--- a/TAO/tao/Strategies/SHMIOP_Acceptor.cpp
+++ b/TAO/tao/Strategies/SHMIOP_Acceptor.cpp
@@ -153,18 +153,9 @@ TAO_SHMIOP_Acceptor::is_collocated (const TAO_Endpoint *endpoint)
if (endp == 0)
return 0;
- // @@ TODO The following code looks funky, why only the host
- // name is compared? What if there are multiple SHMIOP
- // servers in the same address? Why do SHMIOP_Endpoints keep
- // a INET_Addr but not a MEM_Addr? And why is there no lazy
- // evaluation of IP-addresses for SHMIOP endpoints? Is it
- // because it is always 'localhost'? We need answers to
- // these questions to solve:
- //
- // http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1220
- //
- // The following code is suspec
- // compare the port and sin_addr (numeric host address)
+ if (endp->port () != this->address_.get_port_number ())
+ return 0;
+
return this->address_.same_host (endp->object_addr ());
}
diff --git a/TAO/tao/Strategies/SHMIOP_Connector.cpp b/TAO/tao/Strategies/SHMIOP_Connector.cpp
index bcf909b54ee..3f0532eb050 100644
--- a/TAO/tao/Strategies/SHMIOP_Connector.cpp
+++ b/TAO/tao/Strategies/SHMIOP_Connector.cpp
@@ -96,8 +96,14 @@ TAO_SHMIOP_Connector::set_validate_endpoint (TAO_Endpoint *endpoint)
// Verify that the remote ACE_INET_Addr was initialized properly.
// Failure can occur if hostname lookup failed when initializing the
// remote ACE_INET_Addr.
- if (remote_address.get_type () != AF_INET)
+ switch (remote_address.get_type ())
{
+ case AF_INET:
+#ifdef ACE_HAS_IPV6
+ case AF_INET6:
+#endif
+ break;
+ default:
if (TAO_debug_level > 0)
{
TAOLIB_ERROR ((LM_ERROR,
@@ -111,7 +117,6 @@ TAO_SHMIOP_Connector::set_validate_endpoint (TAO_Endpoint *endpoint)
}
return 0;
-
}
TAO_Transport *
diff --git a/TAO/tao/Synch_Invocation.cpp b/TAO/tao/Synch_Invocation.cpp
index c2159dc9049..5cc60f9ad17 100644
--- a/TAO/tao/Synch_Invocation.cpp
+++ b/TAO/tao/Synch_Invocation.cpp
@@ -126,18 +126,18 @@ namespace TAO
{
if (this->retry_state_ &&
this->retry_state_->forward_on_exception_increment(FOE_TRANSIENT))
- {
- if (TAO_debug_level > 0)
- TAOLIB_DEBUG ((LM_INFO,
- ACE_TEXT ("TAO (%P|%t) - Synch_Twoway_Invocation::")
- ACE_TEXT ("remote_twoway retrying on TRANSIENT ")
- ACE_TEXT ("exception\n")));
- this->retry_state_->next_profile_retry (*this->stub ());
+ {
+ if (TAO_debug_level > 0)
+ TAOLIB_DEBUG ((LM_INFO,
+ ACE_TEXT ("TAO (%P|%t) - Synch_Twoway_Invocation::")
+ ACE_TEXT ("remote_twoway retrying on TRANSIENT ")
+ ACE_TEXT ("exception\n")));
+ this->retry_state_->next_profile_retry (*this->stub ());
#if TAO_HAS_INTERCEPTORS == 1
- s = this->receive_other_interception ();
+ s = this->receive_other_interception ();
#endif /* TAO_HAS_INTERCEPTORS */
- return TAO_INVOKE_RESTART;
- }
+ return TAO_INVOKE_RESTART;
+ }
else
{
// Way back, we failed to find a profile we could connect to.
diff --git a/TAO/tao/Version.h b/TAO/tao/Version.h
index cc44cc260f3..8b48ae5bef1 100644
--- a/TAO/tao/Version.h
+++ b/TAO/tao/Version.h
@@ -4,9 +4,9 @@
#define TAO_MAJOR_VERSION 2
#define TAO_MINOR_VERSION 4
-#define TAO_MICRO_VERSION 6
-#define TAO_BETA_VERSION 6
-#define TAO_VERSION "2.4.6"
-#define TAO_VERSION_CODE 132102
+#define TAO_MICRO_VERSION 7
+#define TAO_BETA_VERSION 7
+#define TAO_VERSION "2.4.7"
+#define TAO_VERSION_CODE 132103
#define TAO_MAKE_VERSION_CODE(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/TAO/tests/SHMIOP/SHMIOP_Test.mpc b/TAO/tests/SHMIOP/SHMIOP_Test.mpc
new file mode 100644
index 00000000000..8ccc71387cc
--- /dev/null
+++ b/TAO/tests/SHMIOP/SHMIOP_Test.mpc
@@ -0,0 +1,11 @@
+project: taoidldefaults, taoserver, strategies {
+ exename = shmiop_test
+
+ IDL_Files {
+ Test.idl
+ }
+
+ Source_Files {
+ shmiop_test.cpp
+ }
+}
diff --git a/TAO/tests/SHMIOP/Test.idl b/TAO/tests/SHMIOP/Test.idl
new file mode 100644
index 00000000000..1f8ff5e7970
--- /dev/null
+++ b/TAO/tests/SHMIOP/Test.idl
@@ -0,0 +1,9 @@
+module Test
+{
+ interface Hello
+ {
+ string get_string ();
+
+ oneway void shutdown ();
+ };
+};
diff --git a/TAO/tests/SHMIOP/run_test.pl b/TAO/tests/SHMIOP/run_test.pl
new file mode 100644
index 00000000000..a4b44408ed5
--- /dev/null
+++ b/TAO/tests/SHMIOP/run_test.pl
@@ -0,0 +1,84 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::TestTarget;
+use strict;
+
+my $status = 0;
+my $debug_level = 0;
+my $cdebug_level = 0;
+my $extra;
+foreach my $i (@ARGV) {
+ if ($i eq '-debug') {
+ $debug_level = 10;
+ }
+ elsif ($i eq '-cdebug') {
+ $cdebug_level = 10;
+ }
+ elsif ($i eq 'with_collocated') {
+ $extra = "-s temp.ior";
+ }
+}
+
+my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n";
+my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n";
+
+my $iorbase = "server.ior";
+my $server_iorfile = $server->LocalFile ($iorbase);
+my $client_iorfile = $client->LocalFile ($iorbase);
+$server->DeleteFile ($iorbase);
+$client->DeleteFile ($iorbase);
+
+my $shm = '-ORBSvcConf static_shmiop.conf -ORBListenEndpoints shmiop://';
+
+my $SV = $server->CreateProcess ("shmiop_test", "-ORBDebugLevel $debug_level $shm -s $server_iorfile");
+my $CL = $client->CreateProcess ("shmiop_test", "-ORBDebugLevel $cdebug_level $shm -c $client_iorfile $extra");
+my $server_status = $SV->Spawn ();
+
+if ($server_status != 0) {
+ print STDERR "ERROR: server returned $server_status\n";
+ exit 1;
+}
+
+if ($server->WaitForFileTimed ($iorbase,
+ $server->ProcessStartWaitInterval ()) == -1) {
+ print STDERR "ERROR: cannot find file <$server_iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+if ($server->GetFile ($iorbase) == -1) {
+ print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+if ($client->PutFile ($iorbase) == -1) {
+ print STDERR "ERROR: cannot set file <$client_iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+my $client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval ());
+
+if ($client_status != 0) {
+ print STDERR "ERROR: client returned $client_status\n";
+ $status = 1;
+}
+
+$server_status = $SV->WaitKill ($server->ProcessStopWaitInterval ());
+
+if ($server_status != 0) {
+ print STDERR "ERROR: server returned $server_status\n";
+ $status = 1;
+}
+
+$server->DeleteFile ($iorbase);
+$client->DeleteFile ($iorbase);
+
+if ($extra ne '') {
+ unlink 'temp.ior';
+}
+
+exit $status;
diff --git a/TAO/tests/SHMIOP/run_test_collocated.pl b/TAO/tests/SHMIOP/run_test_collocated.pl
new file mode 100644
index 00000000000..2a6f251b73a
--- /dev/null
+++ b/TAO/tests/SHMIOP/run_test_collocated.pl
@@ -0,0 +1,40 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::TestTarget;
+use strict;
+
+my $debug_level = 0;
+foreach my $i (@ARGV) {
+ if ($i eq '-debug') {
+ $debug_level = 10;
+ }
+}
+
+my $target = PerlACE::TestTarget::create_target(1) || die "Create target 1 failed\n";
+
+my $iorbase = "server.ior";
+my $server_iorfile = $target->LocalFile ($iorbase);
+$target->DeleteFile ($iorbase);
+
+my $status = 0;
+
+print "Collocated\n\n";
+
+my $shm = '-ORBSvcConf static_shmiop.conf -ORBListenEndpoints shmiop://';
+
+my $SV = $target->CreateProcess ("shmiop_test", "-ORBDebugLevel $debug_level $shm " .
+ "-s $server_iorfile -c $server_iorfile");
+
+my $server = $SV->SpawnWaitKill ($target->ProcessStartWaitInterval ());
+
+if ($server != 0) {
+ print STDERR "ERROR: Collocated test returned $server\n";
+ $status = 1;
+}
+
+$target->DeleteFile ($iorbase);
+
+exit $status;
diff --git a/TAO/tests/SHMIOP/shmiop_test.cpp b/TAO/tests/SHMIOP/shmiop_test.cpp
new file mode 100644
index 00000000000..dfbd3699508
--- /dev/null
+++ b/TAO/tests/SHMIOP/shmiop_test.cpp
@@ -0,0 +1,126 @@
+#include "TestS.h"
+
+#include "tao/Strategies/advanced_resource.h"
+
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_stdio.h"
+#include "ace/SString.h"
+#include "ace/Task.h"
+
+struct Servant : virtual POA_Test::Hello
+{
+ explicit Servant (const CORBA::ORB_var &orb)
+ : orb_ (orb)
+ {}
+
+ char *get_string ()
+ {
+ CORBA::String_var str ("hello");
+ return str._retn ();
+ }
+
+ void shutdown ()
+ {
+ this->orb_->shutdown (0);
+ }
+
+ CORBA::ORB_var orb_;
+};
+
+struct ORBTask : ACE_Task_Base
+{
+ explicit ORBTask (const CORBA::ORB_var &orb)
+ : orb_ (orb)
+ {}
+
+ int svc ()
+ {
+ try
+ {
+ this->orb_->run ();
+ return 0;
+ }
+ catch (const CORBA::Exception &e)
+ {
+ e._tao_print_exception ("Exception caught from ORB::run:");
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR unknown exception caught ")
+ ACE_TEXT ("from ORB::run\n")));
+ }
+ return 1;
+ }
+
+ CORBA::ORB_var orb_;
+};
+
+int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
+
+ ACE_Get_Opt opts (argc, argv, ACE_TEXT ("s:c:"));
+ const ACE_TCHAR *server = 0, *client = 0;
+ for (int o; (o = opts ()) != -1;)
+ {
+ switch (o)
+ {
+ case 's':
+ server = opts.opt_arg ();
+ break;
+ case 'c':
+ client = opts.opt_arg ();
+ break;
+ }
+ }
+
+ Servant srv (orb);
+ ORBTask task (orb);
+
+ if (server)
+ {
+ CORBA::Object_var obj = orb->resolve_initial_references ("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow (obj);
+ PortableServer::POAManager_var pm = poa->the_POAManager ();
+ pm->activate ();
+ Test::Hello_var srv_obj = srv._this ();
+ CORBA::String_var srv_str = orb->object_to_string (srv_obj);
+ FILE *f = ACE_OS::fopen (server, "w");
+ ACE_OS::fputs (srv_str, f);
+ ACE_OS::fclose (f);
+ if (!client)
+ task.activate();
+ }
+
+ if (client)
+ {
+ ACE_CString ior ("file://");
+ ior += ACE_TEXT_ALWAYS_CHAR (client);
+ CORBA::Object_var obj = orb->string_to_object (ior.c_str ());
+ Test::Hello_var hello = Test::Hello::_narrow (obj);
+ CORBA::String_var str = hello->get_string ();
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) - returned <%C>\n"),
+ str.in ()));
+ hello->shutdown ();
+ }
+ else if (server)
+ {
+ task.wait ();
+ }
+
+ orb->destroy ();
+ return 0;
+ }
+ catch (const CORBA::Exception &e)
+ {
+ e._tao_print_exception ("Exception caught:");
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR unknown exception ")
+ ACE_TEXT ("caught in main\n")));
+ }
+ return 1;
+}
diff --git a/TAO/tests/SHMIOP/static_shmiop.conf b/TAO/tests/SHMIOP/static_shmiop.conf
new file mode 100644
index 00000000000..7fac80fcca5
--- /dev/null
+++ b/TAO/tests/SHMIOP/static_shmiop.conf
@@ -0,0 +1 @@
+static Advanced_Resource_Factory "-ORBProtocolFactory SHMIOP_Factory"