summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgokhale <asgokhale@users.noreply.github.com>1998-10-20 15:23:33 +0000
committergokhale <asgokhale@users.noreply.github.com>1998-10-20 15:23:33 +0000
commitc0edd715bc2680861d4fe89d2f2b00a045cf0b2e (patch)
tree9489dc98bd642248230ec6b2899d4a72d39a5fda
parentdf5cb0d477215fffab79e453ce1d3339ce65e35a (diff)
downloadATCD-c0edd715bc2680861d4fe89d2f2b00a045cf0b2e.tar.gz
*** empty log message ***
-rw-r--r--TAO/ChangeLog-98c113
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/cdr_op_cs.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp3
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/cdr_op_cs.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/cdr_op_cs.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/cdr_op_cs.cpp6
-rw-r--r--TAO/TAO_IDL/be/be_visitor_root/cdr_op.cpp12
-rw-r--r--TAO/TAO_IDL/be/be_visitor_root/root.cpp50
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_structure/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typedef/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typedef/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/cdr_op_ch.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/cdr_op_cs.cpp8
-rw-r--r--TAO/orbsvcs/Logging_Service/Logging_Service_i.cpp2
-rw-r--r--TAO/performance-tests/Demux/CodeGen/Makefile361
-rw-r--r--TAO/performance-tests/Demux/CodeGen/README36
-rw-r--r--TAO/performance-tests/Demux/CodeGen/client.cpp95
-rw-r--r--TAO/performance-tests/Demux/CodeGen/codegen.cpp187
-rw-r--r--TAO/performance-tests/Demux/CodeGen/codegen.h128
-rw-r--r--TAO/performance-tests/Demux/CodeGen/debug.cpp70
-rw-r--r--TAO/performance-tests/Demux/CodeGen/demux.cpp42
-rw-r--r--TAO/performance-tests/Demux/CodeGen/gen.cpp177
-rw-r--r--TAO/performance-tests/Demux/CodeGen/gen_names.cpp236
-rw-r--r--TAO/performance-tests/Demux/CodeGen/idl.cpp66
-rw-r--r--TAO/performance-tests/Demux/CodeGen/impl.cpp76
-rw-r--r--TAO/performance-tests/Demux/CodeGen/objcreate.cpp55
-rw-r--r--TAO/performance-tests/Demux/CodeGen/perf.cpp25
-rw-r--r--TAO/performance-tests/Demux/CodeGen/servant_hdr.cpp92
-rw-r--r--TAO/performance-tests/Demux/CodeGen/servant_impl.cpp93
-rw-r--r--TAO/performance-tests/Demux/CodeGen/skel.cpp221
-rw-r--r--TAO/performance-tests/Demux/CodeGen/stub.cpp159
-rw-r--r--TAO/performance-tests/Demux/CodeGen/tao.cpp100
-rw-r--r--TAO/performance-tests/Demux/CodeGen/tao.h28
-rw-r--r--TAO/performance-tests/Demux/Makefile2260
-rw-r--r--TAO/performance-tests/Demux/README82
-rw-r--r--TAO/performance-tests/Demux/client.cpp349
-rw-r--r--TAO/performance-tests/Demux/demux_test_client.cpp491
-rw-r--r--TAO/performance-tests/Demux/demux_test_client.h126
-rw-r--r--TAO/performance-tests/Demux/demux_test_macros.h26
-rw-r--r--TAO/performance-tests/Demux/demux_test_server.cpp370
-rw-r--r--TAO/performance-tests/Demux/demux_test_server.h94
-rw-r--r--TAO/performance-tests/Demux/server.cpp336
64 files changed, 5022 insertions, 1638 deletions
diff --git a/TAO/ChangeLog-98c b/TAO/ChangeLog-98c
index 4791bf85f85..bce8ef8c720 100644
--- a/TAO/ChangeLog-98c
+++ b/TAO/ChangeLog-98c
@@ -1,3 +1,116 @@
+Tue Oct 20 11:17:01 EDT 1998 Aniruddha Gokhale <gokhale@sahyadri.research.bell-labs.com>
+
+ * TAO_IDL/be:
+
+ Introduced a small modification (read hack) so that all the CDR
+ operators are now generated in the *.i file and with the
+ ACE_INLINE keyword. Also, if ACE_INLINE is not defined, then we
+ take care of this by generating the prototypes in the header
+ enclosed within #ifndef .. #define .. #endif statements. This is
+ just a first attempt to reduce fuction call overhead for
+ compiled marshaling operators. However, an elegant solution to
+ do this on a selective basis is needed. At this time, we force
+ all <<, >> operators to be inlined. If the compiler decides not
+ to inline, then we are going to pay a penalty.
+
+ Affected files are:
+
+ be_visitor_root/root.cpp
+ be_visitor_root/cdr_op.cpp
+
+ In addition, I found out that in a number of files, we were
+ tightly coupling the generated code to a specific output stream
+ e.g., the client stubs file. In the above scenario, when I moved
+ the generation of the CDR operators to the inline files in the
+ root.cpp file, I expected all the children nodes to generate
+ code in the inline file. However, since the code for the child
+ nodes were tightly coupled with the client stubs file, it
+ resulted in errors.
+
+ The best way to hide which output stream we are currently
+ dealing with is to use the "stream" accessor of the
+ visitor_context class. The desired stream gets set at the root
+ level and this information is passed to all the children via the
+ context.
+
+ Affected files are:
+
+ be_visitor_array/any_op_ch.cpp
+ be_visitor_array/any_op_cs.cpp
+ be_visitor_array/cdr_op_ch.cpp
+ be_visitor_array/cdr_op_cs.cpp
+ be_visitor_enum/any_op_ch.cpp
+ be_visitor_enum/any_op_cs.cpp
+ be_visitor_enum/cdr_op_ch.cpp
+ be_visitor_enum/cdr_op_cs.cpp
+ be_visitor_exception/any_op_ch.cpp
+ be_visitor_exception/any_op_cs.cpp
+ be_visitor_exception/cdr_op_ch.cpp
+ be_visitor_exception/cdr_op_cs.cpp
+ be_visitor_interface/any_op_ch.cpp
+ be_visitor_interface/any_op_cs.cpp
+ be_visitor_interface/cdr_op_ch.cpp
+ be_visitor_interface/cdr_op_cs.cpp
+ be_visitor_sequence/any_op_ch.cpp
+ be_visitor_sequence/any_op_cs.cpp
+ be_visitor_sequence/cdr_op_ch.cpp
+ be_visitor_sequence/cdr_op_cs.cpp
+ be_visitor_structure/any_op_ch.cpp
+ be_visitor_structure/any_op_cs.cpp
+ be_visitor_structure/cdr_op_ch.cpp
+ be_visitor_structure/cdr_op_cs.cpp
+ be_visitor_typedef/any_op_ch.cpp
+ be_visitor_typedef/any_op_cs.cpp
+ be_visitor_typedef/cdr_op_ch.cpp
+ be_visitor_typedef/cdr_op_cs.cpp
+ be_visitor_union/any_op_ch.cpp
+ be_visitor_union/any_op_cs.cpp
+ be_visitor_union/cdr_op_ch.cpp
+ be_visitor_union/cdr_op_cs.cpp
+
+ * performance-tests/Demux:
+ performance-tests/Demux/CodeGen:
+
+ Completely rewrote the entire test suite using proper ACE
+ programming guidelines. The older version was written to work
+ with the SunSoft's IIOP code. the current one is now fully CORBA
+ compliant and works with TAO.
+
+ A bunch of files have been deleted and new ones added. In
+ particular, we now generate an interface definition and rely on
+ TAO_IDL compiler to generate the stubs and skeletons (rather
+ than we generating them as we did before). In addition, we have
+ added an additional parameter i.e., POA depth.
+
+ Read the README files in both the directories to see how to use
+ this test suite. We need to experiment with this to see how TAo
+ performs.
+
+ Newly added files are:
+
+ ./demux_test_client.{h, cpp}
+ ./demux_test_macros.h
+ ./demux_test_server.{h, cpp}
+ ./CodeGen/codegen.{h, cpp}
+ ./CodeGen/debug.cpp
+ ./CodeGen/demux.cpp
+ ./CodeGen/gen_names.cpp
+ ./CodeGen/idl.cpp
+ ./CodeGen/servant_hdr.cpp
+ ./CodeGen/servant_impl.cpp
+
+ Files removed are:
+
+ ./CodeGen/gen.cpp
+ ./CodeGen/impl.cpp
+ ./CodeGen/objcreate.cpp
+ ./CodeGen/perf.cpp
+ ./CodeGen/impl.cpp
+ ./CodeGen/skel.cpp
+ ./CodeGen/stub.cpp
+ ./CodeGen/tao.{h, cpp}
+
+
Mon Oct 19 21:40:56 1998 David L. Levine <levine@cs.wustl.edu>
* *.h: changed include protection from #if !defined to ifndef.
diff --git a/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp
index f0b06de755e..15237b1baf9 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/any_op_ch.cpp
@@ -48,7 +48,7 @@ be_visitor_array_any_op_ch::visit_array (be_array *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
index 57eb89c29a5..c1517048953 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
@@ -49,7 +49,7 @@ be_visitor_array_any_op_cs::visit_array (be_array *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp
index 2706e25c018..5c32a4dfe7b 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ch.cpp
@@ -48,7 +48,7 @@ be_visitor_array_cdr_op_ch::visit_array (be_array *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator declarations
*os << "CORBA::Boolean " << idl_global->export_macro ()
diff --git a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_cs.cpp
index f4b78d3e14f..9810f6381fd 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_cs.cpp
@@ -54,7 +54,8 @@ be_visitor_array_cdr_op_cs::visit_array (be_array *node)
}
else
{
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
+
be_type *bt; // base type of the array
if (node->cli_stub_cdr_op_gen () || node->imported ())
@@ -78,7 +79,7 @@ be_visitor_array_cdr_op_cs::visit_array (be_array *node)
// set the sub state as generating code for the output operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "inline CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
<< "const " << node->name () << "_forany &_tao_array)" << be_nl
<< "{" << be_idt_nl;
@@ -95,7 +96,7 @@ be_visitor_array_cdr_op_cs::visit_array (be_array *node)
// set the sub state as generating code for the input operator
os->indent ();
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << "_forany &_tao_array)" << be_nl
<< "{" << be_idt_nl;
if (bt->accept (this) == -1)
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp
index 5e79530c2f1..46b3c3013ed 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/any_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_enum_any_op_ch::visit_enum (be_enum *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operators
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
index 5f1ff5c75a5..0434e60667f 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_enum_any_op_cs::visit_enum (be_enum *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp
index 0eec4fe9db9..7c35d00c706 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_ch.cpp
@@ -47,7 +47,8 @@ be_visitor_enum_cdr_op_ch::visit_enum (be_enum *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
+
// generate the CDR << and >> operators
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_cs.cpp
index 13597bffca6..882f9b3019b 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/cdr_op_cs.cpp
@@ -48,17 +48,18 @@ be_visitor_enum_cdr_op_cs::visit_enum (be_enum *node)
if (node->cli_stub_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
+
// generate CDR << and >> operators
os->indent ();
- *os << "inline CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
<< "const " << node->name () << " &_tao_enumval)" << be_nl
<< "{" << be_idt_nl
<< "return strm.write_ulong ((CORBA::ULong) _tao_enumval);" << be_uidt_nl
<< "}\n\n";
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << " &_tao_enumval)" << be_nl
<< "{" << be_idt_nl
<< "CORBA::ULong _tao_temp;" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp
index f444cc73f35..d0c16445b30 100644
--- a/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_exception/any_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_exception_any_op_ch::visit_exception (be_exception *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp
index 8f79aeefe9d..e3a1e857e10 100644
--- a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_ch.cpp
index 41a1b7d3846..1910de4e68e 100644
--- a/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_exception_cdr_op_ch::visit_exception (be_exception *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Cdr <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_cs.cpp
index 228d373fe06..ab7055faf79 100644
--- a/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_exception/cdr_op_cs.cpp
@@ -48,11 +48,11 @@ be_visitor_exception_cdr_op_cs::visit_exception (be_exception *node)
if (node->cli_stub_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// set the sub state as generating code for the output operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "inline CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
<< "const " << node->name () << " &_tao_aggregate)" << be_nl
<< "{" << be_idt_nl;
// do we have any members?
@@ -95,7 +95,7 @@ be_visitor_exception_cdr_op_cs::visit_exception (be_exception *node)
// set the substate as generating code for the input operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << " &_tao_aggregate)" << be_nl
<< "{" << be_idt_nl;
// retrieve the repository ID and compare with what we have
@@ -152,7 +152,7 @@ be_visitor_exception_cdr_op_cs::visit_exception (be_exception *node)
int
be_visitor_exception_cdr_op_cs::post_process (be_decl *bd)
{
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
if (!this->last_node (bd))
{
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp
index edf9ef073be..c80d1932af6 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/any_op_ch.cpp
@@ -48,7 +48,7 @@ be_visitor_interface_any_op_ch::visit_interface (be_interface *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
index c06122bb3fd..0fb0e6da5f2 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
@@ -49,7 +49,7 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_ch.cpp
index 73ed62d13b7..7b4d88f71ca 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_interface_cdr_op_ch::visit_interface (be_interface *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_cs.cpp
index 0b046e455e3..8dbda7af1fe 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/cdr_op_cs.cpp
@@ -48,11 +48,11 @@ be_visitor_interface_cdr_op_cs::visit_interface (be_interface *node)
if (node->cli_stub_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// set the sub state as generating code for the output operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "inline CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
<< "const " << node->name () << "_ptr _tao_objref)" << be_nl
<< "{" << be_idt_nl;
// hand over the encoding to the TAO's internal engine
@@ -80,7 +80,7 @@ be_visitor_interface_cdr_op_cs::visit_interface (be_interface *node)
// set the substate as generating code for the input operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << "_ptr &_tao_objref)" << be_nl
<< "{" << be_idt_nl;
// hand over to the TAO's internal marshaling engine
diff --git a/TAO/TAO_IDL/be/be_visitor_root/cdr_op.cpp b/TAO/TAO_IDL/be/be_visitor_root/cdr_op.cpp
index a7af7e9cebf..08ee3748b79 100644
--- a/TAO/TAO_IDL/be/be_visitor_root/cdr_op.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_root/cdr_op.cpp
@@ -45,6 +45,13 @@ be_visitor_root_cdr_op::~be_visitor_root_cdr_op (void)
int
be_visitor_root_cdr_op::visit_root (be_root *node)
{
+ TAO_OutStream *os = this->ctx_->stream ();
+
+ if (this->ctx_->state () == TAO_CodeGen::TAO_ROOT_CDR_OP_CH)
+ {
+ *os << "#ifndef __ACE_INLINE__\n\n";
+ }
+
// all we have to do is to visit the scope and generate code
if (this->visit_scope (node) == -1)
{
@@ -53,5 +60,10 @@ be_visitor_root_cdr_op::visit_root (be_root *node)
"codegen for scope failed\n"), -1);
}
+ if (this->ctx_->state () == TAO_CodeGen::TAO_ROOT_CDR_OP_CH)
+ {
+ *os << "#endif /* __ACE_INLINE__ */\n\n";
+ }
+
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_root/root.cpp b/TAO/TAO_IDL/be/be_visitor_root/root.cpp
index 0f063a6f715..020b90304f2 100644
--- a/TAO/TAO_IDL/be/be_visitor_root/root.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_root/root.cpp
@@ -70,6 +70,7 @@ int be_visitor_root::visit_root (be_root *node)
//
// XXXASG - this part of the code may be conditionally generated because at
// times it is not necessary to have these operators at all. TO-DO.
+ be_visitor *visitor;
be_visitor_context ctx (*this->ctx_);
switch (this->ctx_->state ())
@@ -86,6 +87,7 @@ int be_visitor_root::visit_root (be_root *node)
return 0;
case TAO_CodeGen::TAO_ROOT_CI:
+ break;
case TAO_CodeGen::TAO_ROOT_SI:
return 0; // nothing to be done
case TAO_CodeGen::TAO_ROOT_SS:
@@ -101,28 +103,32 @@ int be_visitor_root::visit_root (be_root *node)
}
}
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
+ // *ASG* - this is a tempoaray hack soln so that our CDR operators get
+ // generated in the *.i file rather than the *.cpp file
+ if (this->ctx_->state () != TAO_CodeGen::TAO_ROOT_CI)
+ {
+ visitor = tao_cg->make_visitor (&ctx);
+ if (!visitor)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_root::"
+ "visit_root - "
+ "NUL visitor\n"
+ ), -1);
+ }
+
+ // generate the <<= and >>= operators for all the user-defined data types in
+ // the outermost scope
+ if (node->accept (visitor) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_root::"
- "visit_root - "
- "NUL visitor\n"
- ), -1);
+ "visit_root - "
+ "failed to generate Any operators\n"
+ ), -1);
+ }
+ delete visitor;
}
-
- // generate the <<= and >>= operators for all the user-defined data types in
- // the outermost scope
- if (node->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_root::"
- "visit_root - "
- "failed to generate Any operators\n"
- ), -1);
- }
- delete visitor;
-
// make one more pass over the entire tree and generate the CDR << and >>
// operators for compiled marshaling. Again, this code can be conditionally
@@ -134,11 +140,11 @@ int be_visitor_root::visit_root (be_root *node)
case TAO_CodeGen::TAO_ROOT_CH:
ctx.state (TAO_CodeGen::TAO_ROOT_CDR_OP_CH);
break;
- case TAO_CodeGen::TAO_ROOT_CS:
+ case TAO_CodeGen::TAO_ROOT_CI:
ctx.state (TAO_CodeGen::TAO_ROOT_CDR_OP_CS);
break;
case TAO_CodeGen::TAO_ROOT_SH:
- case TAO_CodeGen::TAO_ROOT_CI:
+ case TAO_CodeGen::TAO_ROOT_CS:
case TAO_CodeGen::TAO_ROOT_SI:
case TAO_CodeGen::TAO_ROOT_SS:
return 0; // nothing to be done
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp
index 622c5a566ba..f1223cd7642 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_sequence_any_op_ch::visit_sequence (be_sequence *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operators
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
index dbd0d07badf..7664480dd73 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// Any <<= and >>= operators
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp
index 11e3e211a36..e689f79f608 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_sequence_cdr_op_ch::visit_sequence (be_sequence *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
index 033c259751a..3618cdc7754 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
@@ -54,7 +54,8 @@ be_visitor_sequence_cdr_op_cs::visit_sequence (be_sequence *node)
}
else
{
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
+
be_type *bt; // base type of the sequence
if (node->cli_stub_cdr_op_gen () || node->imported ())
@@ -78,7 +79,7 @@ be_visitor_sequence_cdr_op_cs::visit_sequence (be_sequence *node)
// set the sub state as generating code for the output operator
this->ctx_->sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "inline CORBA::Boolean operator<< (" << be_idt << be_idt_nl
+ *os << "ACE_INLINE CORBA::Boolean operator<< (" << be_idt << be_idt_nl
<< "TAO_OutputCDR &strm," << be_nl
<< "const " << node->name ()
<< " &_tao_sequence" << be_uidt_nl
@@ -105,7 +106,7 @@ be_visitor_sequence_cdr_op_cs::visit_sequence (be_sequence *node)
// set the sub state as generating code for the input operator
os->indent ();
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << " &_tao_sequence)" << be_nl
<< "{" << be_idt_nl;
// first retrieve the length and adjust the sequence length accordingly
diff --git a/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp
index e3fa722bef5..34b3f3210d3 100644
--- a/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_structure/any_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_structure_any_op_ch::visit_structure (be_structure *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
index 641a8f19600..28eff7fed0d 100644
--- a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_ch.cpp
index b81eff78ef1..337601a11d5 100644
--- a/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_structure_cdr_op_ch::visit_structure (be_structure *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp
index 3f836c3e8a7..3c03ee6483e 100644
--- a/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_structure/cdr_op_cs.cpp
@@ -48,11 +48,11 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node)
if (node->cli_stub_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// set the sub state as generating code for the output operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "inline CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
<< "const " << node->name () << " &_tao_aggregate)" << be_nl
<< "{" << be_idt_nl
<< "if (" << be_idt_nl;
@@ -74,7 +74,7 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node)
// set the substate as generating code for the input operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << " &_tao_aggregate)" << be_nl
<< "{" << be_idt_nl
<< "if (" << be_idt_nl;
@@ -112,7 +112,7 @@ be_visitor_structure_cdr_op_cs::visit_structure (be_structure *node)
int
be_visitor_structure_cdr_op_cs::post_process (be_decl *bd)
{
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
if (!this->last_node (bd))
{
diff --git a/TAO/TAO_IDL/be/be_visitor_typedef/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_typedef/any_op_ch.cpp
index 1ce2a21d9c0..fc3d8b8c094 100644
--- a/TAO/TAO_IDL/be/be_visitor_typedef/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typedef/any_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_typedef_any_op_ch::visit_typedef (be_typedef *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_typedef/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_typedef/any_op_cs.cpp
index 87d7215633d..e9a731a8dba 100644
--- a/TAO/TAO_IDL/be/be_visitor_typedef/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typedef/any_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_typedef_any_op_cs::visit_typedef (be_typedef *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
// Any <<= and >>= operators
diff --git a/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_ch.cpp
index d269c48d875..1e12f1a28ec 100644
--- a/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_typedef_cdr_op_ch::visit_typedef (be_typedef *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_cs.cpp
index 26cbbb1f957..cd44a42ad35 100644
--- a/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typedef/cdr_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_typedef_cdr_op_cs::visit_typedef (be_typedef *node)
if (node->cli_stub_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator impls
diff --git a/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp
index 2f46f76a34f..f743a905db8 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/any_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_union_any_op_ch::visit_union (be_union *node)
if (node->cli_hdr_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
index 03c153b0dbe..0ec7a3d4ddf 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
@@ -48,7 +48,7 @@ be_visitor_union_any_op_cs::visit_union (be_union *node)
if (node->cli_stub_any_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the Any <<= and >>= operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_union/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_union/cdr_op_ch.cpp
index e1768bb6b58..2e970cebac2 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/cdr_op_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/cdr_op_ch.cpp
@@ -47,7 +47,7 @@ be_visitor_union_cdr_op_ch::visit_union (be_union *node)
if (node->cli_hdr_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_header ();
+ TAO_OutStream *os = this->ctx_->stream ();
// generate the CDR << and >> operator declarations
os->indent ();
diff --git a/TAO/TAO_IDL/be/be_visitor_union/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union/cdr_op_cs.cpp
index 5ba0ef27a19..48fdbbf9fc8 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/cdr_op_cs.cpp
@@ -48,11 +48,11 @@ be_visitor_union_cdr_op_cs::visit_union (be_union *node)
if (node->cli_stub_cdr_op_gen () || node->imported ())
return 0;
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
// set the sub state as generating code for the output operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "inline CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &strm, "
<< "const " << node->name () << " &_tao_union)" << be_nl
<< "{" << be_idt_nl
<< "return 1;" << be_uidt_nl
@@ -78,7 +78,7 @@ be_visitor_union_cdr_op_cs::visit_union (be_union *node)
// set the substate as generating code for the input operator
this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "inline CORBA::Boolean operator>> (TAO_InputCDR &strm, "
+ *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
<< node->name () << " &_tao_union)" << be_nl
<< "{" << be_idt_nl
<< "return 1;" << be_uidt_nl
@@ -121,7 +121,7 @@ be_visitor_union_cdr_op_cs::visit_union (be_union *node)
int
be_visitor_union_cdr_op_cs::post_process (be_decl *bd)
{
- TAO_OutStream *os = tao_cg->client_stubs ();
+ TAO_OutStream *os = this->ctx_->stream ();
if (!this->last_node (bd))
{
diff --git a/TAO/orbsvcs/Logging_Service/Logging_Service_i.cpp b/TAO/orbsvcs/Logging_Service/Logging_Service_i.cpp
index efc5eabf71e..46c2d716054 100644
--- a/TAO/orbsvcs/Logging_Service/Logging_Service_i.cpp
+++ b/TAO/orbsvcs/Logging_Service/Logging_Service_i.cpp
@@ -115,7 +115,7 @@ Logger_Server::init_naming_service (CORBA::Environment& env)
this->my_name_server_->bind (factory_name,
factory.in (),
env);
- TAO_CHECK_ENV_RETURN (env,-1);
+ TAO_CHECK_ENV_RETURN (env, -1);
return 0;
}
diff --git a/TAO/performance-tests/Demux/CodeGen/Makefile b/TAO/performance-tests/Demux/CodeGen/Makefile
index a0218e3634c..a3a9f58ae5b 100644
--- a/TAO/performance-tests/Demux/CodeGen/Makefile
+++ b/TAO/performance-tests/Demux/CodeGen/Makefile
@@ -8,30 +8,25 @@
# Local macros
#----------------------------------------------------------------------------
-BIN = tao
-LIB = libtao.a
-SHLIB = libtao.$(SOEXT)
+BIN = demux
-FILES = tao \
- gen \
- client \
- stub \
- skel \
- impl \
- perf \
- objcreate
+FILES = demux \
+ codegen \
+ gen_names \
+ debug \
+ idl \
+ servant_hdr \
+ servant_impl \
+ client
-LSRC = $(addsuffix .cpp,$(FILES))
-LOBJ = $(addsuffix .o,$(FILES))
-SHOBJ = $(addsuffix .so,$(FILES))
+SRC = $(addsuffix .cpp, $(FILES))
-LDLIBS = -ltao
-LIBS = -lACE
+LDLIBS = -lACE
VLDLIBS = $(LDLIBS:%=%$(VAR))
#BUILD = $(VLIB) $(VSHLIB) $(SHLIBA) $(VBIN)
-BUILD = $(VSHLIB) $(SHLIBA) $(VBIN)
+BUILD = $(VBIN)
#----------------------------------------------------------------------------
# Include macros and targets
@@ -41,7 +36,7 @@ include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
include $(ACE_ROOT)/include/makeinclude/macros.GNU
include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
+#include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
@@ -56,23 +51,36 @@ CPPFLAGS += -DDEBUG
# DO NOT DELETE THIS LINE -- g++dep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-.obj/tao.o .shobj/tao.so: tao.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
+.obj/demux.o .obj/demux.so .shobj/demux.o .shobj/demux.so: demux.cpp codegen.h \
+ $(ACE_ROOT)/ace/Get_Opt.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -85,26 +93,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/codegen.o .obj/codegen.so .shobj/codegen.o .shobj/codegen.so: codegen.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/gen.o .shobj/gen.so: gen.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -117,26 +156,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/gen_names.o .obj/gen_names.so .shobj/gen_names.o .shobj/gen_names.so: gen_names.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/client.o .shobj/client.so: client.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -149,26 +219,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/debug.o .obj/debug.so .shobj/debug.o .shobj/debug.so: debug.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/stub.o .shobj/stub.so: stub.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -181,26 +282,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/idl.o .obj/idl.so .shobj/idl.o .shobj/idl.so: idl.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/skel.o .shobj/skel.so: skel.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -213,26 +345,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/servant_hdr.o .obj/servant_hdr.so .shobj/servant_hdr.o .shobj/servant_hdr.so: servant_hdr.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/impl.o .shobj/impl.so: impl.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -245,26 +408,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/servant_impl.o .obj/servant_impl.so .shobj/servant_impl.o .shobj/servant_impl.so: servant_impl.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/perf.o .shobj/perf.so: perf.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -277,26 +471,57 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp
+.obj/client.o .obj/client.so .shobj/client.o .shobj/client.so: client.cpp codegen.h \
$(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
-.obj/objcreate.o .shobj/objcreate.so: objcreate.cpp tao.h \
- $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/ACE.h \
$(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
$(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
$(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
$(ACE_ROOT)/ace/OS.i \
$(ACE_ROOT)/ace/Trace.h \
$(ACE_ROOT)/ace/Log_Msg.h \
$(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
$(ACE_ROOT)/ace/Log_Priority.h \
$(ACE_ROOT)/ace/Log_Record.i \
- $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SString.h \
$(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Containers_T.h \
$(ACE_ROOT)/ace/Containers.h \
$(ACE_ROOT)/ace/Containers.i \
- $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
$(ACE_ROOT)/ace/Synch.h \
$(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
$(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
@@ -309,8 +534,26 @@ CPPFLAGS += -DDEBUG
$(ACE_ROOT)/ace/Synch_T.i \
$(ACE_ROOT)/ace/Thread.h \
$(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Singleton.h \
$(ACE_ROOT)/ace/Singleton.i \
- $(ACE_ROOT)/ace/Get_Opt.h \
- $(ACE_ROOT)/ace/Get_Opt.i
+ $(ACE_ROOT)/ace/Singleton.cpp
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/performance-tests/Demux/CodeGen/README b/TAO/performance-tests/Demux/CodeGen/README
index 13fcae3c48f..3f6cb9d2c14 100644
--- a/TAO/performance-tests/Demux/CodeGen/README
+++ b/TAO/performance-tests/Demux/CodeGen/README
@@ -1,12 +1,30 @@
-This directory contains a code generator that will generate stubs and
-skeletons for an interface called "tao_demux". The number of
-operations in this interface is controlled by the -m option to the
-executable "tao".
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// README
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
-Usage:
+This directory contains the code generator for the Demux Test.
-tao -o <num of objs> -m < num of operations>
+Command line options
+
+demux -m <num ops>
+ -o <num objs> (not useful until we add USER_ID policy to the
+ demux server)
+ -p <num POAs>
+
+This will generate an interface definition for the Demux_Test
+interface in a file called "demux_test.idl". The code generator will
+also produce the demux_test_i.{h, cpp} files that implement the
+interface. A "demux_test_client.i" produces some client-side code that
+must be included with the client.
-The stubs and skeletons are for 2-way calls. The operation names and
-object keys are automatically generated and have arbitrary string
-names. \ No newline at end of file
diff --git a/TAO/performance-tests/Demux/CodeGen/client.cpp b/TAO/performance-tests/Demux/CodeGen/client.cpp
index 31ba40da66c..b92e14efb1e 100644
--- a/TAO/performance-tests/Demux/CodeGen/client.cpp
+++ b/TAO/performance-tests/Demux/CodeGen/client.cpp
@@ -1,6 +1,21 @@
// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// client.cpp
+//
+// Generates the client-side include code
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
-#include "tao.h"
+#include "codegen.h"
ACE_RCSID(CodeGen, client, "$Id$")
@@ -8,35 +23,61 @@ ACE_RCSID(CodeGen, client, "$Id$")
// function pointers to the the different operations of the
// interface. Depending on the strategy chosen, we make appropriate calls
-long GenClientCode(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
+int Demux_Test_CodeGenerator::gen_client_incl_code (void)
{
- fstream client_incl;
+ FILE *fp;
+ // client include code
+
int i;
+ if ((fp = ACE_OS::fopen ("demux_test_client.i", "w")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "CodeGen::gen-client_incl_code - "
+ "Failed to open demux_test_client.i "
+ "file for writing\n"),
+ -1);
+ }
+
+
ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (this->op_array_);
+
+ // start with the first element
+ (void)iter.first ();
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_OS::fprintf (fp,
+ "static void %s (Demux_Test_ptr objref, \n"
+ " CORBA::Environment &env)\n",
+ str->c_str ());
+ ACE_OS::fprintf (fp, "{\n");
+ ACE_OS::fprintf (fp, " objref->%s (env);\n", str->c_str ());
+ ACE_OS::fprintf (fp, "}\n\n");
+ (void) iter.advance ();
+ }
+
+ // now generate the method that initilaizes the operation database
+ ACE_OS::fprintf (fp, "int Demux_Test_Client::init_operation_db (void)\n");
+ ACE_OS::fprintf (fp, "{\n");
+
+ i = 0;
+ // start with the first element
+ (void)iter.first ();
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_OS::fprintf (fp, " this->op_db_[%d].op_ = %s;\n",
+ i, str->c_str ());
+ (void) iter.advance ();
+ i++;
+ }
- client_incl.open("client.i", ios::out);
-
- for(i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- client_incl << "void " << str->rep() << "(tao_demux_ptr obj)" << endl;
- client_incl << "{" << endl;
- client_incl << "\tCORBA_Environment env;" << endl << endl;
- client_incl << "\tobj->" << str->rep() << "(env);" << endl;
- client_incl << "}" << endl;
- }
- client_incl << endl;
- client_incl << "static const method_db mtbl[] = {" << endl;
- for (i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- client_incl << "\t" << str->rep() << "," << endl;
- }
- client_incl << "};" << endl << endl;
- client_incl.close();
+ ACE_OS::fprintf (fp, " return 0;\n");
+ ACE_OS::fprintf (fp, "}\n\n");
}
diff --git a/TAO/performance-tests/Demux/CodeGen/codegen.cpp b/TAO/performance-tests/Demux/CodeGen/codegen.cpp
new file mode 100644
index 00000000000..f67c07bd088
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/codegen.cpp
@@ -0,0 +1,187 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-test/Demux/CodeGen
+//
+// = FILENAME
+// codegen.cpp
+//
+// Implements the code generator class
+//
+// = AUTHOR
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, codegen, "$Id$")
+
+Demux_Test_CodeGenerator::Demux_Test_CodeGenerator (void)
+ : num_POAs_ (1), // 1 child POA
+ num_objs_ (1),
+ num_ops_ (1),
+ oneway_ (0),
+ debug_ (0)
+{
+}
+
+Demux_Test_CodeGenerator::~Demux_Test_CodeGenerator (void)
+{
+}
+
+int
+Demux_Test_CodeGenerator::init (int argc, char *argv[])
+{
+ if (this->parse_args (argc, argv) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::init - "
+ "Failed to initialize\n"),
+ -1);
+ }
+ return 0;
+}
+
+int
+Demux_Test_CodeGenerator::parse_args (int argc, char *argv[])
+{
+ // for parsing the arguments
+ ACE_Get_Opt get_opt (argc, argv, "dhm:o:p:u");
+
+ for (int c; (c = get_opt ()) != EOF;)
+ {
+ switch (c)
+ {
+ case 'd':
+ this->debug_ = 1;
+ break;
+ case 'm': // number of operations
+ this->num_ops_ = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'o': // number of object keys
+ this->num_objs_ = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'p': // number of POAs
+ this->num_POAs_ = ACE_OS::atoi (get_opt.optarg);
+ break;
+ case 'u':
+ // unidirectional i.e., oneway operations
+ this->oneway_ = 1;
+ break;
+ case 'h': // usage
+ this->usage ();
+ break;
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Bad option or insufficient arguments\n"));
+ this->usage ();
+ }
+ }
+ return 0;
+}
+
+void
+Demux_Test_CodeGenerator::usage (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "Usage: tao [-m <#operations>] [-o <#objects>] "
+ "[-p <#POAs>] [-h] [-d] [-u]\n"
+ "Default: 1 child POA, 1 operation, 1 object\n"
+ "[-h] dislay this help message\n"
+ "[-d] generate debugging\n"
+ "[-u] generate oenway operations\n"));
+ ACE_OS::exit (0);
+}
+
+int
+Demux_Test_CodeGenerator::run (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "Generating code for %d POAs, %d objects, and %d operations\n",
+ this->num_POAs_,
+ this->num_objs_,
+ this->num_ops_));
+
+
+ // generate the POA names
+ if (this->gen_poa_names () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate POA names\n"),
+ -1);
+ }
+
+ // generate the object names
+ if (this->gen_object_names () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate object names\n"),
+ -1);
+ }
+
+ // generate method names
+ if (this->gen_operation_names () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate operation names\n"),
+ -1);
+ }
+
+ // debugging
+ if (this->debug_)
+ {
+ if (this->print_names () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to print all generated names\n"),
+ -1);
+ }
+ }
+
+ // generate include code for client-side main program
+ if (this->gen_idl_interface () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate IDL interface\n"),
+ -1);
+ }
+
+ // generate the impl header
+ if (this->gen_servant_hdr_code () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate servant header code\n"),
+ -1);
+ }
+
+ // generate impl
+ if (this->gen_servant_impl_code () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate servant impl code\n"),
+ -1);
+ }
+
+ // generate include code for client-side main program
+ if (this->gen_client_incl_code () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::run - "
+ "Failed to generate client code\n"),
+ -1);
+ }
+
+ // success
+ return 0;
+}
+
diff --git a/TAO/performance-tests/Demux/CodeGen/codegen.h b/TAO/performance-tests/Demux/CodeGen/codegen.h
new file mode 100644
index 00000000000..6f684d12673
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/codegen.h
@@ -0,0 +1,128 @@
+#if !defined (TAO_DEMUX_TEST_CODEGEN_H)
+#define TAO_DEMUX_TEST_CODEGEN_H
+
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// codegen.h
+//
+// Defines the code generator class for the Demux_Test
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include <iostream.h>
+#include <fstream.h>
+
+#include "ace/Get_Opt.h"
+#include "ace/SString.h"
+#include "ace/Containers_T.h"
+#include "ace/Singleton.h"
+#include "ace/OS.h"
+
+class Demux_Test_CodeGenerator
+{
+public:
+ Demux_Test_CodeGenerator (void);
+ // ctor
+
+ ~Demux_Test_CodeGenerator (void);
+ // dtor
+
+ int init (int argc, char *argv []);
+ // initialize
+
+ int run (void);
+ // run the various algorithms
+
+private:
+ int parse_args (int argc, char *argv []);
+ // parse arguments
+
+ int gen_poa_names (void);
+ // generate names of POAs
+
+ int gen_object_names (void);
+ // generate object names
+
+ int gen_operation_names (void);
+ // generate operation names
+
+ int gen_idl_interface (void);
+ // generate the IDL interface definition
+
+ int gen_object_create_code (void);
+ // generate code that activates the objs and o/ps their IOR
+
+ int gen_servant_hdr_code (void);
+ // generate the servant impl header file
+
+ int gen_servant_impl_code (void);
+ // generate servant implementation
+
+ int gen_client_incl_code (void);
+ // generate the client side include code
+
+ int print_names (void);
+ // print generated names
+
+ void usage (void);
+ // print the usage
+
+ int gen_names (ACE_Unbounded_Queue<ACE_CString> &, int limit);
+ // common fn used by others to generate names in a table of size = limit
+
+ int insert_unique_string (ACE_Unbounded_Queue<ACE_CString> &);
+ // insert a unique string at location locn distinct from all strings inserted
+ // from locations 0 to locn-1
+
+ long gen_rand (int, int);
+
+ int is_present (ACE_Unbounded_Queue<ACE_CString> &, ACE_CString &);
+ // is the given string present in the queue?
+
+ int create_string (int len, ACE_CString &s);
+ // create a valid identifier of length len
+
+ char gen_valid_char (int);
+ // generate a valid character. The argument indicates what position it will
+ // be inserted.
+
+ int print_array (ACE_Unbounded_Queue<ACE_CString> &);
+ // print the array
+
+ int num_POAs_;
+ // number of POAs
+
+ int num_objs_;
+ // number of objects
+
+ int num_ops_;
+ // number of operations
+
+ ACE_Unbounded_Queue <ACE_CString> poa_array_;
+ // array of POA names
+
+ ACE_Unbounded_Queue <ACE_CString> obj_array_;
+ // array of object names
+
+ ACE_Unbounded_Queue <ACE_CString> op_array_;
+ // array of operation names
+
+ int oneway_;
+ // whether operations must be oneway or not
+
+ int debug_;
+ // whether to print debugging info
+};
+
+
+#endif /* TAO_DEMUX_TEST_CODEGEN_H */
diff --git a/TAO/performance-tests/Demux/CodeGen/debug.cpp b/TAO/performance-tests/Demux/CodeGen/debug.cpp
new file mode 100644
index 00000000000..cd6b6486d1d
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/debug.cpp
@@ -0,0 +1,70 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// debug.cpp
+//
+// For debugging purposes
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, debug, "$Id$")
+
+int
+Demux_Test_CodeGenerator::print_names (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "*********** Begin Generated POA Names *********\n"));
+ this->print_array (this->poa_array_);
+ ACE_DEBUG ((LM_DEBUG,
+ "*********** End Generated POA Names *********\n\n"));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "*********** Begin Generated Object Names *********\n"));
+ this->print_array (this->obj_array_);
+ ACE_DEBUG ((LM_DEBUG,
+ "*********** End Generated Object Names *********\n\n"));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "*********** Begin Generated Operation Names *********\n"));
+ this->print_array (this->op_array_);
+ ACE_DEBUG ((LM_DEBUG,
+ "*********** End Generated Operation Names *********\n\n"));
+
+ return 0;
+}
+
+int
+Demux_Test_CodeGenerator::print_array (ACE_Unbounded_Queue<ACE_CString> &arr)
+{
+ ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (arr);
+
+ // start with the first element
+ if (!iter.first ())
+ {
+ // queue is empty
+ return 0;
+ }
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_DEBUG ((LM_DEBUG,
+ "\t%s\n",
+ str->rep ()));
+ (void) iter.advance ();
+ }
+ return 0; // not present
+}
+
diff --git a/TAO/performance-tests/Demux/CodeGen/demux.cpp b/TAO/performance-tests/Demux/CodeGen/demux.cpp
new file mode 100644
index 00000000000..abd7e6b0151
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/demux.cpp
@@ -0,0 +1,42 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// demux.cpp
+//
+// Main driver program for the code generator
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, demux, "$Id$")
+
+int
+main (int argc, char *argv [])
+{
+ Demux_Test_CodeGenerator demux_cg;
+
+ if (demux_cg.init (argc, argv) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Main : cannot initialize the code generator\n"),
+ -1);
+ }
+
+ if (demux_cg.run () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Main : cannot invoke the code generator\n"),
+ -1);
+ }
+
+ return 0;
+}
diff --git a/TAO/performance-tests/Demux/CodeGen/gen.cpp b/TAO/performance-tests/Demux/CodeGen/gen.cpp
deleted file mode 100644
index e477cf2ecb2..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/gen.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, gen, "$Id$")
-
-static long GenDistinctString(ACE_Unbounded_Queue<ACE_CString> &, int);
-static long GenRand(int, int);
-static long IsPresent(ACE_Unbounded_Queue<ACE_CString> &, int, ACE_CString &);
-static ACE_CString CreateString(long);
-static char GetVarChar(int);
-
-// object table generator
-long GenObjectTable(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- int i,j,k; // indices
- long rnd; // random number
- int opt;
- fstream arrfp;
- ACE_CString *str;
-
-
- // Generate "limit" distinct strings
- for (i=0; i < limit; i++)
- {
- if (GenDistinctString(arr, i) == -1) // side effect: inserts a new string
- return -1; // at locn i in array "arr"
- }
-
- // write the strings into a file whose format will be understood by GPERF
- arrfp.open("gperf_objects.dat",ios::out);
-
- arrfp << "struct object_db {" << endl;
- arrfp << "\tchar *name; // name of method" << endl;
- arrfp << "\tCORBA_Object_ptr obj; //fn pointer to obj impl" << endl;
- arrfp << "};" << endl;
- arrfp << "%%" << endl;
-
- for(i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- {
- // error
- return -1;
- }
- arrfp << str->rep() << ", " << "0" << endl;
- // we do not know the addresses of the objects. We shall insert them
- // later.
- }
- arrfp.close();
- return 0;
-}
-
-// method table generator
-long GenMethodTable(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- int i,j,k; // indices
- long rnd; // random number
- int opt;
- fstream arrfp;
- ACE_CString *str;
-
-
- // Generate "limit" distinct strings
- for (i=0; i < limit; i++){
- if (GenDistinctString(arr, i) == -1) // side effect: inserts a new string at locn i
- return -1; // in array "arr"
- }
-
- // write the strings into a file whose format will be understood by GPERF
- arrfp.open("gperf_methods.dat",ios::out);
-
- arrfp << "struct method_db {" << endl;
- arrfp << "\tchar *name; // name of method" << endl;
- arrfp << "\tTAO_Skeleton skel_ptr; //fn pointer to skeleton" << endl;
- arrfp << "};" << endl;
- arrfp << "%%" << endl;
-
- for(i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- {
- // error
- return -1;
- }
- arrfp << (str->rep()) << ", " << "_skel_tao_demux::" << str->rep() <<
- "_skel" << endl;
- }
- arrfp.close();
- return 0;
-}
-
-
-// generate a distinct string and insert it at location "limit"
-long GenDistinctString(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- int i, j; // indices
- long rnd;
- ACE_CString s;
- long status;
-
- rnd = GenRand(3,32); // get a random number between 3 and 32 which will be
- // used as a string length of the distinct string to be
- // generated. We use 3-32 because certain function
- // names such as _N, _C cause name conflicts.
- // Continue generating strings until a distinct one not generated before
- // is formed
- do {
- s = CreateString(rnd);
- status = IsPresent (arr, limit, s);
- if (status == -1)
- return -1;
- } while (status > 0);
-
- // save it at this location
- if (arr.enqueue_tail(s) == -1)
- {
- return -1;
- }
- return 0;
-}
-
-// generate a random number in the given limits
-long GenRand(int low, int up)
-{
- return (lrand48() % (up-low+1)) + low; // rnd will be the size of the
-}
-
-// check if the given string is present in the array
-long IsPresent(ACE_Unbounded_Queue<ACE_CString> &arr, int limit, ACE_CString &s)
-{
- ACE_CString *str;
-
- if (!strcasecmp(s.rep(), "_is_a"))
- return 1;
-
- for (int i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- if (!strcasecmp(str->rep(), s.rep()))
- return 1; // they are same
- }
- return 0; // not present
-}
-
-// create a string of length = len
-ACE_CString CreateString(long len)
-{
- int i;
- ACE_CString s;
- char ch;
-
- for (i=0; i < len; i++){
- ch = GetVarChar(i);
- s += ACE_CString(&ch);
- }
- return s;
-}
-
-// Generate a valid character for a C++ variable
-char GetVarChar(int i)
-{
- // for i == 0, we cannot return a digit as the first character
- char ch;
- while(1) {
- ch = GenRand(48, 122);
- if (isdigit(ch) || isupper(ch) || islower(ch) || (ch == '_')){
- if ((i == 0) && (isdigit(ch) || (ch == '_')))
- continue;
- break; //otherwise
- }
- }
- return ch;
-}
-
diff --git a/TAO/performance-tests/Demux/CodeGen/gen_names.cpp b/TAO/performance-tests/Demux/CodeGen/gen_names.cpp
new file mode 100644
index 00000000000..dbaae84fdeb
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/gen_names.cpp
@@ -0,0 +1,236 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// gen_names.cpp
+//
+// Generates unique names
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, gen_names, "$Id$")
+
+
+// POA names generator
+int
+Demux_Test_CodeGenerator::gen_poa_names (void)
+{
+ if (this->gen_names (this->poa_array_, this->num_POAs_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::gen_poa_names - "
+ "Failed to generate poa names\n"),
+ -1);
+ }
+
+ // We store the generated names in a file
+ FILE *fp;
+
+ if ((fp = ACE_OS::fopen ("poa_names.dat", "w")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::gen_poa_names - "
+ "Failed to open file\n"),
+ -1);
+ }
+
+ // now output the names
+ ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (this->poa_array_);
+
+ // start with the first element
+ (void)iter.first ();
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_OS::fprintf (fp, "%s\n", str->c_str ());
+
+ (void) iter.advance ();
+ }
+
+ ACE_OS::fclose (fp);
+
+ return 0;
+}
+
+// object table generator
+int
+Demux_Test_CodeGenerator::gen_object_names (void)
+{
+ if (this->gen_names (this->obj_array_, this->num_objs_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::gen_object_names - "
+ "Failed to generate object names\n"),
+ -1);
+ }
+ return 0;
+}
+
+// method table generator
+int
+Demux_Test_CodeGenerator::gen_operation_names (void)
+{
+ if (this->gen_names (this->op_array_, this->num_ops_) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::gen_object_names - "
+ "Failed to generate object names\n"),
+ -1);
+ }
+
+ return 0;
+}
+
+
+// generic unique name generator
+int
+Demux_Test_CodeGenerator::gen_names (ACE_Unbounded_Queue<ACE_CString> &arr,
+ int limit)
+{
+ int i; // loop index
+
+ // Generate "limit" number of distinct strings
+ for (i = 0; i < limit; i++)
+ {
+ // inserts a new string at the tail in array "arr"
+ if (this->insert_unique_string (arr) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::gen_names - "
+ "Failed to insert unique name\n"),
+ -1);
+ }
+ }
+
+ return 0;
+}
+
+// generate a distinct string and insert it at the tail
+int
+Demux_Test_CodeGenerator::insert_unique_string (ACE_Unbounded_Queue<ACE_CString> &arr)
+{
+ long rnd;
+ ACE_CString s;
+ long status;
+
+ // get a random number between 3 and 32
+ rnd = this->gen_rand (3,32);
+
+ // This random number is used as a string length of the distinct string to be
+ // generated.
+
+ do
+ {
+ if (this->create_string (rnd, s) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - "
+ "Failed to create string\n"),
+ -1);
+ }
+
+ status = this->is_present (arr, s);
+ if (status == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - "
+ "is_present check failed\n"),
+ -1);
+ }
+ }
+ while (status > 0);
+
+ // save it at this location
+ if (arr.enqueue_tail (s) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%n:%l) Demux_Test_CodeGenerator::insert_unique_string - "
+ "Failed to enqueue\n"),
+ -1);
+ }
+ return 0;
+}
+
+// generate a random number in the given limits
+long
+Demux_Test_CodeGenerator::gen_rand (int low, int up)
+{
+ return (lrand48 () % (up - low + 1)) + low;
+}
+
+// check if the given string is present in the array
+int
+Demux_Test_CodeGenerator:: is_present (ACE_Unbounded_Queue<ACE_CString> &arr,
+ ACE_CString &s)
+{
+ ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (arr);
+
+ // start with the first element
+ if (!iter.first ())
+ {
+ // queue is empty
+ return 0;
+ }
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ // check if they match
+ if (!str->compare (s))
+ return 1; // they match
+
+ (void) iter.advance ();
+ }
+ return 0; // not present
+}
+
+// create a string of length = len
+int
+Demux_Test_CodeGenerator::create_string (int len, ACE_CString &s)
+{
+ int i;
+ char ch;
+
+ for (i = 0; i < len; i++)
+ {
+ ch = this->gen_valid_char (i);
+ s += ACE_CString (&ch);
+ }
+ return 0;
+}
+
+// Generate a valid character for a C++ variable
+char
+Demux_Test_CodeGenerator::gen_valid_char (int posn)
+{
+ // for posn == 0, we cannot return a digit or an _ as the first character as
+ // that does not constitute a valid IDL identifier
+ char ch;
+ while (1)
+ {
+ ch = this->gen_rand (48, 122);
+ if (isdigit (ch) || isupper (ch) || islower (ch) || (ch == '_'))
+ {
+ if ((posn == 0) && (isdigit (ch) || (ch == '_')))
+ continue;
+ break; //otherwise
+ }
+ }
+ return ch;
+}
+
diff --git a/TAO/performance-tests/Demux/CodeGen/idl.cpp b/TAO/performance-tests/Demux/CodeGen/idl.cpp
new file mode 100644
index 00000000000..fc3c6456532
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/idl.cpp
@@ -0,0 +1,66 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// idl.cpp
+//
+// Generates the IDL definition for the Demux_Test
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, idl, "$Id$")
+
+// this method generates the IDL interface with all the methods in it
+int
+Demux_Test_CodeGenerator::gen_idl_interface (void)
+{
+ FILE *fp;
+
+ if ((fp = ACE_OS::fopen ("demux_test.idl", "w")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::gen_idl_interface - "
+ "Failed to open file demux_test.idl\n"),
+ -1);
+ }
+
+ ACE_OS::fprintf (fp, "// Interface for TAO's Demux_Test\n\n");
+ ACE_OS::fprintf (fp, "interface Demux_Test\n");
+ ACE_OS::fprintf (fp, "{\n");
+
+ // go thru all the operation names
+ ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (this->op_array_);
+
+ // start with the first element
+ if (!iter.first ())
+ {
+ // queue is empty
+ return 0;
+ }
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_OS::fprintf (fp, " %svoid %s ();\n",
+ (this->oneway_ ? "oneway ": ""),
+ str->rep ());
+
+ (void) iter.advance ();
+ }
+
+ ACE_OS::fprintf (fp, "};\n");
+ ACE_OS::fclose (fp);
+
+ return 0;
+}
diff --git a/TAO/performance-tests/Demux/CodeGen/impl.cpp b/TAO/performance-tests/Demux/CodeGen/impl.cpp
deleted file mode 100644
index b7143a5c0d8..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/impl.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, impl, "$Id$")
-
-// generate the implementation header
-long GenServantHeader(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- // generate the implementation class
- fstream hdr;
- int i;
- ACE_CString *str;
-
- hdr.open("tao_demux_i.h", ios::out);
-
- hdr << "#if !defined(TAO_DEMUX_I_H)" << endl;
- hdr << "#define TAO_DEMUX_I_H" << endl << endl;
-
- hdr << "#include \"tao_demuxS.h\"" << endl << endl;
-
- hdr << "class tao_demux_i: public virtual _skel_tao_demux" << endl;
- hdr << "{" << endl;
- hdr << "public:" << endl;
- hdr << "\ttao_demux_i(char *obj_name);" << endl;
- hdr << "\t~tao_demux_i();" << endl;
- hdr << "\t//now all the methods" << endl;
-
- for(i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- return -1;
-
- hdr << "\tvoid " << str->rep() <<
- "(CORBA_Environment &env);" << endl;
- }
- hdr << "};" << endl;
-
- hdr << "#endif" << endl;
-}
-
-
-// generate the implementation
-long GenServantImpl(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- // generate the implementation class
- fstream impl;
- int i;
- ACE_CString *str;
-
- impl.open("tao_demux_i.cpp", ios::out);
-
- impl << "#include <iostream.h>" << endl;
- impl << "#include \"tao_demux_i.h\"" << endl << endl;
-
- impl << "tao_demux_i::tao_demux_i(char *obj_name)" << endl;
- impl << " :_skel_tao_demux(obj_name){}" << endl;
- impl << "tao_demux_i::~tao_demux_i(){}" << endl;
- impl << "\t//now all the methods" << endl;
-
- for(i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- return -1;
-
- impl << "void tao_demux_i::" << str->rep() <<
- "(CORBA_Environment &env)" << endl;
- impl << "{" << endl;
- impl << "#ifdef DEBUG" << endl;
- impl << " cout << \"Object name = \" << this->_get_name(env) << " <<
- "\", Operation name = " << str->rep() << "\" << endl;" << endl;
- impl << "#endif" << endl;
- impl << "}" << endl << endl;
- }
-}
-
diff --git a/TAO/performance-tests/Demux/CodeGen/objcreate.cpp b/TAO/performance-tests/Demux/CodeGen/objcreate.cpp
deleted file mode 100644
index a6a3e2ede6d..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/objcreate.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, objcreate, "$Id$")
-
-long GenObjectCreateCode(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- // code for creating objects. The strategy will be based on active demux or
- // other strategies
- fstream file;
- int i;
- ACE_CString *str;
-
- file.open("obj_create.i", ios::out);
-
- file << "\t if (params->demux_strategy() == " <<
- "TAO_OA_Parameters::TAO_ACTIVE_DEMUX){" << endl;
-
- for (i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- return -1;
-
- file << "\t\tmymux[" << i << "] = new tao_demux_i(\"" << i << "\");" <<
- endl;
- file << "\t\tstr = orb_ptr->object_to_string(mymux[" << i << "], env);"
- << endl;
- file << "#ifdef DEBUG" << endl;
- file << "\t\tcout << \"IOR = \" << (char *)str << endl;" << endl;
- file << "#endif" << endl;
- file << "\t\tiorfile << (char *)str << endl; " << endl;
- file << "\t\tCORBA_string_free(str);" << endl;
- }
- file << "\t } else {" << endl;
- for (i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- return -1;
-
- file << "\t\tmymux[" << i << "] = new tao_demux_i(CORBA_string_dup (\""
- << str->rep() << "\"));" << endl;
- file << "\t\tstr = orb_ptr->object_to_string(mymux[" << i << "], env);"
- << endl;
- file << "#ifdef DEBUG" << endl;
- file << "\t\tcout << \"IOR = \" << (char *)str << endl;" << endl;
- file << "#endif" << endl;
- file << "\t\tiorfile << (char *)str << endl; " << endl;
- file << "\t\tCORBA_string_free(str);" << endl;
- }
- file << "\t }" << endl;
-
- file.close();
- return 0;
-}
diff --git a/TAO/performance-tests/Demux/CodeGen/perf.cpp b/TAO/performance-tests/Demux/CodeGen/perf.cpp
deleted file mode 100644
index a3cffc21d2f..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/perf.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, perf, "$Id$")
-
-void GenGPERFCode()
-{
- char command[500];
-
- // first generate code for object hash
- sprintf(command,
- "gperf -c -C -D -E -T -f 0 -a -o -t -p -L C++ -Z Method_Hash %s >\
-gperf_method.i", "gperf_methods.dat");
- system(command);
-
- // omit the -C switch for gperf because we will not know the address of the
- // objects until they are instantiated. But we do know the keys in advance.
- sprintf(command,
- "gperf -c -D -E -T -f 0 -a -o -t -p -L C++ -Z Object_Hash %s >\
-gperf_object.i", "gperf_objects.dat");
- system(command);
-
-}
-
diff --git a/TAO/performance-tests/Demux/CodeGen/servant_hdr.cpp b/TAO/performance-tests/Demux/CodeGen/servant_hdr.cpp
new file mode 100644
index 00000000000..354b4d5957d
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/servant_hdr.cpp
@@ -0,0 +1,92 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// servant_hdr.cpp
+//
+// Generates the demux_test_i.h file that defines the implementation class
+// for the Demux_Test interface
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, servant_hdr, "$Id$")
+
+// generate the implementation header
+int
+Demux_Test_CodeGenerator::gen_servant_hdr_code (void)
+{
+ // generate the implementation class
+ FILE *fp;
+
+ if ((fp = ACE_OS::fopen ("demux_test_i.h", "w")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::gen_servant_hdr_code - "
+ "Failed to open file demux_test_i.h\n"),
+ -1);
+ }
+
+ ACE_OS::fprintf (fp, "#if !defined (TAO_DEMUX_TEST_I_H)\n");
+ ACE_OS::fprintf (fp, "#define TAO_DEMUX_TEST_I_H\n\n");
+
+ ACE_OS::fprintf (fp, "// Implementation of TAO's Demux_Test interface\n\n");
+
+ // include file
+ ACE_OS::fprintf (fp, "#include \"demux_testS.h\"\n\n");
+
+ ACE_OS::fprintf (fp, "class Demux_Test_i : public POA_Demux_Test\n");
+ ACE_OS::fprintf (fp, "{\n");
+
+ ACE_OS::fprintf (fp, "public:\n");
+
+ // ctor
+ ACE_OS::fprintf (fp, " Demux_Test_i (void);\n");
+ ACE_OS::fprintf (fp, " // ctor \n\n");
+
+ // dtor
+ ACE_OS::fprintf (fp, " ~Demux_Test_i (void);\n");
+ ACE_OS::fprintf (fp, " // dtor \n\n");
+
+ // go thru all the operation names
+ ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (this->op_array_);
+
+ // start with the first element
+ if (!iter.first ())
+ {
+ // queue is empty
+ return 0;
+ }
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_OS::fprintf (fp, " void %s (CORBA::Environment &env = \n"
+ " CORBA::Environment::"
+ "default_environment ());\n\n",
+ str->rep ());
+
+ (void) iter.advance ();
+ }
+
+ ACE_OS::fprintf (fp, "};\n\n");
+
+ ACE_OS::fprintf (fp, "#endif /* TAO_DEMUX_TEST_I_H */\n");
+ ACE_OS::fclose (fp);
+
+ return 0;
+}
+
+
+
diff --git a/TAO/performance-tests/Demux/CodeGen/servant_impl.cpp b/TAO/performance-tests/Demux/CodeGen/servant_impl.cpp
new file mode 100644
index 00000000000..92317485d2f
--- /dev/null
+++ b/TAO/performance-tests/Demux/CodeGen/servant_impl.cpp
@@ -0,0 +1,93 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux/CodeGen
+//
+// = FILENAME
+// servant_impl.cpp
+//
+// Generates the implementation of the Demux_Test interface in the
+// demux_test_i.cpp file.
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include "codegen.h"
+
+ACE_RCSID(CodeGen, servant_impl, "$Id$")
+
+// generate the implementation
+int
+Demux_Test_CodeGenerator::gen_servant_impl_code (void)
+{
+ // generate the implementation class
+ FILE *fp;
+
+ if ((fp = ACE_OS::fopen ("demux_test_i.cpp", "w")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_CodeGenerator::gen_servant_impl_code - "
+ "Failed to open file demux_test_i.cpp\n"),
+ -1);
+ }
+
+ ACE_OS::fprintf (fp, "// Implementation of TAO's Demux_Test interface\n\n");
+
+ // include file
+ ACE_OS::fprintf (fp, "#include \"demux_test_i.h\"\n\n");
+
+ // ctor
+ ACE_OS::fprintf (fp, "// ctor\n");
+ ACE_OS::fprintf (fp, "Demux_Test_i::Demux_Test_i (void)\n");
+ ACE_OS::fprintf (fp, "{}\n\n");
+
+ // dtor
+ ACE_OS::fprintf (fp, "// dtor\n");
+ ACE_OS::fprintf (fp, "Demux_Test_i::~Demux_Test_i (void)\n");
+ ACE_OS::fprintf (fp, "{}\n\n");
+
+ // go thru all the operation names
+ ACE_CString *str;
+ ACE_Unbounded_Queue_Iterator <ACE_CString> iter (this->op_array_);
+
+ // start with the first element
+ if (!iter.first ())
+ {
+ // queue is empty
+ return 0;
+ }
+ while (!iter.done ())
+ {
+ // grab the next element waiting to be grabbed
+ (void) iter.next (str);
+
+ ACE_OS::fprintf (fp, "void Demux_Test_i::%s (CORBA::Environment &env)\n",
+ str->rep ());
+ // if debugging desired
+ ACE_OS::fprintf (fp, "{\n");
+ ACE_OS::fprintf (fp, " ACE_UNUSED_ARG (env);\n");
+
+ if (this->debug_)
+ {
+ ACE_OS::fprintf (fp, " ACE_DEBUG ((LM_DEBUG, "
+ "\"Inside Demux_Test_i::%s\\n\"));\n",
+ str->rep ());
+ }
+
+ ACE_OS::fprintf (fp, "}\n\n");
+
+ (void) iter.advance ();
+ }
+
+ ACE_OS::fclose (fp);
+
+ return 0;
+}
+
+
+
diff --git a/TAO/performance-tests/Demux/CodeGen/skel.cpp b/TAO/performance-tests/Demux/CodeGen/skel.cpp
deleted file mode 100644
index 2933e042b05..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/skel.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, skel, "$Id$")
-
-long GenServerHeader(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- fstream hdr;
- int i;
- ACE_CString *str;
-
- hdr.open("tao_demuxS.h", ios::out);
-
- hdr << "#if !defined(TAO_DEMUX_S_H)" << endl;
- hdr << "#define TAO_DEMUX_S_H" << endl << endl;
-
- hdr << "#include \"tao_demuxC.h\"" << endl;
- hdr << "class _skel_tao_demux: public tao_demux" << endl;
- hdr << "{" << endl;
- hdr << "protected:" << endl;
- hdr << "\t_skel_tao_demux(const char *objname=0);" << endl;
- hdr << "\tvirtual ~_skel_tao_demux() {}" << endl;
- hdr << "public:" << endl;
- hdr << "\t//All methods defined on this interface" << endl;
- for(i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- //generate skeletons
- hdr << "\tvirtual void " << str->rep() <<
- "(CORBA_Environment &env) = 0;" << endl;
- }
- hdr << endl;
- hdr << "\t// All skeletons used for dispatching" << endl;
- for(i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- //generate skeletons
- hdr << "\tstatic void " << str->rep() <<
- "_skel(CORBA_ServerRequest &req, CORBA_Object_ptr obj, " <<
- "CORBA_Environment &env);" << endl;
- }
- hdr << "\tstatic void " <<
- "_is_a_skel(CORBA_ServerRequest &req, CORBA_Object_ptr obj, " <<
- "CORBA_Environment &env);" << endl;
- hdr << "};" << endl;
-
- hdr << "#endif" << endl;
- hdr.close();
-}
-
-// generate server side skeletons
-long GenServerSkels(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- fstream skel;
- int i;
- ACE_CString *str;
-
- skel.open("tao_demuxS.cpp", ios::out);
-
- skel << "#include \"tao_demuxS.h\"" << endl;
- // skel << "#include \"iiopobj.h\"" << endl;
- // skel << "#include \"params.h\"" << endl;
- // skel << "#include \"corba/optable.h\"" << endl;
- // skel << "#include \"corba/corbacom.h\"" << endl << endl;
-
- // table of methods
- skel << "static const TAO_operation_db_entry tao_demux_operations [] = {" << endl;
- for (i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- skel << "\t{\"" << str->rep() << "\", &_skel_tao_demux::" << str->rep() <<
- "_skel}," << endl;
-
- }
- skel << "\t{\"_is_a\", &_skel_tao_demux::_is_a_skel}" << endl;
- skel << "};" << endl;
-
- // table of methods
- skel << "static const TAO_operation_db_entry tao_active_demux_operations [] = {" << endl;
- for (i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- skel << "\t{\"" << i << "\", &_skel_tao_demux::" << str->rep() <<
- "_skel}," << endl;
-
- }
- skel << "\t{\"" << limit << "\", &_skel_tao_demux::_is_a_skel}" << endl;
- skel << "};" << endl;
-
- // instantiate operation lookup tables
- skel << "// instantiate a dynamic hash operation table" << endl;
- skel << "TAO_Dynamic_Hash_OpTable dyn_hash_tao_demux_op_tbl(" <<
- "tao_demux_operations, " << (limit+1) << ", " << (limit+1)*2 << ");" << endl;
-
- skel << "// instantiate a linear search based operation table" << endl;
- skel << "TAO_Linear_OpTable linear_tao_demux_op_tbl(" <<
- "tao_demux_operations, " << limit+1 << ");" << endl;
-
- skel << "// instantiate a active demux operation table" << endl;
- skel << "TAO_Active_Demux_OpTable active_tao_demux_op_tbl(" <<
- "tao_active_demux_operations, " << limit+1 << ");" << endl;
-
- skel << "// constructor for skel_tao_demux" << endl;
- skel << "_skel_tao_demux::_skel_tao_demux(const char *obj_name)" << endl;
- // skel << "\t:optable_(&tao_demux_op_tbl)" << endl;
- skel << "{" << endl;
- skel << "\tconst char* repoID = \"IDL:tao_demux:1.0\";" << endl;
- skel << "\tCORBA_String_var _tao_typeid = repoID;" << endl;
- skel << "\tIIOP_Object *data; // IIOP object reference" << endl;
- skel << "\tCORBA_POA_ptr oa = TAO_OA_PARAMS::instance()->oa(); // our OA" << endl;
- skel << "\tTAO_Operation_Table_Parameters *op_params = " << endl;
- skel << "\t\tTAO_OP_TABLE_PARAMETERS::instance();" << endl << endl;
- skel << "\tCORBA_Long i;" << endl;
-
- // set the operation table based on user's choice
- skel << "\tswitch(op_params->lookup_strategy()){" << endl;
- skel << "\tcase TAO_Operation_Table_Parameters::TAO_ACTIVE_DEMUX:" << endl;
- skel << "\t\tthis->optable_ = &active_tao_demux_op_tbl;" << endl;
- skel << "\t\tbreak;" << endl;
- skel << "\tcase TAO_Operation_Table_Parameters::TAO_LINEAR:" << endl;
- skel << "\t\tthis->optable_ = &linear_tao_demux_op_tbl;" << endl;
- skel << "\t\tbreak;" << endl;
- skel << "\tcase TAO_Operation_Table_Parameters::TAO_DYNAMIC_HASH:" << endl;
- skel << "\t\tthis->optable_ = &dyn_hash_tao_demux_op_tbl;" << endl;
- skel << "\t\tbreak;" << endl;
- skel << "\tcase TAO_Operation_Table_Parameters::TAO_PERFECT_HASH:" << endl;
- skel << "\t\tthis->optable_ = op_params->concrete_strategy ();" << endl;
- skel << "\t\tbreak;" << endl;
- skel << "\tcase TAO_Operation_Table_Parameters::TAO_USER_DEFINED:" << endl;
- skel << "\t\tthis->optable_ = op_params->concrete_strategy ();" << endl;
- skel << "\t\tbreak;" << endl;
- skel << "\t}" << endl << endl;
-
- // code to create IIOP object
- skel << "\tdata = new IIOP_Object(CORBA_string_dup(_tao_typeid));" << endl;
- skel << "\tdata->profile.iiop_version.major = IIOP::MY_MAJOR;" << endl;
- skel << "\tdata->profile.iiop_version.minor = IIOP::MY_MINOR;" << endl;
- skel << "\tdata->profile.host = ACE_OS::strdup(oa->get_addr().get_host_name());" << endl;
- skel << "\tdata->profile.port = oa->get_addr().get_port_number();" << endl;
- skel << "\tdata->profile.object_key.length = ACE_OS::strlen(obj_name);" << endl;
- skel << "\tdata->profile.object_key.maximum = " <<
- "data->profile.object_key.length;" << endl;
- skel << "\tdata->profile.object_key.buffer = " <<
- "new CORBA_Octet [(size_t)data->profile.object_key.length+1];" << endl;
- skel << "\tACE_OS::memcpy(data->profile.object_key.buffer, obj_name, " <<
- "data->profile.object_key.length);" << endl;
- skel << "\tthis->set_parent(data);" << endl;
- skel << "\tthis->sub_ = this;" << endl;
- skel << "\tif (oa) oa->bind(data->profile.object_key, this);" <<
- "// register ourselves" << endl;
- skel << "}" << endl << endl;
-
- // now the code for each skeleton
- for(i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- skel << "void _skel_tao_demux::" << str->rep() <<
- "_skel(CORBA_ServerRequest &req, CORBA_Object_ptr obj, " <<
- "CORBA_Environment&env)" << endl;
- skel << "{" << endl;
- skel << "\tCORBA_NVList_ptr nvlist;" << endl;
- skel << "\ttao_demux_ptr impl;" << endl << endl;
-
- // create a NVlist and populate it
- skel << "\treq.orb()->create_list(0, nvlist);" << endl;
- skel << "\treq.params(nvlist,env); //useless operation, but required "
- << endl;
- skel << "\t impl = (tao_demux_ptr) (obj->get_subclass());" << endl;
- skel << "\t// now the magic of dynamic binding" << endl;
- skel << "\timpl->" << str->rep() << "(env);" << endl;
- skel << "}" << endl;
- }
-
- // finally the code for _is_a
- skel << "void _skel_tao_demux::_is_a_skel" <<
- "(CORBA_ServerRequest &req, CORBA_Object_ptr obj, " <<
- "CORBA_Environment&env)" << endl;
- skel << "{" << endl;
- skel << "\tCORBA_NVList_ptr nvlist;" << endl;
- skel << "\tCORBA_NamedValue_ptr nv;" << endl;
- skel << "\tCORBA_Any temp_value(_tc_CORBA_String);" << endl;
- skel << "\tchar *_tao_typeid = \"IDL:tao_demux:1.0\";" << endl << endl;
-
- // create a NVlist and populate it
- skel << "\treq.orb()->create_list(0, nvlist);" << endl;
- skel << "\tnv = nvlist->add_value(0, temp_value, CORBA_ARG_IN, env);" << endl;
- skel << "\treq.params(nvlist,env);" << endl;
- skel << "\tif (env.exception() != 0)" << endl;
- skel << "\t {" << endl;
- skel << "\t\tdexc(env, \"is_a_skel, params\");" << endl;
- skel << "\t\treturn;" << endl;
- skel << "\t }" << endl << endl;
- skel << "\tCORBA_Boolean *retval;" << endl;
- skel << "\tCORBA_String value = *(CORBA_String *)nv->value()->value();" << endl;
- skel << "\tif (strcmp((char *)value,(char *)_tao_typeid) == 0" << endl;
- skel << "\t || strcmp((char *)value, _tc_CORBA_Object->id(env)) == 0)" << endl;
- skel << "\t\tretval = new CORBA_Boolean(1);" << endl;
- skel << "\telse" << endl;
- skel << "\t\tretval = new CORBA_Boolean(0);" << endl;
- skel << "\tCORBA_Any *any = new CORBA_Any(_tc_CORBA_Boolean, retval," <<
- "1);" << endl;
- skel << "\treq.result(any, env);" << endl;
- skel << "\tdexc(env, \"_is_a, result\");" << endl;
- skel << "}" << endl;
-
- skel.close();
-}
-
diff --git a/TAO/performance-tests/Demux/CodeGen/stub.cpp b/TAO/performance-tests/Demux/CodeGen/stub.cpp
deleted file mode 100644
index d33a88cc822..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/stub.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, stub, "$Id$")
-
-long GenClientHeader(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- fstream hdr;
- int i;
- ACE_CString *str;
-
- hdr.open("tao_demuxC.h", ios::out);
-
- hdr << "//******** Generated by the tool: taoidl ********" << endl << endl;
-
- hdr << "#if !defined (TAO_DEMUXC_H)" << endl;
- hdr << "#define TAO_DEMUXC_H" << endl << endl;
-
- hdr << "#include <stdlib.h>" << endl;
- hdr << "#include \"tao/corba.h\"" << endl;
- // hdr << "#include \"tao/orb.h\"" << endl;
- // hdr << "#include \"tao/stub.h\"" << endl;
- // hdr << "#include \"tao/optable.h\"" << endl;
-
- hdr << "class tao_demux;" << endl;
- hdr << "typedef tao_demux *\ttao_demux_ptr;" << endl;
- hdr << "class tao_demux: public virtual CORBA_Object" << endl;
- hdr << "{" << endl;
- hdr << "public:" << endl;
- // define the CORBA compliant mapping
- hdr << "\tstatic tao_demux_ptr _duplicate(tao_demux_ptr obj);" << endl;
- hdr << "\tstatic tao_demux_ptr _narrow(CORBA_Object_ptr obj);" << endl;
- hdr << "\tstatic tao_demux_ptr _nil();" << endl << endl;
-
- // now generate all the methods
- for(i=0; i < limit; i++)
- {
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
- hdr << "\tvirtual void " << str->rep() << "(CORBA_Environment &env);" << endl;
- }
- hdr << "protected:" << endl;
- hdr << "\ttao_demux() {}" << endl;
- hdr << "\ttao_demux(STUB_Object *objref): CORBA_Object(objref) {}" << endl;
- hdr << "\tvirtual ~tao_demux() {}" << endl;
- hdr << "private:" << endl;
- hdr << "\t//copy constructor and assignment operator" << endl;
- hdr << "\ttao_demux(const tao_demux&) { }" << endl;
- hdr << "\tvoid operator=(const tao_demux&) { }" << endl;
- hdr << "};" << endl;
-
- hdr << "#endif" << endl;
- hdr.close();
-}
-
-long GenClientStubs(ACE_Unbounded_Queue<ACE_CString> &arr, int limit)
-{
- fstream stub;
- int i;
- ACE_CString *str;
-
- stub.open("tao_demuxC.cpp", ios::out);
-
- stub << "#include \"tao_demuxC.h\"" << endl << endl;
-
- // generate the static functions
-
- // the _duplicate method
- stub << "tao_demux_ptr tao_demux::_duplicate(tao_demux_ptr obj)" << endl;
- stub << "{" << endl;
- stub << "\tif (obj) obj->AddRef();" << endl;
- stub << "\treturn obj;" << endl;
- stub << "}" << endl << endl;
-
- // the _narrow method
- stub << "tao_demux_ptr tao_demux::_narrow(CORBA_Object_ptr obj)" << endl;
- stub << "{" << endl;
- // check if object "is_a" IDL:tao_demux:1.0 and if so, addref and return a
- // pointer to it
- stub << "\tCORBA_Environment env;" << endl;
- stub << "\tif (obj->_is_a(\"IDL:tao_demux:1.0\", env)){" << endl;
- stub << "\t STUB_Object *istub;" << endl;
- stub << "\t if (obj->QueryInterface(IID_STUB_Object, (void **)&istub)" <<
- " != NOERROR){" << endl;
- stub << "\t\treturn tao_demux::_nil();" << endl;
- stub << "\t }" << endl;
- stub << "\t tao_demux_ptr new_obj = new tao_demux(istub);" << endl;
- stub << "\t return tao_demux::_duplicate(new_obj);" << endl;
- stub << "\t}" << endl;
- stub << "\treturn tao_demux::_nil();" << endl;
- stub << "}" << endl << endl;
-
- // the _nil method
- stub << "tao_demux_ptr tao_demux::_nil()" << endl;
- stub << "{" << endl;
- stub << "\treturn (tao_demux_ptr)NULL;" << endl;
- stub << "}" << endl << endl;
-
- // All the TAO_Param_Data and TAO_Call_Data structures
- stub <<
- "// All the TAO_Param_Data and TAO_Call_Data structures required for invoking do_call"
- << endl;
- for(i=0; i < limit; i++){
- if (arr.get(str, i) == -1)
- {
- return -1;
- }
-
- // generate TAO_Param_Data structure
- stub << "static const TAO_Param_Data tao_demux_" << str->rep() <<
- "_params[] = {" << endl;
- stub << "\t{_tc_CORBA_Void, PARAM_RETURN, 0}" << endl;
- stub << "};" << endl;
-
- // generate TAO_Call_Data structure
- stub << "static const TAO_Call_Data tao_demux_" << str->rep() <<
- "_calldata = {" << endl;
- stub << "\t\"" << str->rep() << "\"," << endl;
- stub << "\t1, //twoway" << endl;
- stub << "\t1, &tao_demux_" << str->rep() << "_params[0]," << endl;
- stub << "\t0, 0" << endl;
- stub << "};" << endl;
-
- // generate TAO_Call_Data structure that uses active demultiplexing
- stub << "static const TAO_Call_Data tao_demux_" << str->rep() <<
- "_active_calldata = {" << endl;
- stub << "\t\"" << i << "\"," << endl;
- stub << "\t1, //twoway" << endl;
- stub << "\t1, &tao_demux_" << str->rep() << "_params[0]," << endl;
- stub << "\t0, 0" << endl;
- stub << "};" << endl;
-
- // now the actual stub
- stub << "void tao_demux::" << str->rep() << "(CORBA_Environment &env)"
- << endl;
- stub << "{" << endl;
- stub << "\tSTUB_Object *istub;" << endl;
- stub << "\tif (this->QueryInterface (IID_STUB_Object, (void **) &istub) "
- << "!= NOERROR){" << endl;
- stub << "\t env.exception (new CORBA_DATA_CONVERSION (COMPLETED_NO));" << endl;
- stub << "\t return;" << endl;
- stub << "\t}" << endl;
- stub << "\tTAO_Operation_Table_Parameters *paramTbl = " << endl;
- stub << "\t\tTAO_OP_TABLE_PARAMETERS::instance();" << endl;
- stub << "\tif (paramTbl->lookup_strategy() == ";
- stub << "TAO_Operation_Table_Parameters::TAO_ACTIVE_DEMUX)" << endl;
- stub << "\t\tistub->do_call(env, &tao_demux_" << str->rep() <<
- "_active_calldata);" << endl;
- stub << "\telse" << endl;
- stub << "\t\tistub->do_call(env, &tao_demux_" << str->rep() <<
- "_calldata);" << endl;
- stub << "}" << endl << endl;
- }
- stub.close();
-}
-
diff --git a/TAO/performance-tests/Demux/CodeGen/tao.cpp b/TAO/performance-tests/Demux/CodeGen/tao.cpp
deleted file mode 100644
index 98a4647b6cc..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/tao.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// $Id$
-
-#include "tao.h"
-
-ACE_RCSID(CodeGen, tao, "$Id$")
-
-int main (int argc, char *argv[])
-{
- // define the two arrays that will hold generated object keys and method
- // names of the hypothetical "tao_demux" interface
- ACE_Unbounded_Queue<ACE_CString> *objectArr, *methodArr;
-
- // provide default values to the limit on the number of object keys and
- // method names
- long objectLimit = 5,
- methodLimit = 4;
-
- // for parsing the arguments
- ACE_Get_Opt get_opt (argc, argv, "hm:o:");
-
- for (int c; (c = get_opt ()) != EOF;)
- {
- switch (c)
- {
- case 'm': // number of methods
- methodLimit = ACE_OS::atoi (get_opt.optarg);
- break;
- case 'o': // number of object keys
- objectLimit = ACE_OS::atoi (get_opt.optarg);
- break;
- case 'h': // usage
- default:
- Usage ();
- return 1;
- }
- }
-
- cout << "Generating code for " << objectLimit << " objects and " <<
- methodLimit << " methods" << endl;
- objectArr = new ACE_Unbounded_Queue<ACE_CString> [objectLimit];
- methodArr = new ACE_Unbounded_Queue<ACE_CString> [methodLimit];
-
- // generate the object keys
- if (GenObjectTable (*objectArr, objectLimit) == -1)
- {
- }
-
- // generate method names
- if (GenMethodTable (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate client side stub headers
- if (GenClientHeader (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate client stubs
- if (GenClientStubs (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate include code for client-side main program
- if (GenClientCode (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate server skeleton header
- if (GenServerHeader (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate server skeletons
- if (GenServerSkels (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate th eimpl header
- if (GenServantHeader (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate impl
- if (GenServantImpl (*methodArr, methodLimit) == -1)
- {
- }
-
- // generate code that creates instances of objects
- if (GenObjectCreateCode (*objectArr, objectLimit) == -1)
- {
- }
-
- GenGPERFCode ();
-}
-
-void Usage (void)
-{
- cerr << "Usage: tao [-m <#methods>] [-o <#objects>] [-h]" << endl;
- return;
-}
diff --git a/TAO/performance-tests/Demux/CodeGen/tao.h b/TAO/performance-tests/Demux/CodeGen/tao.h
deleted file mode 100644
index 13bf7094339..00000000000
--- a/TAO/performance-tests/Demux/CodeGen/tao.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// $Id$
-
-#include <iostream.h>
-#include <fstream.h>
-
-#include "ace/SString.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/Containers.h"
-#include "ace/Singleton.h"
-#include "ace/Get_Opt.h"
-
-long GenObjectTable(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenMethodTable(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenClientHeader(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenClientStubs(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenClientCode(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenObjectCreateCode(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenServerHeader(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenServerSkels(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenServantHeader(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-long GenServantImpl(ACE_Unbounded_Queue<ACE_CString> &arr, int limit);
-void GenGPERFCode();
-void Usage();
-
diff --git a/TAO/performance-tests/Demux/Makefile b/TAO/performance-tests/Demux/Makefile
index 5f450e996ed..af2d420c4b3 100644
--- a/TAO/performance-tests/Demux/Makefile
+++ b/TAO/performance-tests/Demux/Makefile
@@ -1,27 +1,41 @@
#----------------------------------------------------------------------------
# $Id$
#
-# Top-level Makefile for the CORBA request demultiplexing benchmark
+# Top-level Makefile for the Demux_Test test example
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Local macros
#----------------------------------------------------------------------------
-LDLIBS = -lTAO
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
-PROG_SRCS = client.cpp tao_demuxC.cpp tao_demuxS.cpp tao_demux_i.cpp server.cpp
+LDLIBS = -lTAO -lorbsvcs
+LDFLAGS += -L$(TAO_ROOT)/tao
-LSRC = $(PROG_SRCS)
+IDL_HDR = demux_testC.h demux_testS.h
+IDL_SRC = demux_testC.cpp demux_testS.cpp
-TAO_DEMUX_CLIENT_OBJS = client.o tao_demuxC.o
+SVR_FILES = demux_testC \
+ demux_testS \
+ demux_test_server \
+ demux_test_i \
+ server
-TAO_DEMUX_SERVER_OBJS = server.o tao_demuxC.o tao_demuxS.o tao_demux_i.o
+CLI_FILES = demux_testC \
+ demux_testS \
+ demux_test_client \
+ client
-BIN = client server
+DEMUX_TEST_SVR_OBJS = $(addsuffix .o,$(SVR_FILES))
+DEMUX_TEST_CLT_OBJS = $(addsuffix .o,$(CLI_FILES))
+SRC = $(addsuffix .cpp,$(SVR_FILES)) \
+ $(addsuffix .cpp,$(CLI_FILES))
+BIN = server client
BUILD = $(BIN)
-
VLDLIBS = $(LDLIBS:%=%$(VAR))
VBIN = $(BIN:%=%$(VAR))
@@ -31,30 +45,2230 @@ VBIN = $(BIN:%=%$(VAR))
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
include $(ACE_ROOT)/include/makeinclude/macros.GNU
+include $(TAO_ROOT)/rules.tao.GNU
include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
-include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
#include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
-#----------------------------------------------------------------------------
-# Local modifications to variables imported by includes above.
-#----------------------------------------------------------------------------
-
-LDFLAGS += -lTAO
-LDFLAGS += -L$(TAO_ROOT)/tao
-CPPFLAGS += -I$(TAO_ROOT)
+TSS_ORB_FLAG = #-DTAO_HAS_TSS_ORBCORE
+CPPFLAGS += -I$(TAO_ROOT) -I$(TAO_ROOT)/orbsvcs $(TSS_ORB_FLAG)
-ifdef debug
- CPPFLAGS += -DDEBUG
-endif
+.PRECIOUS: $(IDL_HDR) $(IDL_SRC)
-server: $(addprefix $(VDIR),$(TAO_DEMUX_SERVER_OBJS))
+server: $(addprefix $(VDIR),$(DEMUX_TEST_SVR_OBJS))
$(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
-client: $(addprefix $(VDIR),$(TAO_DEMUX_CLIENT_OBJS))
+client: $(addprefix $(VDIR),$(DEMUX_TEST_CLT_OBJS))
$(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK)
clean:
- $(MAKE) realclean
- rm -fr tao_demux* gperf* *.i client server
+ -/bin/rm -rf $(VDIR)/*.o $(BIN) obj.* core Templates.DB .make.state
+
+realclean: clean
+ cd CodeGen; $(MAKE) realclean
+ -/bin/rm -rf demux_testC.* demux_testS.* demux_testS_T.* \
+ demux_test_i.* demux_test.idl *.dat \
+ demux_test_client.i
+
+# DO NOT DELETE THIS LINE -- g++dep uses it.
+# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
+
+.obj/demux_testC.o .obj/demux_testC.so .shobj/demux_testC.o .shobj/demux_testC.so: demux_testC.cpp demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_testS.h demux_testS_T.h demux_testS_T.i \
+ demux_testS_T.cpp demux_testS.i
+.obj/demux_testS.o .obj/demux_testS.so .shobj/demux_testS.o .shobj/demux_testS.so: demux_testS.cpp demux_testS.h demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_testS_T.h demux_testS_T.i demux_testS_T.cpp \
+ demux_testS.i
+.obj/demux_test_server.o .obj/demux_test_server.so .shobj/demux_test_server.o .shobj/demux_test_server.so: demux_test_server.cpp demux_test_server.h \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(TAO_ROOT)/tao/TAO.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/Naming_Utils.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/IOR_Multicast.h \
+ $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.h \
+ $(ACE_ROOT)/ace/SOCK_Dgram.h \
+ $(ACE_ROOT)/ace/SOCK_Dgram.i \
+ $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/CosNaming_i.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/Entries.h \
+ demux_test_i.h demux_testS.h demux_testC.h demux_testC.i \
+ demux_testS_T.h demux_testS_T.i demux_testS_T.cpp demux_testS.i \
+ demux_test_macros.h
+.obj/demux_test_i.o .obj/demux_test_i.so .shobj/demux_test_i.o .shobj/demux_test_i.so: demux_test_i.cpp demux_test_i.h demux_testS.h \
+ demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_testS_T.h demux_testS_T.i demux_testS_T.cpp \
+ demux_testS.i
+.obj/server.o .obj/server.so .shobj/server.o .shobj/server.so: server.cpp demux_test_server.h \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(TAO_ROOT)/tao/TAO.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/Naming_Utils.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/IOR_Multicast.h \
+ $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.h \
+ $(ACE_ROOT)/ace/SOCK_Dgram.h \
+ $(ACE_ROOT)/ace/SOCK_Dgram.i \
+ $(ACE_ROOT)/ace/SOCK_Dgram_Mcast.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/CosNaming_i.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/Entries.h \
+ demux_test_i.h demux_testS.h demux_testC.h demux_testC.i \
+ demux_testS_T.h demux_testS_T.i demux_testS_T.cpp demux_testS.i \
+ demux_test_macros.h
+.obj/demux_testC.o .obj/demux_testC.so .shobj/demux_testC.o .shobj/demux_testC.so: demux_testC.cpp demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_testS.h demux_testS_T.h demux_testS_T.i \
+ demux_testS_T.cpp demux_testS.i
+.obj/demux_testS.o .obj/demux_testS.so .shobj/demux_testS.o .shobj/demux_testS.so: demux_testS.cpp demux_testS.h demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_testS_T.h demux_testS_T.i demux_testS_T.cpp \
+ demux_testS.i
+.obj/demux_test_client.o .obj/demux_test_client.so .shobj/demux_test_client.o .shobj/demux_test_client.so: demux_test_client.cpp demux_test_client.h \
+ demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_test_macros.h demux_test_client.i
+.obj/client.o .obj/client.so .shobj/client.o .shobj/client.so: client.cpp demux_test_client.h demux_testC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(TAO_ROOT)/tao/orbconf.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/inc_user_config.h \
+ $(ACE_ROOT)/ace/config.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/config-g++-common.h \
+ $(ACE_ROOT)/ace/streams.h \
+ $(ACE_ROOT)/ace/Basic_Types.h \
+ $(ACE_ROOT)/ace/Basic_Types.i \
+ $(ACE_ROOT)/ace/OS.i \
+ $(ACE_ROOT)/ace/Trace.h \
+ $(ACE_ROOT)/ace/Log_Msg.h \
+ $(ACE_ROOT)/ace/Log_Record.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.h \
+ $(ACE_ROOT)/ace/SOCK_IO.h \
+ $(ACE_ROOT)/ace/SOCK.h \
+ $(ACE_ROOT)/ace/Addr.h \
+ $(ACE_ROOT)/ace/Addr.i \
+ $(ACE_ROOT)/ace/IPC_SAP.h \
+ $(ACE_ROOT)/ace/IPC_SAP.i \
+ $(ACE_ROOT)/ace/SOCK.i \
+ $(ACE_ROOT)/ace/SOCK_IO.i \
+ $(ACE_ROOT)/ace/INET_Addr.h \
+ $(ACE_ROOT)/ace/INET_Addr.i \
+ $(ACE_ROOT)/ace/SOCK_Stream.i \
+ $(ACE_ROOT)/ace/Synch_T.h \
+ $(ACE_ROOT)/ace/Event_Handler.h \
+ $(ACE_ROOT)/ace/Event_Handler.i \
+ $(ACE_ROOT)/ace/Synch.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \
+ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \
+ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \
+ $(ACE_ROOT)/ace/Synch.i \
+ $(ACE_ROOT)/ace/Synch_T.i \
+ $(ACE_ROOT)/ace/Thread.h \
+ $(ACE_ROOT)/ace/Thread.i \
+ $(ACE_ROOT)/ace/Atomic_Op.i \
+ $(ACE_ROOT)/ace/Synch_T.cpp \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.h \
+ $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Service_Config.h \
+ $(ACE_ROOT)/ace/Service_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.h \
+ $(ACE_ROOT)/ace/Shared_Object.i \
+ $(ACE_ROOT)/ace/Service_Object.i \
+ $(ACE_ROOT)/ace/Signal.h \
+ $(ACE_ROOT)/ace/Containers.h \
+ $(ACE_ROOT)/ace/Containers.i \
+ $(ACE_ROOT)/ace/Containers_T.h \
+ $(ACE_ROOT)/ace/Containers_T.i \
+ $(ACE_ROOT)/ace/Containers_T.cpp \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Malloc.i \
+ $(ACE_ROOT)/ace/Malloc_T.h \
+ $(ACE_ROOT)/ace/Free_List.h \
+ $(ACE_ROOT)/ace/Free_List.i \
+ $(ACE_ROOT)/ace/Free_List.cpp \
+ $(ACE_ROOT)/ace/Malloc_T.i \
+ $(ACE_ROOT)/ace/Malloc_T.cpp \
+ $(ACE_ROOT)/ace/Memory_Pool.h \
+ $(ACE_ROOT)/ace/Mem_Map.h \
+ $(ACE_ROOT)/ace/Mem_Map.i \
+ $(ACE_ROOT)/ace/Memory_Pool.i \
+ $(ACE_ROOT)/ace/Signal.i \
+ $(ACE_ROOT)/ace/Object_Manager.h \
+ $(ACE_ROOT)/ace/Object_Manager.i \
+ $(ACE_ROOT)/ace/Managed_Object.h \
+ $(ACE_ROOT)/ace/Managed_Object.i \
+ $(ACE_ROOT)/ace/Managed_Object.cpp \
+ $(ACE_ROOT)/ace/SString.h \
+ $(ACE_ROOT)/ace/SString.i \
+ $(ACE_ROOT)/ace/Service_Config.i \
+ $(ACE_ROOT)/ace/Reactor.h \
+ $(ACE_ROOT)/ace/Handle_Set.h \
+ $(ACE_ROOT)/ace/Handle_Set.i \
+ $(ACE_ROOT)/ace/Timer_Queue.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.h \
+ $(ACE_ROOT)/ace/Timer_Queue_T.i \
+ $(ACE_ROOT)/ace/Timer_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Reactor.i \
+ $(ACE_ROOT)/ace/Reactor_Impl.h \
+ $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.h \
+ $(ACE_ROOT)/ace/Time_Value.h \
+ $(ACE_ROOT)/ace/SOCK_Acceptor.i \
+ $(ACE_ROOT)/ace/SOCK_Connector.h \
+ $(ACE_ROOT)/ace/SOCK_Connector.i \
+ $(ACE_ROOT)/ace/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/Message_Queue.h \
+ $(ACE_ROOT)/ace/Message_Block.h \
+ $(ACE_ROOT)/ace/Message_Block.i \
+ $(ACE_ROOT)/ace/Message_Block_T.h \
+ $(ACE_ROOT)/ace/Message_Block_T.i \
+ $(ACE_ROOT)/ace/Message_Block_T.cpp \
+ $(ACE_ROOT)/ace/IO_Cntl_Msg.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.h \
+ $(ACE_ROOT)/ace/Message_Queue_T.i \
+ $(ACE_ROOT)/ace/Message_Queue_T.cpp \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Connector.h \
+ $(ACE_ROOT)/ace/Map_Manager.h \
+ $(ACE_ROOT)/ace/Map_Manager.i \
+ $(ACE_ROOT)/ace/Map_Manager.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task_T.i \
+ $(ACE_ROOT)/ace/Task_T.cpp \
+ $(ACE_ROOT)/ace/Module.h \
+ $(ACE_ROOT)/ace/Module.i \
+ $(ACE_ROOT)/ace/Module.cpp \
+ $(ACE_ROOT)/ace/Stream_Modules.h \
+ $(ACE_ROOT)/ace/Stream_Modules.i \
+ $(ACE_ROOT)/ace/Stream_Modules.cpp \
+ $(ACE_ROOT)/ace/Svc_Handler.i \
+ $(ACE_ROOT)/ace/Svc_Handler.cpp \
+ $(ACE_ROOT)/ace/Dynamic.h \
+ $(ACE_ROOT)/ace/Singleton.h \
+ $(ACE_ROOT)/ace/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(ACE_ROOT)/ace/Dynamic.i \
+ $(ACE_ROOT)/ace/Connector.i \
+ $(ACE_ROOT)/ace/Connector.cpp \
+ $(ACE_ROOT)/ace/Acceptor.h \
+ $(ACE_ROOT)/ace/Acceptor.i \
+ $(ACE_ROOT)/ace/Acceptor.cpp \
+ $(TAO_ROOT)/tao/Align.h \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/ORB.h \
+ $(TAO_ROOT)/tao/Sequence.h \
+ $(TAO_ROOT)/tao/Sequence.i \
+ $(TAO_ROOT)/tao/Sequence_T.h \
+ $(TAO_ROOT)/tao/Sequence_T.i \
+ $(TAO_ROOT)/tao/Sequence_T.cpp \
+ $(TAO_ROOT)/tao/Object_KeyC.h \
+ $(TAO_ROOT)/tao/Object_KeyC.i \
+ $(TAO_ROOT)/tao/Union.h \
+ $(TAO_ROOT)/tao/ORB.i \
+ $(TAO_ROOT)/tao/try_macros.h \
+ $(TAO_ROOT)/tao/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/NVList.h \
+ $(TAO_ROOT)/tao/NVList.i \
+ $(TAO_ROOT)/tao/Principal.h \
+ $(TAO_ROOT)/tao/Principal.i \
+ $(TAO_ROOT)/tao/Request.h \
+ $(TAO_ROOT)/tao/Request.i \
+ $(TAO_ROOT)/tao/Stub.h \
+ $(TAO_ROOT)/tao/Stub.i \
+ $(TAO_ROOT)/tao/Object.h \
+ $(TAO_ROOT)/tao/Object.i \
+ $(TAO_ROOT)/tao/varout.h \
+ $(TAO_ROOT)/tao/varout.i \
+ $(TAO_ROOT)/tao/varout.cpp \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/Marshal.h \
+ $(TAO_ROOT)/tao/Marshal.i \
+ $(TAO_ROOT)/tao/singletons.h \
+ $(TAO_ROOT)/tao/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/POA.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Object_Table.h \
+ $(TAO_ROOT)/tao/Object_Table.i \
+ $(TAO_ROOT)/tao/POA.i \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/params.h \
+ $(TAO_ROOT)/tao/params.i \
+ $(TAO_ROOT)/tao/Connect.h \
+ $(TAO_ROOT)/tao/Connect.i \
+ $(TAO_ROOT)/tao/ORB_Core.h \
+ $(TAO_ROOT)/tao/ORB_Core.i \
+ $(ACE_ROOT)/ace/Dynamic_Service.h \
+ $(ACE_ROOT)/ace/Dynamic_Service.cpp \
+ $(TAO_ROOT)/tao/Operation_Table.h \
+ $(TAO_ROOT)/tao/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/default_client.h \
+ $(TAO_ROOT)/tao/default_client.i \
+ $(TAO_ROOT)/tao/default_server.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.h \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.i \
+ $(TAO_ROOT)/tao/ORB_Strategies_T.cpp \
+ $(TAO_ROOT)/tao/default_server.i \
+ $(TAO_ROOT)/tao/IIOP_Object.h \
+ $(TAO_ROOT)/tao/IIOP_Object.i \
+ $(TAO_ROOT)/tao/IIOP_ORB.h \
+ $(TAO_ROOT)/tao/IIOP_ORB.i \
+ $(TAO_ROOT)/tao/IIOP_Interpreter.h \
+ $(TAO_ROOT)/tao/GIOP.h \
+ $(TAO_ROOT)/tao/GIOP.i \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/Server_Request.h \
+ $(TAO_ROOT)/tao/Server_Request.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ demux_testC.i demux_test_macros.h
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/performance-tests/Demux/README b/TAO/performance-tests/Demux/README
index 133758e62e6..616cb7d5a8c 100644
--- a/TAO/performance-tests/Demux/README
+++ b/TAO/performance-tests/Demux/README
@@ -1,20 +1,80 @@
-
-***** NOTE: This is still under development and will not work *****
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// README
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
This test directory tests various demultiplexing strategies used in
-TAO.
+TAO for POA, object, and operation name lookups
Description of various files:
-make_all script that generates executables for different number
- of objects and methods
-gen_bin generates the binary for the desired number of objects
- and methods
-run_client runs a client
-run_server runs a server
-run_all_client runs all clients generated by the make_all
-run_all_server runs all servers generated by the make_all
CodeGen Directory containing the code generator
+
server.cpp server main program
+demux_test_server.{h, cpp}: Server-side implementation details
+
client.cpp client main program
+demux_test_client.{h, cpp}: Client-side implementation details
+demux_test_macros.h: Some constants used by both the client and the server
+
+
+Generated Files:
+----------------
+
+Must run ./CodeGen/demux tool to generate the following files. See
+CodeGen/README for command line options.
+
+
+demux_test.idl: The Demux_Test IDL interface
+demux_test_i.{h, cpp}: Implementation of the Interface
+demux_test_client.i: Code to be included with the client
+poa_names.dat: Names for all the POAs to be used
+
+
+Command Line options
+--------------------
+
+server -d (for debugging)
+ -p <num POAs>
+ -o <num objects>
+ -f <IOR file> default is ior.dat
+
+client -d (for debugging)
+ -p <num POAs>
+ -o <num objs>
+ -m <num methods>
+ -f <IOR file> default is ior.dat
+ -n <loop count>
+ -i <invoke strategy> (L = linear
+ R = random
+ B = best w.r.t linear
+ W = worst w.r.t linear)
+
+
+------
+*NOTE*
+------
+The num_POAs, num_objs, and num_ops must match on the client
+and server side.
+
+Use the svc.conf file and change the -ORBsystemidpolicydemuxstrategy
+option to use the desired object lookup strategy. For system ID
+policy, active demuxing in the default.
+
+Use the desired options to the TAO_IDL compiler so that it will
+generate the right lookup strategy for operation name
+demultiplexing.
+
+
+
diff --git a/TAO/performance-tests/Demux/client.cpp b/TAO/performance-tests/Demux/client.cpp
index f69d001788a..32e6bb51cf0 100644
--- a/TAO/performance-tests/Demux/client.cpp
+++ b/TAO/performance-tests/Demux/client.cpp
@@ -1,312 +1,59 @@
// $Id$
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include "tao_demuxC.h"
-#include "tao/debug.h"
-
-#include "ace/streams.h"
-
-ACE_RCSID(Demux_Test, client, "$Id$")
-
-void print_exception (const CORBA_Exception *x,
- const char *info,
- FILE *stream
- );
-
-char Usage[] = "\
-Usage: client options\n\
-options:\n\
--l strategy: operation lookup strategy - a(active), l(linear), d (dyn hash), p (perf)\n\
--i iter: number of iterations \n\
--m num: number of methods \n\
--o num: number of objects \n\
--t type: type can be l(linear), r(random), b (best), w (worst)\n\
-";
-
-#if !defined (__cplusplus)
-typedef void (*SIG_TYP)();
-#endif
-
-#ifdef SVR4
-void
-sigpipe (int foo)
-#else
- void
-sigpipe ()
-#endif
-{
-}
-
-static const char ior_prefix [] = "IOR:";
-static const char iiop_prefix [] = "iiop:";
-
-enum SendType{
- LINEAR,
- BEST,
- WORST,
- RANDOM
-};
-
-void do_test(tao_demux_ptr *demux, int olimit, int mlimit, SendType, int iter);
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// client.cpp
+//
+// client side main program
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include "demux_test_client.h"
+
+ACE_RCSID(CodeGen, client, "$Id$")
int
-main (int argc, char *argv[])
+main (int argc, char *argv [])
{
- unsigned long addr_tmp;
- unsigned short done = 0;
- int c;
-
- CORBA_ORB_ptr orb_ptr;
- CORBA_Environment env;
- CORBA_Object_ptr objref;
- tao_demux_ptr *demux;
- unsigned loop_count = 0;
- int exit_later = 0;
- int i;
- int ObjectLimit = 5,
- MethodLimit = 4;
- int iter= 1; // number of iterations
- SendType st = RANDOM;
- TAO_Operation_Table_Parameters *op_params = TAO_OP_TABLE_PARAMETERS::instance();
-
- CORBA_String str;
- fstream iorfile;
-
- while (!done && ((c = getopt (argc, argv, "i:l:t:m:o:")) !=
- -1)){
- switch(c){
- case 'i':
- iter = atoi (optarg);
- break;
- case 'l': // op table lookup strategy
- break;
- case 'm':
- MethodLimit = atoi(optarg);
- break;
- case 'o':
- ObjectLimit = atoi(optarg);
- break;
- case 't':
- switch(*optarg){
- case 'b':
- st = BEST;
- break;
- case 'w':
- st = WORST;
- break;
- case 'l':
- st = LINEAR;
- break;
- case 'r':
- default:
- st = RANDOM;
- break;
- }
- break;
- default:
- goto usage;
- }
- }
-
+ // Set TAO_debug_level to 0 to ensure silent running unless
+ // debugging is explicitly invoked
TAO_debug_level = 0;
- //
- // Transmitter
- //
- orb_ptr = CORBA_ORB_init (argc, argv, "ior", env);
- if (env.exception () != 0) {
- print_exception (env.exception (), "ORB initialization", stdout);
- return 1;
- }
-
- str = CORBA_string_alloc (500);
-
- // read the IOR from the file ior.txt
- iorfile.open("./ior.txt", ios::in);
-
- for (;!iorfile.eof ();){
- memset(str, '\0', 500);
- iorfile >> ((char *)str);
- if (iorfile.good ())
- loop_count++;
- }
- iorfile.close();
-
- ACE_DEBUG ((LM_DEBUG, "Total of %d object references read\n", loop_count));
- demux = new tao_demux_ptr [loop_count];
- for (i=0; i < loop_count; i++){
- demux[i] = 0;
- }
-
- // read the IOR from the file ior.txt
- iorfile.open("./ior.txt", ios::in);
-
- for (i=0; i < loop_count; i++){
- ACE_OS::memset (str, '\0', 500);
- iorfile >> ((char *)str);
- objref = orb_ptr->string_to_object(str, env);
- if (env.exception() != 0){
- print_exception(env.exception(), "string2object", stdout);
- return 1;
- }
-
- cout << "objref " << i << " has key = " << objref->_get_name(env) << endl;
- if (!CORBA_is_nil(objref)){
- // narrow to the desired interface type
- demux[i] = tao_demux::_narrow (objref);
- }
- }
- iorfile.close();
- CORBA_string_free(str);
-
-
- // send operations
- do_test(demux, ObjectLimit, MethodLimit, st, iter);
-
- for (i=0; i < loop_count; i++){
- CORBA_release(demux[i]);
- }
- delete [] demux;
- return(0);
-usage:
- fprintf (stderr, Usage);
- return 1;
-}
-
-typedef void (*method_ptr)(tao_demux_ptr);
-struct method_db {
- method_ptr method;
-};
-
-#include "client.i"
-
-void do_test(tao_demux_ptr *demux, int olimit, int mlimit, SendType st, int iter)
-{
- int i, j, k;
- int loop = 0;
- hrtime_t start, end, sum, diff;
- fstream result;
- CORBA_Environment env;
-
- result.open("result.dat",ios::out|ios::app);
-#ifdef __TAO_ACTIVE__
- result << "# ACTIVE ";
-#endif
-#ifdef __TAO_GPERF__
- result << "# GPERF ";
-#endif
-#ifdef __TAO_LINEAR__
- result << "# LINEAR ";
-#endif
-
- // result << "@type xy" << endl;
- sum = 0;
-
- if (st == LINEAR){
- result << " LINEAR" << endl;
-#ifdef __DEBUG__
- cout << "Linear strategy for sending" << endl;
-#endif
- for (k=0; k < iter; k++) {
- // invoke the jth method on the ith object
- for (i=0; i < olimit; i++){
- for (j=0; j < mlimit; j++){
- loop++;
- start = ACE_OS::gethrtime ();
- mtbl[j].method(demux[i]);
- end = ACE_OS::gethrtime ();
- diff = (end - start);
-#ifdef __DEBUG__
- cout << "Latency for this request = " << diff/1.0e+06 << endl;
-#endif
- sum += diff;
- // result << loop << "\t" << diff/1.e+06 << endl;
+
+ Demux_Test_Client demux_test_client;
+
+ TAO_TRY
+ {
+ if (demux_test_client.init (argc, argv, TAO_TRY_ENV) == -1)
+ return -1;
+ else
+ {
+ TAO_CHECK_ENV;
+
+ demux_test_client.run (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
}
- }
}
- } else if (st == BEST){
- result << " BEST" << endl;
-#ifdef __DEBUG__
- cout << "best strategy for sending" << endl;
-#endif
- for (k=0; k < iter; k++) {
- // invoke the jth method on the ith object
- for (i=0; i < olimit; i++){
- for (j=0; j < mlimit; j++){
- loop++;
- start = ACE_OS::gethrtime ();
- mtbl[0].method(demux[0]);
- end = ACE_OS::gethrtime ();
- diff = (end - start);
-#ifdef __DEBUG__
- cout << "Latency for this request = " << diff/1.0e+06 << endl;
-#endif
- sum += diff;
- // result << loop << "\t" << diff/1.e+06 << endl;
- }
- }
+ TAO_CATCH (CORBA::SystemException, sysex)
+ {
+ ACE_UNUSED_ARG (sysex);
+ TAO_TRY_ENV.print_exception ("System Exception");
+ return -1;
}
- } else if (st == RANDOM) {
- result << " RANDOM" << endl;
-#ifdef __DEBUG__
- cout << "Random strategy for sending" << endl;
-#endif
- // choose the object and method name randomly
- srand48(time(NULL));
- long p, q;
- for (k=0; k < iter; k++) {
- for (i=0; i < olimit; i++){
- for (j=0; j < mlimit; j++){
- loop++;
- p = lrand48() % olimit;
- q = lrand48() % mlimit;
- start = ACE_OS::gethrtime ();
-#ifdef DEBUG
- ACE_DEBUG ((LM_DEBUG, "Invoking op %s on object with key %s\n",
- mtbl[q], demux[p]->_get_name(env)));
-#endif
- mtbl[q].method(demux[p]);
- end = ACE_OS::gethrtime ();
- diff = (end - start);
-#ifdef __DEBUG__
- cout << "Latency for this request = " << diff/1.0e+06 << endl;
-#endif
- sum += diff;
- // result << loop << "\t" << diff/1.e+06 << endl;
- }
- }
+ TAO_CATCH (CORBA::UserException, userex)
+ {
+ ACE_UNUSED_ARG (userex);
+ TAO_TRY_ENV.print_exception ("User Exception");
+ return -1;
}
- } else if (st == WORST){
- result << " WORST" << endl;
-#ifdef __DEBUG__
- cout << "worst strategy for sending" << endl;
-#endif
- // invoke the jth method on the ith object
- for (k=0; k < iter; k++) {
- for (i=0; i < olimit; i++){
- for (j=0; j < mlimit; j++){
- loop++;
- start = ACE_OS::gethrtime ();
- mtbl[mlimit-1].method(demux[olimit-1]);
- end = ACE_OS::gethrtime ();
- diff = (end - start);
-#ifdef __DEBUG__
- cout << "Latency for this request = " << diff/1.0e+06 << endl;
-#endif
- sum += diff;
- // result << loop << "\t" << diff/1.e+06 << endl;
- }
- }
- }
- }
- result << olimit << "\t" << mlimit << "\t" << sum/(loop*1000000.0) << endl;
- cout << olimit << "\t" << mlimit << "\t" << sum/(loop*1000000.0) << endl;
- result.close();
+ TAO_ENDTRY;
+
}
-
diff --git a/TAO/performance-tests/Demux/demux_test_client.cpp b/TAO/performance-tests/Demux/demux_test_client.cpp
new file mode 100644
index 00000000000..37bfa91f842
--- /dev/null
+++ b/TAO/performance-tests/Demux/demux_test_client.cpp
@@ -0,0 +1,491 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// demux_test_client.cpp
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "demux_test_client.h"
+
+// Constructor
+Demux_Test_Client::Demux_Test_Client (void)
+ : argc_ (0),
+ argv_ (0),
+ is_ (Demux_Test_Client::LINEAR),
+ num_POAs_ (1),
+ // default number of child POAs is 1 and each one will always have 1 object
+ num_objs_ (1),
+ num_ops_ (1),
+ loop_count_ (1),
+ ior_fp_ (0),
+ result_fp_ (0)
+{
+}
+
+// destructor
+Demux_Test_Client::~Demux_Test_Client (void)
+{
+ ACE_OS::fclose (this->ior_fp_);
+ ACE_OS::fclose (this->result_fp_);
+}
+
+//
+// initialize the Demux_Test_Client
+//
+
+int
+Demux_Test_Client::init (int argc, char *argv [], CORBA::Environment &env)
+{
+ this->argc_ = argc;
+ this->argv_ = argv;
+
+ // Grab the ORB
+ TAO_TRY_EX (GET_ORB)
+ {
+ char *orb_name = "internet"; // unused by TAO
+
+ // get the underlying ORB
+ this->orb_ = CORBA::ORB_init (argc, argv, orb_name, TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (GET_ORB);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("ORB_init");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ // now parse the rest of the arguments to determine the POA depth, the number
+ // of objects with each POA and other info
+
+ if (this->parse_args () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_Client::init - "
+ "parse_args failed\n"),
+ -1);
+
+ if (this->init_operation_db () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_Client::init - "
+ "init_operation_db failed\n"),
+ -1);
+
+ // now read all the IORS
+ CORBA::ULong i, j;
+
+ for (i = 0; i < this->num_POAs_; ++i)
+ for (j = 0; j < this->num_objs_; ++j)
+ {
+ char str [1028];
+ ACE_OS::memset (str, 0, 1028);
+
+ if (fscanf (this->ior_fp_, "%s", str) == EOF)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "IOR database has less entries than required\n"),
+ -1);
+ }
+
+ // Get the IOR and output it to the file
+ TAO_TRY_EX (IOR)
+ {
+ CORBA::Object_var objref = this->orb_->string_to_object (str,
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (IOR);
+
+ // now narrow to Demux_Test object
+
+ this->demux_test_[i][j] = Demux_Test::_narrow (objref.in (),
+ TAO_TRY_ENV);
+
+ TAO_CHECK_ENV_EX (IOR);
+
+ if (CORBA::is_nil (this->demux_test_[i][j].in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "ObjRef for IOR %s (POA %d, OBJ %d) is NULL\n",
+ str, i, j),
+ -1);
+ }
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("object_to_string");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+ } // j and i loop
+
+ ACE_OS::fclose (this->ior_fp_);
+
+ // success
+ return 0;
+
+}
+
+// parse command line arguments (if any).
+int
+Demux_Test_Client::parse_args (void)
+{
+
+ ACE_Get_Opt get_opts (this->argc_, this->argv_, "df:m:n:o:p:i:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'd': // debug flag
+ TAO_debug_level++;
+ break;
+ case 'f':
+ this->ior_fp_ = ACE_OS::fopen (get_opts.optarg, "w");
+ if (this->ior_fp_ == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to open %s for writing: %p\n",
+ get_opts.optarg), -1);
+ break;
+ case 'm':
+ this->num_ops_ = ACE_OS::atoi (get_opts.optarg);
+ if (this->num_ops_ > TAO_DEMUX_TEST_MAX_OPS)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%d exceeds the maximum of "
+ "%d objects per POA\n",
+ this->num_objs_,
+ TAO_DEMUX_TEST_MAX_OPS),
+ -1);
+ }
+ break;
+ case 'n':
+ this->loop_count_ = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case 'o':
+ this->num_objs_ = ACE_OS::atoi (get_opts.optarg);
+ if (this->num_objs_ > TAO_DEMUX_TEST_MAX_OBJS)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%d exceeds the maximum of "
+ "%d objects per POA\n",
+ this->num_objs_,
+ TAO_DEMUX_TEST_MAX_OBJS),
+ -1);
+ }
+ break;
+ case 'p':
+ this->num_POAs_ = ACE_OS::atoi (get_opts.optarg);
+ if (this->num_POAs_ > TAO_DEMUX_TEST_MAX_POAS)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%d exceeds the maximum of "
+ "%d POAs\n",
+ this->num_objs_,
+ TAO_DEMUX_TEST_MAX_POAS),
+ -1);
+ }
+ break;
+ case 'i':
+ switch (*get_opts.optarg)
+ {
+ case 'L':
+ this->is_ = Demux_Test_Client::LINEAR;
+ break;
+ case 'R':
+ this->is_ = Demux_Test_Client::RANDOM;
+ break;
+ case 'B':
+ this->is_ = Demux_Test_Client::BEST;
+ break;
+ case 'W':
+ this->is_ = Demux_Test_Client::WORST;
+ break;
+ }
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s"
+ " [-d]"
+ " [-m <num ops>]"
+ " [-o <num objs>]"
+ " [-p <num POAs]"
+ " [-i <invoke strategy>"
+ " [-f <IOR file>]"
+ " [-n <loop count>]"
+ "\n"
+ "Invocation Strategy: L(linear), R(random)"
+ "B(best), W(worst)\n",
+ this->argv_ [0]),
+ -1);
+ }
+
+ if (!this->ior_fp_)
+ {
+ // open default IOR file
+ this->ior_fp_ = ACE_OS::fopen ("ior.dat", "r");
+ if (this->ior_fp_ == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to open file ior.dat for reading\n"), -1);
+ }
+ return 0;
+}
+
+// The main program for Demux_Test
+int
+Demux_Test_Client::run (CORBA::Environment &env)
+{
+ TAO_TRY
+ {
+ // open a temporary results file
+ if ((this->result_fp_ = ACE_OS::fopen ("results.dat", "w")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Demux_Test_Client::run - "
+ "Failed to open the results file for writing\n"),
+ -1);
+ }
+ switch (this->is_)
+ {
+ case Demux_Test_Client::LINEAR:
+ (void) this->run_linear_test (TAO_TRY_ENV);
+ break;
+ case Demux_Test_Client::RANDOM:
+ (void) this->run_random_test (TAO_TRY_ENV);
+ break;
+ case Demux_Test_Client::BEST:
+ (void) this->run_best_test (TAO_TRY_ENV);
+ break;
+ case Demux_Test_Client::WORST:
+ (void) this->run_worst_test (TAO_TRY_ENV);
+ break;
+ }
+ TAO_CHECK_ENV;
+
+ ACE_OS::fclose (this->result_fp_);
+
+ // now print the results
+ if (this->print_results () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Demux_Test_Client::run - "
+ "Print results failed\n"),
+ -1);
+ }
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("run failed");
+ env.exception (TAO_TRY_ENV.exception ());
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_Client::run - "
+ "Error running the Client\n"),
+ -1);
+ }
+ TAO_ENDTRY;
+
+ return 0;
+}
+
+int
+Demux_Test_Client::run_linear_test (CORBA::Environment &env)
+{
+ CORBA::ULong i, j, k, l, m;
+ ACE_hrtime_t start, end;
+
+ m = 0;
+ for (i = 0; i < this->loop_count_; ++i)
+ for (j = 0; j < this->num_POAs_; ++j)
+ for (k = 0; k < this->num_objs_; ++k)
+ for (l = 0; l < this->num_ops_; ++l)
+ {
+ start = ACE_OS::gethrtime ();
+
+ // invoke the method
+ this->op_db_[l].op_ (this->demux_test_[j][k].in (), env);
+
+ end = ACE_OS::gethrtime ();
+
+ m++;
+ ACE_OS::fprintf (this->result_fp_, "%d %f\n", m, (1.0*end - 1.0*start));
+ }
+
+ return 0;
+}
+
+int
+Demux_Test_Client::run_random_test (CORBA::Environment &env)
+{
+ CORBA::ULong i, j, k, l, m;
+ ACE_hrtime_t start, end;
+ long p, q, r;
+
+ m = 0;
+ // set the random number generator seed
+ srand48 (ACE_OS::time ());
+ for (i = 0; i < this->loop_count_; ++i)
+ for (j = 0; j < this->num_POAs_; ++j)
+ for (k = 0; k < this->num_objs_; ++k)
+ for (l = 0; l < this->num_ops_; ++l)
+ {
+ p = lrand48 () % this->num_POAs_;
+ q = lrand48 () % this->num_objs_;
+ r = lrand48 () % this->num_ops_;
+ start = ACE_OS::gethrtime ();
+
+ // invoke the method
+ this->op_db_[r].op_ (this->demux_test_[p][q].in (), env);
+
+ end = ACE_OS::gethrtime ();
+ m++;
+ ACE_OS::fprintf (this->result_fp_, "%d %f\n", m, (1.0*end - 1.0*start));
+ }
+
+ return 0;
+}
+
+int
+Demux_Test_Client::run_best_test (CORBA::Environment &env)
+{
+ CORBA::ULong i, j, k, l, m;
+ ACE_hrtime_t start, end;
+
+ m = 0;
+ for (i = 0; i < this->loop_count_; ++i)
+ for (j = 0; j < this->num_POAs_; ++j)
+ for (k = 0; k < this->num_objs_; ++k)
+ for (l = 0; l < this->num_ops_; ++l)
+ {
+ start = ACE_OS::gethrtime ();
+
+ // invoke the method
+ this->op_db_[0].op_ (this->demux_test_[0][0].in (), env);
+
+ end = ACE_OS::gethrtime ();
+ m++;
+ ACE_OS::fprintf (this->result_fp_, "%d %f\n", m, (1.0*end - 1.0*start));
+ }
+
+ return 0;
+}
+
+int
+Demux_Test_Client::run_worst_test (CORBA::Environment &env)
+{
+ CORBA::ULong i, j, k, l, m;
+ ACE_hrtime_t start, end;
+
+ m = 0;
+ for (i = 0; i < this->loop_count_; ++i)
+ for (j = 0; j < this->num_POAs_; ++j)
+ for (k = 0; k < this->num_objs_; ++k)
+ for (l = 0; l < this->num_ops_; ++l)
+ {
+ start = ACE_OS::gethrtime ();
+
+ // invoke the method
+ this->op_db_[this->num_ops_ - 1].op_
+ (this->demux_test_[this->num_POAs_ - 1][this->num_objs_ - 1].in
+ (), env);
+
+ end = ACE_OS::gethrtime ();
+ m++;
+ ACE_OS::fprintf (this->result_fp_, "%d %f\n", m, (1.0*end - 1.0*start));
+ }
+
+ return 0;
+}
+
+int
+Demux_Test_Client::print_results (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "******** "));
+ switch (this->is_)
+ {
+ case Demux_Test_Client::LINEAR:
+ ACE_DEBUG ((LM_DEBUG,
+ "Linear Strategy ******\n"));
+ break;
+ case Demux_Test_Client::RANDOM:
+ ACE_DEBUG ((LM_DEBUG,
+ "Random Strategy ******\n"));
+ break;
+ case Demux_Test_Client::BEST:
+ ACE_DEBUG ((LM_DEBUG,
+ "Best Strategy ******\n"));
+ break;
+ case Demux_Test_Client::WORST:
+ ACE_DEBUG ((LM_DEBUG,
+ "Worst Strategy ******\n"));
+ break;
+ }
+
+ CORBA::ULong i, items;
+ double temp, mean, sum, deviation, std_deviation;
+
+ if ((this->result_fp_ = ACE_OS::fopen ("results.dat", "r")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Demux_Test_Client::print_results - "
+ "Failed to open the results file for reading\n"),
+ -1);
+ }
+
+ sum = 0;
+ items = 0;
+ while (fscanf (this->result_fp_, "%d %lf", &i, &temp) != EOF)
+ {
+ sum += temp;
+ ++items;
+ }
+
+ ACE_OS::fclose (this->result_fp_);
+
+ mean = sum/items;
+
+ // now compute standard deviation
+
+ if ((this->result_fp_ = ACE_OS::fopen ("results.dat", "r")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Demux_Test_Client::print_results - "
+ "Failed to open the results file for reading\n"),
+ -1);
+ }
+
+ sum = 0;
+ while (fscanf (this->result_fp_, "%d %lf", &i, &temp) != EOF)
+ {
+ deviation = temp - mean;
+ sum += deviation * deviation;
+ }
+
+ if (items == 1)
+ std_deviation = 0;
+ else
+ std_deviation = sqrt (sum/(items - 1));
+
+ ACE_OS::fclose (this->result_fp_);
+
+ ACE_OS::unlink ("results.dat");
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Average response time = %f millisec\n"
+ "Standard Deviation = %f millisec\n",
+ (mean * 1e-06),
+ (std_deviation * 1e-06)));
+
+ return 0;
+}
+
+// include the generated code
+#include "demux_test_client.i"
diff --git a/TAO/performance-tests/Demux/demux_test_client.h b/TAO/performance-tests/Demux/demux_test_client.h
new file mode 100644
index 00000000000..f4e2aafe496
--- /dev/null
+++ b/TAO/performance-tests/Demux/demux_test_client.h
@@ -0,0 +1,126 @@
+#ifndef TAO_DEMUX_TEST_CLIENT_H
+#define TAO_DEMUX_TEST_CLIENT_H
+
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// demux_test_client.h
+//
+// Definition of the client-side demux_test class
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include "demux_testC.h"
+#include "demux_test_macros.h"
+#include <math.h>
+
+class Demux_Test_Client
+{
+public:
+
+ // Request invocation strategies
+ enum INVOKE_STRATEGY
+ {
+ LINEAR,
+ RANDOM,
+ BEST,
+ WORST
+ };
+
+ typedef void (*OP_PTR) (Demux_Test_ptr, CORBA::Environment &);
+
+ struct Operation_DB_Entry
+ {
+ OP_PTR op_;
+ };
+
+ Demux_Test_Client (void);
+ // CTOR
+
+ ~Demux_Test_Client (void);
+ // DTOR
+
+ int init (int argc, char *argv [], CORBA::Environment &env
+ = CORBA::Environment::default_environment ());
+ // initialize the client test bed
+
+ int run (CORBA::Environment &env
+ = CORBA::Environment::default_environment ());
+ // run the tests
+
+private:
+
+ int parse_args (void);
+ // parse command line arguments
+
+ int init_operation_db (void);
+ // initialize the operation database
+
+ int run_linear_test (CORBA::Environment &env
+ = CORBA::Environment::default_environment ());
+ // run linear strategy
+
+ int run_random_test (CORBA::Environment &env
+ = CORBA::Environment::default_environment ());
+ // run random strategy
+
+ int run_best_test (CORBA::Environment &env
+ = CORBA::Environment::default_environment ());
+ // run best strategy (w.r.t to linear)
+
+ int run_worst_test (CORBA::Environment &env
+ = CORBA::Environment::default_environment ());
+ // run worst strategy (w.r.t to linear)
+
+ int print_results (void);
+ // print results
+
+ int argc_;
+ // number of command line arguments
+
+ char **argv_;
+ // the actual command line arguments
+
+ CORBA::ORB_var orb_;
+ // The underlying ORB
+
+ INVOKE_STRATEGY is_;
+ // invocation strategy (default linear)
+
+ CORBA::ULong num_POAs_;
+ // number of POAs
+
+ CORBA::ULong num_objs_;
+ // number of objects
+
+ CORBA::ULong num_ops_;
+ // number of operations
+
+ Demux_Test_var demux_test_[TAO_DEMUX_TEST_MAX_POAS][TAO_DEMUX_TEST_MAX_OBJS];
+ // object references to the Demux_Test objects
+
+ CORBA::ULong loop_count_;
+ // number of times to invoke the request
+
+ FILE *ior_fp_;
+ // IOR database
+
+ FILE *result_fp_;
+ // temporary results file
+
+ Operation_DB_Entry op_db_[TAO_DEMUX_TEST_MAX_OPS];
+ // database of operations
+
+};
+
+
+#endif /* TAO_DEMUX_TEST_CLIENT_H */
diff --git a/TAO/performance-tests/Demux/demux_test_macros.h b/TAO/performance-tests/Demux/demux_test_macros.h
new file mode 100644
index 00000000000..f2cb975fb25
--- /dev/null
+++ b/TAO/performance-tests/Demux/demux_test_macros.h
@@ -0,0 +1,26 @@
+#ifndef TAO_DEMUX_TEST_MACROS_H
+#define TAO_DEMUX_TEST_MACROS_H
+
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// demux_test_macros.h
+//
+// constants used by both the server and client
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#define TAO_DEMUX_TEST_MAX_POAS 100
+#define TAO_DEMUX_TEST_MAX_OBJS 1000
+#define TAO_DEMUX_TEST_MAX_OPS 500
+
+#endif /* TAO_DEMUX_TEST_MACROS_H */
+
diff --git a/TAO/performance-tests/Demux/demux_test_server.cpp b/TAO/performance-tests/Demux/demux_test_server.cpp
new file mode 100644
index 00000000000..e2092bcb75f
--- /dev/null
+++ b/TAO/performance-tests/Demux/demux_test_server.cpp
@@ -0,0 +1,370 @@
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// demux_test_server.cpp
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "demux_test_server.h"
+
+ACE_RCSID(CodeGen, demux_test_server, "$Id$")
+
+// Constructor
+Demux_Test_Server::Demux_Test_Server (void)
+ : argc_ (0),
+ argv_ (0),
+ num_POAs_ (1),
+ // default number of child POAs is 1 and each one will always have 1 object
+ num_objs_ (1),
+ poa_fp_ (0),
+ ior_fp_ (0)
+{
+}
+
+// destructor
+Demux_Test_Server::~Demux_Test_Server (void)
+{
+ CORBA::ULong i, j;
+
+ ACE_OS::fclose (this->poa_fp_);
+ ACE_OS::fclose (this->ior_fp_);
+}
+
+//
+// initialize the Demux_Test_Server
+//
+
+int
+Demux_Test_Server::init (int argc, char *argv [], CORBA::Environment &env)
+{
+ this->argc_ = argc;
+ this->argv_ = argv;
+
+ // Grab the ORB
+ TAO_TRY_EX (GET_ORB)
+ {
+ char *orb_name = "internet"; // unused by TAO
+
+ // get the underlying ORB
+ this->orb_ = CORBA::ORB_init (argc, argv, orb_name, TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (GET_ORB);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("ORB_init");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ // Grab the ROOT POA
+ TAO_TRY_EX (GET_ROOT_POA)
+ {
+ CORBA::Object_var temp; // holder for the myriad of times we get
+ // an object which we then have to narrow.
+ // Get the Root POA
+
+ temp = this->orb_->resolve_initial_references ("RootPOA");
+ if (CORBA::is_nil (temp.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%P|%t) Unable to get root poa reference.\n"),
+ 1);
+
+ this->root_poa_ = PortableServer::POA::_narrow (temp.in (), TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (GET_ROOT_POA);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("PortableServer::POA::_narrow");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ // grab the POA Manager
+ TAO_TRY_EX (GET_POA_MGR)
+ {
+
+ this->poa_mgr_ = this->root_poa_->the_POAManager (TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (GET_POA_MGR);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("RootPOA->the_POAManager");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ // now parse the rest of the arguments to determine the POA depth, the number
+ // of objects with each POA and other info
+
+ if (this->parse_args () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_Server::init - "
+ "parse_args failed\n"),
+ -1);
+
+ // init the Policies used by all the POAs
+ CORBA::PolicyList policies (2);
+
+ TAO_TRY_EX (POLICY)
+ {
+ // The id_uniqueness_policy by default is UNIQUE_ID. So each of our servants
+ // will have a unique name
+
+ policies.length (2);
+
+ // let the system assign us the ID. This way we will be able to use
+ // active demultiplexing
+ policies[0] =
+ this->root_poa_->create_id_assignment_policy (PortableServer::SYSTEM_ID,
+ TAO_TRY_ENV);
+
+ TAO_CHECK_ENV_EX (POLICY);
+
+ // servants are persistent
+ policies[1] =
+ this->root_poa_->create_lifespan_policy (PortableServer::PERSISTENT,
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (POLICY);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("creating policy");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+
+ // now create a POA hierarchy of the desired depth and populate each POA with
+ // the specified number of objects. Finally, activate these objects.
+
+ // open the file that has all the POA names in it
+ if ((this->poa_fp_ = ACE_OS::fopen ("poa_names.dat", "r")) == 0)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to open POA file\n"),
+ -1);
+ }
+
+ // loop indices
+ CORBA::ULong i, j;
+
+ PortableServer::POA *prev_poa = this->root_poa_.in ();
+ for (i = 0; i < this->num_POAs_; i++)
+ {
+ char poa_name [128];
+
+ ACE_OS::memset (poa_name, 0, 128);
+ (void) fscanf (this->poa_fp_, "%s", poa_name);
+
+ TAO_TRY_EX (CREATE_POA)
+ {
+ this->child_poa_[i] = prev_poa->create_POA (poa_name,
+ this->poa_mgr_.in (),
+ policies,
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (CREATE_POA);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("create_POA");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+
+ for (j = 0; j < this->num_objs_; j++)
+ {
+
+ // activate the object
+ TAO_TRY_EX (ACTIVATE_OBJ)
+ {
+ PortableServer::ObjectId_var obj_var =
+ this->child_poa_[i]->activate_object (&this->demux_test_[i][j],
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV_EX (ACTIVATE_OBJ);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("poa->activate_obj");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ // Get the IOR and output it to the file
+ TAO_TRY_EX (IOR)
+ {
+ Demux_Test_var demux_var = this->demux_test_[i][j]._this (TAO_TRY_ENV);
+
+ TAO_CHECK_ENV_EX (IOR);
+
+ CORBA::String_var ior = this->orb_->object_to_string
+ (demux_var.in (), TAO_TRY_ENV);
+
+ TAO_CHECK_ENV_EX (IOR);
+
+ ACE_OS::fprintf (this->ior_fp_, "%s\n", ior.in ());
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("object_to_string");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+ } // j loop
+
+ prev_poa = this->child_poa_[i].in ();
+
+ } // i loop
+
+ ACE_OS::fclose (this->ior_fp_);
+
+ // now activate the POAs
+
+ TAO_TRY_EX (ACTIVATE)
+ {
+ this->poa_mgr_->activate (TAO_TRY_ENV);
+
+ TAO_CHECK_ENV_EX (ACTIVATE);
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("poa_mgr->activate");
+ env.exception (TAO_TRY_ENV.exception ());
+ return -1;
+ }
+ TAO_ENDTRY;
+
+
+ // success
+ return 0;
+
+}
+
+// parse command line arguments (if any).
+int
+Demux_Test_Server::parse_args (void)
+{
+
+ ACE_Get_Opt get_opts (this->argc_, this->argv_, "df:o:p:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'd': // debug flag
+ TAO_debug_level++;
+ break;
+ case 'f':
+ this->ior_fp_ = ACE_OS::fopen (get_opts.optarg, "w");
+ if (this->ior_fp_ == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to open %s for writing: %p\n",
+ get_opts.optarg), -1);
+ break;
+ case 'o':
+ this->num_objs_ = ACE_OS::atoi (get_opts.optarg);
+ if (this->num_objs_ > TAO_DEMUX_TEST_MAX_OBJS)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%d exceeds the maximum of "
+ "%d objects per POA\n",
+ this->num_objs_,
+ TAO_DEMUX_TEST_MAX_OBJS),
+ -1);
+ }
+ break;
+ case 'p':
+ this->num_POAs_ = ACE_OS::atoi (get_opts.optarg);
+ if (this->num_POAs_ > TAO_DEMUX_TEST_MAX_POAS)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "%d exceeds the maximum of "
+ "%d POAs\n",
+ this->num_objs_,
+ TAO_DEMUX_TEST_MAX_POAS),
+ -1);
+ }
+ break;
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s"
+ " [-d]"
+ " [-o <num objects>]"
+ " [-p <num POAs>]"
+ " [-f <IOR file>]"
+ "\n", this->argv_ [0]),
+ -1);
+ }
+
+ if (!this->ior_fp_)
+ {
+ // open default IOR file
+ this->ior_fp_ = ACE_OS::fopen ("ior.dat", "w");
+ if (this->ior_fp_ == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Unable to open file ior.dat for writing\n"), -1);
+ }
+ return 0;
+}
+
+// grab a reference to the naming service so that we can register with it.
+int
+Demux_Test_Server::init_naming_service (void)
+{
+ // Initialize the naming services
+ if (this->my_name_client_.init (this->orb_.in ()) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize "
+ "the TAO_Naming_Client. \n"),
+ -1);
+
+ // success
+ return 0;
+}
+
+// The main program for Demux_Test
+int
+Demux_Test_Server::run (CORBA::Environment &env)
+{
+ TAO_TRY
+ {
+
+ if (this->orb_->run () == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_Server::run - "
+ "orb run failed\n"),
+ -1);
+ }
+ TAO_CHECK_ENV;
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("run failed");
+ env.exception (TAO_TRY_ENV.exception ());
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) Demux_Test_Server::run - "
+ "Error running the server\n"),
+ -1);
+ }
+ TAO_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/performance-tests/Demux/demux_test_server.h b/TAO/performance-tests/Demux/demux_test_server.h
new file mode 100644
index 00000000000..adbb629f8d1
--- /dev/null
+++ b/TAO/performance-tests/Demux/demux_test_server.h
@@ -0,0 +1,94 @@
+
+#ifndef DOORS_DEMUX_TEST_SERVER_H
+#define DOORS_DEMUX_TEST_SERVER_H
+
+// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// demux_test_server.h
+//
+// Server-side demux_test class
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+
+#include "ace/Get_Opt.h"
+#include "ace/Log_Msg.h"
+#include "tao/TAO.h"
+#include "orbsvcs/Naming/Naming_Utils.h"
+
+#include "demux_test_i.h"
+#include "demux_test_macros.h"
+
+class Demux_Test_Server
+{
+public:
+ Demux_Test_Server (void);
+ // ctor
+
+ ~Demux_Test_Server (void);
+ // dtor
+
+ int run (CORBA::Environment &);
+ // Execute client code.
+
+ int init (int argc, char **argv, CORBA::Environment &);
+ // Initialize the communication endpoint with server.
+
+private:
+
+ int parse_args (void);
+ // parse command line arguments (if any)
+
+ int init_naming_service (void);
+ // initialize the naming service
+
+ int argc_;
+ // # of arguments on the command line.
+
+ char **argv_;
+ // arguments from command line.
+
+ CORBA::ORB_var orb_;
+ // the ORB
+
+ PortableServer::POA_var root_poa_;
+ // the root POA (we will not have any objects registerd with this)
+
+ PortableServer::POAManager_var poa_mgr_;
+ // The POA manager
+
+ PortableServer::POA_var child_poa_ [TAO_DEMUX_TEST_MAX_POAS];
+ // An array of child POAs with the next one being the child of the previous
+ // one
+
+ TAO_Naming_Client my_name_client_;
+ // An instance of the name client used for resolving the factory
+ // objects.
+
+ Demux_Test_i demux_test_[TAO_DEMUX_TEST_MAX_POAS][TAO_DEMUX_TEST_MAX_OBJS];
+ // The actual demux_test objects
+
+ CORBA::ULong num_POAs_;
+ // number of POAs
+
+ CORBA::ULong num_objs_;
+ // number of objects
+
+ FILE *poa_fp_;
+ // file storing POA names
+
+ FILE *ior_fp_;
+ // file for storing IORs
+};
+
+
+#endif /* DOORS_DEMUX_TEST_SERVER_H */
diff --git a/TAO/performance-tests/Demux/server.cpp b/TAO/performance-tests/Demux/server.cpp
index ae2670b728a..f2d7b80dbbd 100644
--- a/TAO/performance-tests/Demux/server.cpp
+++ b/TAO/performance-tests/Demux/server.cpp
@@ -1,314 +1,60 @@
// $Id$
+// ============================================================================
+//
+// = LIBRARY
+// TAO/performance-tests/Demux
+//
+// = FILENAME
+// server.cpp
+//
+// Server-side driver program
+//
+// = AUTHOR
+//
+// Aniruddha Gokhale
+//
+// ============================================================================
-#include "tao_demux_i.h"
-#if defined (ACE_HAS_QUANTIFY)
-# include <quantify.h>
-#endif /* ACE_HAS_QUANTIFY */
+#include "demux_test_server.h"
-#include "ace/streams.h"
-#include "ace/SString.h"
+ACE_RCSID(CodeGen, server, "$Id$")
-ACE_RCSID(Demux_Test, server, "$Id$")
-void print_exception (const CORBA_Exception *x,
- const char *info,
- FILE *stream
- );
-
-#if !defined (__cplusplus)
-typedef void (*SIG_TYP)();
-#endif
-
-#ifdef SVR4
-void
-sigpipe (int foo)
-#else
- void
-sigpipe ()
-#endif
-{
-}
-
-//****************** perf hash for obj lookup *************
-// for perfect hash
-struct object_db
+int main (int argc, char *argv [])
{
- char *name; // name of method
- CORBA_Object_ptr obj; //fn pointer to obj impl
-};
-
-// include the perfect hash code for objects
-#include "gperf_object.i"
-
-// Perfect hash table class
-class TAO_Perfect_Hash_ObjTable: public TAO_Object_Table
-{
-public:
- TAO_Perfect_Hash_ObjTable (Object_Hash *oh);
-
- ~TAO_Perfect_Hash_ObjTable (void);
-
- virtual int bind (const CORBA_OctetSeq &key,
- CORBA_Object_ptr obj);
- // Registers a CORBA_Object into the object table and associates the
- // key with it. Returns -1 on failure, 0 on success, 1 on
- // duplicate.
- virtual int find (const CORBA_OctetSeq &key,
- CORBA_Object_ptr &obj);
- // Looks up an object in the object table using <{key}>. Returns
- // non-negative integer on success, or -1 on failure.
-
-private:
- Object_Hash *hash_;
-};
-
-TAO_Perfect_Hash_ObjTable::TAO_Perfect_Hash_ObjTable (Object_Hash *oh)
- : hash_ (oh)
-{
-}
-
-TAO_Perfect_Hash_ObjTable::~TAO_Perfect_Hash_ObjTable (void)
-{
-}
-
-int
-TAO_Perfect_Hash_ObjTable::bind (const CORBA_OctetSeq &key, CORBA_Object_ptr obj)
-{
- struct object_db *entry;
- ACE_CString objkey ((char *)key.buffer, key.length);
- entry = this->hash_->in_word_set (objkey.rep (), key.length);
- if (entry != 0)
- {
- // now fill up the entry
- entry->obj = obj;
- }
- else
+ // Set TAO_debug_level to 0 to ensure silent running unless
+ // debugging is explicitly invoked
+ TAO_debug_level = 0;
+
+ Demux_Test_Server demux_test_server;
+
+ TAO_TRY
{
- return -1; // error
- }
-}
-
-int
-TAO_Perfect_Hash_ObjTable::find (const CORBA_OctetSeq &key, CORBA_Object_ptr &obj)
-{
- struct object_db *entry;
-
- ACE_CString objkey ((char *)key.buffer, key.length);
- entry = this->hash_->in_word_set (objkey.rep (), key.length);
+ if (demux_test_server.init (argc, argv, TAO_TRY_ENV) == -1)
+ return -1;
+ else
+ {
+ TAO_CHECK_ENV;
- if (entry != 0)
- {
- obj = entry->obj;
- return 0;
+ demux_test_server.run (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+ }
}
- else
+ TAO_CATCH (CORBA::SystemException, sysex)
{
+ ACE_UNUSED_ARG (sysex);
+ TAO_TRY_ENV.print_exception ("System Exception");
return -1;
}
-}
-
-//****************** perf hash for opname lookup *************
-struct method_db
-{
- char *name; // name of method
- TAO_Skeleton skel_ptr_; //fn pointer to obj impl
-};
-
-#include "gperf_method.i"
-
-// Perfect hash table class
-class TAO_Perfect_Hash_Op_Table: public TAO_Operation_Table
-{
-public:
- TAO_Perfect_Hash_Op_Table (Method_Hash *mh);
-
- ~TAO_Perfect_Hash_Op_Table (void);
-
- virtual int find (const CORBA_String &opname,
- TAO_Skeleton &skel_ptr);
- // Uses <{opname}> to look up the skeleton function and pass it back
- // in <{skelfunc}>. Returns non-negative integer on success, or -1
- // on failure.
-
- virtual int bind (const CORBA_String &opname,
- const TAO_Skeleton skelptr);
- // Associate the skeleton <{skel_ptr}> with an operation named
- // <{opname}>. Returns -1 on failure, 0 on success, 1 on duplicate.
-private:
- Method_Hash *hash_;
-};
-
-TAO_Perfect_Hash_Op_Table::TAO_Perfect_Hash_Op_Table (Method_Hash *mh)
- : hash_ (mh)
-{
-}
-
-TAO_Perfect_Hash_Op_Table::~TAO_Perfect_Hash_Op_Table (void)
-{
-}
-
-int
-TAO_Perfect_Hash_Op_Table::bind (const CORBA_String &opname,
- const TAO_Skeleton skelptr)
-{
- return 0; // nothing to do
-}
-
-int
-TAO_Perfect_Hash_Op_Table::find (const CORBA_String &opname,
- TAO_Skeleton &skelptr)
-{
- method_db *entry;
-
- entry = (method_db*) this->hash_->in_word_set (opname, ACE_OS::strlen (opname));
- if (entry != 0)
- {
- skelptr = entry->skel_ptr_;
- return 0;
- }
- else
+ TAO_CATCH (CORBA::UserException, userex)
{
+ ACE_UNUSED_ARG (userex);
+ TAO_TRY_ENV.print_exception ("User Exception");
return -1;
}
-}
-
-//***********************************************************
-char Usage[] = "\
-Usage: server [options] \n\
-Common options:\n\
--t demux_strategy: l(linear), g(GPERF), a (delayered active demux), d (dynamic hash)\n\
--i iter: number of iterations to expect from client \n\
-";
-
-extern CORBA_Double TAO_Avg;
-extern CORBA_Long TAO_HowMany;
-extern CORBA_Long TAO_Loop;
-int
-main (int argc, char *const *argv)
-{
- unsigned long addr_tmp;
- int c;
- unsigned short done = 0;
- CORBA_Environment env;
- CORBA_ORB_ptr orb_ptr;
- CORBA_POA_ptr oa_ptr;
- int iter = 1;
- TAO_OA_Parameters *params = TAO_OA_PARAMS::instance();
- char *orb_name = "ior";
- int idle = -1;
- int use_ior = 0;
- int terminationStatus = 0;
- tao_demux_i **mymux; // array of objects implementing the "demux" interface
- int numObjs = 5, numMethods = 4;
- Object_Hash oh;
- TAO_Object_Table *objt = new TAO_Perfect_Hash_ObjTable (&oh);
- Method_Hash mh;
- TAO_Operation_Table *optbl = new TAO_Perfect_Hash_Op_Table (&mh);
-
- TAO_Operation_Table_Parameters *op_params =
- TAO_OP_TABLE_PARAMETERS::instance();
-
- fstream iorfile; // stores the object references of all the objects
- fstream outfile;
- CORBA_String str; // scratch area
-
- params->userdef_lookup_strategy (objt);
-
- orb_ptr = CORBA_ORB_init (argc, argv, orb_name, env);
- if (env.exception () != 0) {
- print_exception (env.exception (), "ORB init", stdout);
- return 1;
- }
-
- oa_ptr = orb_ptr->BOA_init (argc, argv, "ROA");
- if (env.exception () != 0) {
- print_exception (env.exception (), "OA init", stdout);
- return 1;
- }
-
- TAO_debug_level = 0;
- // Now process the options other than Orbix specific options
- while ((c = getopt (argc, argv, "ui:t:o:m:")) != -1)
- {
- switch (c)
- {
- case 't':
- switch (*optarg)
- {
- case 'l':
- op_params->lookup_strategy
- (TAO_Operation_Table_Parameters::TAO_LINEAR);
- break;
- case 'a':
- op_params->lookup_strategy
- (TAO_Operation_Table_Parameters::TAO_ACTIVE_DEMUX);
- break;
- case 'g':
- op_params->lookup_strategy
- (TAO_Operation_Table_Parameters::TAO_PERFECT_HASH);
- op_params->concrete_strategy (optbl);
- break;
- case 'd':
- default:
- op_params->lookup_strategy
- (TAO_Operation_Table_Parameters::TAO_DYNAMIC_HASH);
- break;
- }
- break;
- case 'u':
- use_ior = 1;
- orb_name = "";
- break;
- case 'i':
- iter = atoi (optarg);
- break;
- case 'o':
- numObjs = atoi(optarg);
- break;
- case 'm':
- numMethods = atoi(optarg);
- break;
- default:
- goto usage;
- }
- }
-
- TAO_Avg = 0;
- TAO_Loop = 0;
- TAO_HowMany = iter*numObjs*numMethods;
-
- //
- // Receiver
- //
-
- iorfile.open ("ior.txt", ios::out);
- mymux = new tao_demux_i* [numObjs];
-
- // instantiate objects
-#include "obj_create.i"
- iorfile.close();
- cout << "Server ready to handle events" << endl;
-
-#if defined (ACE_HAS_QUANTIFY)
- quantify_clear_data();
- quantify_start_recording_data();
-#endif /* ACE_HAS_QUANTIFY */
-
- ACE_Service_Config::run_reactor_event_loop();
-
- outfile.open ("muxcost.dat", ios::out|ios::app);
- outfile << numObjs << "\t" << numMethods << "\t" << TAO_Avg << endl;
- outfile.close ();
- //
- // Shut down the OA -- recycles all underlying resources (e.g. file
- // descriptors, etc).
- //
- oa_ptr->clean_shutdown (env);
- return terminationStatus;
-usage:
- fprintf (stderr, Usage);
- return(1);
+ TAO_ENDTRY;
+
}