diff options
author | gokhale <asgokhale@users.noreply.github.com> | 1998-10-20 15:23:33 +0000 |
---|---|---|
committer | gokhale <asgokhale@users.noreply.github.com> | 1998-10-20 15:23:33 +0000 |
commit | c0edd715bc2680861d4fe89d2f2b00a045cf0b2e (patch) | |
tree | 9489dc98bd642248230ec6b2899d4a72d39a5fda | |
parent | df5cb0d477215fffab79e453ce1d3339ce65e35a (diff) | |
download | ATCD-c0edd715bc2680861d4fe89d2f2b00a045cf0b2e.tar.gz |
*** empty log message ***
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; + } |