diff options
author | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-09 04:20:11 +0000 |
---|---|---|
committer | alex <alex@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-09 04:20:11 +0000 |
commit | 4f4643058cb149912bd2bf508ebac0b22144fbca (patch) | |
tree | 25ecaede242dbdd06ebcaa464d9e5be6d4ec37a2 /TAO | |
parent | 37cf7fd7f77f26a1f471af0aec93aa55f7a57312 (diff) | |
download | ATCD-4f4643058cb149912bd2bf508ebac0b22144fbca.tar.gz |
ChangeLogTag:Thu Jul 8 23:15:06 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu>
Diffstat (limited to 'TAO')
126 files changed, 18184 insertions, 819 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c index 155f53496d2..9e93a7ce854 100644 --- a/TAO/ChangeLog-99c +++ b/TAO/ChangeLog-99c @@ -1,3 +1,13 @@ +Thu Jul 8 22:55:59 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + Thanks to Michael Kircher and Carlos, we have put together most + of the TAO_IDL code and tao code for the AMI call back + implementation. This commit is the result of the merging process + between the "ami_phase3" branch and the current branch. + + Most of the support for the AMI Callback is added. But all the + AMI specific code is commented out using "TAO_HAS + Thu Jul 8 21:50:02 1999 Carlos O'Ryan <coryan@cs.wustl.edu> * tests/CDR/run_test.pl: @@ -4301,6 +4311,343 @@ Sun Jun 20 14:39:23 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> use .in() to work around broken G++ compilers... Thanks to Jean-Marc Strauss <jms97@club-internet.fr> for reporting this. +Wed Jul 7 18:13:40 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * tao/Invocation.cpp: Removed the loop around the wait_for_reply. + + * TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp: Fixed CC5 + warnings. + + * TAO/tao/Invocation.cpp + * TAO/tao/Invocation.i + * TAO/tao/Reply_Dispatcher.cpp + * TAO/tao/Reply_Dispatcher.h: Integrated the CDR changes done in + ACE_CDR. Stealing the CDR content is coded here now. + + * TAO/tests/AMI/orb_creation.cpp: Fixed CC5 warnings. + +Wed Jul 7 10:55:06 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * Asynch_Invocation.cpp + * Asynch_Invocation.h + * MessagingC.h + * PollableC.cpp + * PollableC.h + * PollableS.cpp + * PollableS.h + * Reply_Dispatcher.cpp + * Reply_Dispatcher.h: Guarded the AMI specific classes etc with + TAO_HAS_CORBA_MESSAGING && TAO_POLLER. + +Tue Jul 6 22:10:00 1999 Michael Kircher <mk1@cs.wustl.edu> + + * tao/PollableS.cpp: + Replaced three ACE_BASE_CLASS macros with ACE_CORBA_1 macros to + get VC to compile it. + + * tao/TAO.dsp + * tao/TAO_Static.dsp: + Added the files Pollable{C,S}.{h,cpp} and Asynch_Invocation.{h,cpp}. + + * TAO_IDL/be_include/be_decl.h + * TAO_IDL/be/be_decl.cpp + * TAO_IDL/be_include/be_interface.h + * TAO_IDL/be/be_interface.cpp: + * TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp + * TAO_IDL/be/be_visitor_argument/upcall_ss.cpp + * TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp + * TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp: + Added code to generate ami_handler_ names. The generated names + are held in the corresponding classes, which is then also + responsible for deleting it. + + * TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp + * TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h + * TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp + * TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h + * TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp + * TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h + * TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp + * TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h: + Added these files for code generation of the AMI Handler + skeleton. + + * TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp + * TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h + * TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp: + Made changes to generate skeleton code for the AMI handler. + + * TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h + * TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp: + Added these files for code generation of the AMI handler + servant. + + * TAO_IDL/be/be_codegen.h + * TAO_IDL/be/be_visitor_factory.cpp + * TAO_IDL/be/be_visitor_interface.cpp + * TAO_IDL/be_include/be_visitor_interface.h + * TAO_IDL/be/be_visitor_interface/interface_cs.cpp + Made changes to generate servant code for the AMI handler. + +Tue Jul 6 09:55:42 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * tao/Invocation.cpp + * tao/Wait_Strategy.cpp:Commented out the call to + <sending_request> in Invocation class. + + * client.muxed.conf: Added this file. This enables MT wait + strategy and MUXED TMS. + + * tests/AMI/client.cpp: Addes sendc method. + + + + * tests/AMI/Makefile + * tests/AMI/run_test.pl + * tests/AMI/simple-client.conf + * tests/AMI/simple-client.cpp + * tests/AMI/test-handC.cpp + * tests/AMI/test_i.cpp + * tests/AMI/test_i.h + * tests/AMI/test_i.i: + Cosmetic changes to print usefull debug messages with thread id + etc. + + * tao/Transport_Mux_Strategy.cpp + * tao/Transport_Mux_Strategy.h + Changes to these files again for making it MT safe. Added + SYNCH_MUTEX to the Hash Table. and protected the + request_id_generator with a lock. + + + * tao/GIOP.cpp + * tao/IIOP_Transport.cpp + * tao/Invocation.cpp + * tao/Invocation.i + * tao/Pluggable.cpp + * tao/Pluggable.h + * tao/Reply_Dispatcher.cpp + * tao/Reply_Dispatcher.h + * tao/Transport_Mux_Strategy.cpp + * tao/Transport_Mux_Strategy.h + * tao/Wait_Strategy.cpp + + Ooooh!!!. Got the Muxed TMS to work. I havent taken care of the + MT case yet. Need to make the Hash Table with SYNCH + MUTEX. Things should be ok then. + +Sun Jul 4 13:00:38 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * Transport_Mux_Strategy.cpp + * Transport_Mux_Strategy.h + * default_client.cpp: Implemented Muxed TMS. But have nt got to + working yet. It is just there not burting anything. + + * tao/Asynch_Invocation.cpp + * tao/Asynch_Invocation.h + * tao/Asynch_Invocation.i + * tao/Client_Strategy_Factory.cpp + * tao/Client_Strategy_Factory.h + * tao/Invocation.cpp + * tao/Invocation.h + * tao/Invocation.i + * tao/Pluggable.cpp + * tao/Reply_Dispatcher.cpp + * tao/Reply_Dispatcher.h + * tao/Transport_Mux_Strategy.cpp + * tao/Transport_Mux_Strategy.h + * tao/default_client.cpp + * tao/default_client.h + + Moved the message state from <Invocation> classes to the + Transport Mux Strategy. This makes it to have the behavior of + Transport object acccesing the messaging state uniform, across + Muxed and Exclusive TMS. I have not done Muxed TMS yet. + +Sat Jul 3 10:54:00 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * TAO_IDL/be/be_visitor_factory.cpp + * TAO_IDL/be_include/be_codegen.h + * tao/Asynch_Invocation.cpp + * tao/Asynch_Invocation.h + * tao/Asynch_Invocation.i + * tao/Invocation.cpp + * tao/Invocation.h + + Moved the transport_->idle () to the derived class' + constructors. + + * tests/AMI/test.idl + + Just commented out the other methods. Left only get_number. + + * Makefile + * client.tss.conf + * server.dsp + * test_i.cpp + * README + * orb_creation.cpp + * simple-client.conf + * test_i.h + * client.conf + * orb_creation.dsp + * simple-client.cpp + * test_i.i + * client.cpp + * run_test.pl* + * simple_client.dsp + * update.log + * client.dsp + * server.conf + * test-handC.cpp + + Files for the simple test. But you actually need server and + simple-client test files right now. + + + * tests/AMI/simple-client.cpp: Removed the iteration part from the + test. Let us keep it really simple. + + * TAO_IDL/be/be_visitor_factory.cpp + * TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp + Changes for generating Reply Handler skeletons. + + * TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp: + Added this file. This file generates the demarshalling skeletons + for the Reply Handler and then calls the Reply Handler's call + back hook methods. This file is not fully done yet. But this + visitor is not used for the time being. + + * tao/Transport_Mux_Strategy.cpp: Fixed the explicit template + instantiation problems. + +Fri Jul 2 16:28:08 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + Another big step generating code for AMI. Done with sendc + methods and Reply Handler call back methods. Both header files + and cpp files contents. + + TO-DO: Reply Handler skeletons. Reply Handler servants. + + * tao/Asynch_Invocation.h + * tao/Asynch_Invocation.i + * tao/Makefile + * tao/MessagingC.h + * tao/MessagingS.cpp + * tao/Reply_Dispatcher.cpp + * tao/Reply_Dispatcher.h + + * TAO_IDL/Makefile + * TAO_IDL/ast/ast_decl.cpp + * TAO_IDL/be/be_codegen.cpp + * TAO_IDL/be/be_decl.cpp + * TAO_IDL/be/be_interface.cpp + * TAO_IDL/be/be_type.cpp + * TAO_IDL/be/be_visitor_argument.cpp + * TAO_IDL/be/be_visitor_factory.cpp + * TAO_IDL/be/be_visitor_interface.cpp + * TAO_IDL/be/be_visitor_operation.cpp + * TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp + * TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp + * TAO_IDL/be/be_visitor_interface/interface.cpp + * TAO_IDL/be/be_visitor_interface/interface_ch.cpp + * TAO_IDL/be/be_visitor_interface/interface_cs.cpp + * TAO_IDL/be/be_visitor_operation/ami_arglist.cpp + * TAO_IDL/be/be_visitor_operation/ami_ch.cpp + * TAO_IDL/be/be_visitor_operation/ami_cs.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp + * TAO_IDL/be/be_visitor_operation/argument.cpp + * TAO_IDL/be/be_visitor_operation/argument_invoke.cpp + * TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp + * TAO_IDL/be/be_visitor_operation/operation_cs.cpp + * TAO_IDL/be/be_visitor_operation/rettype.cpp + * TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp + * TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp + * TAO_IDL/be_include/be_codegen.h + * TAO_IDL/be_include/be_decl.h + * TAO_IDL/be_include/be_interface.h + * TAO_IDL/be_include/be_type.h + * TAO_IDL/be_include/be_visitor_argument.h + * TAO_IDL/be_include/be_visitor_interface.h + * TAO_IDL/be_include/be_visitor_operation.h + * TAO_IDL/include/ast_decl.h + + Added the following files for the changes mentioned above. + + * TAO_IDL/be/be_visitor_rettype.cpp + * TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp + * TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp + * TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp + * TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp + * TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp + * TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h + * TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h + * TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h + * TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h + * TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h + * TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h + * TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h + +Wed Jun 23 23:19:34 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + Added Asynch Invocation class. It makes invocations without + waiting for the reply. Implemented a portion of Asynch Reply + Dispatcher and Muxed TMS. Not complete yet. + + * tao/IIOP_Transport.cpp: + * tao/Invocation.cpp: + * tao/Invocation.p: + * tao/Makefilp: + * tao/Reply_Dispatcher.cpp: + * tao/Reply_Dispatcher.p: + * tao/Transport_Mux_Strategy.cpp: + * tao/Transport_Mux_Strategy.p: + + Added the following files. + + * tao/Asynch_Invocation.cpp: + * tao/Asynch_Invocation.h: + * tao/Asynch_Invocation.i: + +Tue Jun 22 11:59:06 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + One more big step on generating AMI call back code. If I get rid + of the references to the ReplyHandler from the generated files, + I could get things to compile. + + * TAO_IDL/Makefile: + * TAO_IDL/be/be_codegen.cpp: + * TAO_IDL/be/be_interface.cpp: + * TAO_IDL/be/be_visitor_factory.cpp: + * TAO_IDL/be/be_visitor_interface.cpp: + * TAO_IDL/be/be_visitor_scope.cpp: + * TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp: + * TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp: + * TAO_IDL/be/be_visitor_interface/interface.cpp: + * TAO_IDL/be/be_visitor_interface/interface_ch.cpp: + * TAO_IDL/be/be_visitor_interface/interface_cs.cpp: + * TAO_IDL/be/be_visitor_operation/ami_arglist.cpp: + * TAO_IDL/be/be_visitor_operation/ami_ch.cpp: + * TAO_IDL/be/be_visitor_operation/ami_cs.cpp: + * TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp: + * TAO_IDL/be_include/be_codegen.h: + * TAO_IDL/be_include/be_visitor_interface.h: + * TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h: + + Changes for the above. + + * TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp: + * TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp: + * TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h: + * TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h: + + Added these files. + Sun Jun 20 07:40:02 EDT 1999 Aniruddha Gokhale <gokhale@sahyadri.research.bell-labs.com> * TAO_IDL/be/be_visitor_field/field_ch.cpp: diff --git a/TAO/TAO_IDL/Makefile b/TAO/TAO_IDL/Makefile index d99bdfbcc6e..e6bc88821c6 100644 --- a/TAO/TAO_IDL/Makefile +++ b/TAO/TAO_IDL/Makefile @@ -265,6 +265,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -348,6 +350,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -431,6 +435,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -514,6 +520,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -618,6 +626,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -705,6 +715,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -788,6 +800,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -880,6 +894,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -964,6 +980,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1048,6 +1066,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1132,6 +1152,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1216,6 +1238,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1300,6 +1324,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1384,6 +1410,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1467,6 +1495,8 @@ tags: .obj/lex.yy.o .obj/lex.yy.so .shobj/lex.yy.o .shobj/lex.yy.so: fe/lex.yy.cpp \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1552,6 +1582,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1634,6 +1666,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1716,6 +1750,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1798,6 +1834,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1880,6 +1918,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1962,6 +2002,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2044,6 +2086,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2126,6 +2170,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2208,6 +2254,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2290,6 +2338,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2372,6 +2422,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2454,6 +2506,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2536,6 +2590,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2618,6 +2674,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2700,6 +2758,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2782,6 +2842,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2864,6 +2926,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2946,6 +3010,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3028,6 +3094,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3110,6 +3178,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3192,6 +3262,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3274,6 +3346,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3356,6 +3430,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3438,6 +3514,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3520,6 +3598,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3602,6 +3682,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3684,6 +3766,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3766,6 +3850,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3848,6 +3934,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3930,6 +4018,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4012,6 +4102,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4094,6 +4186,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4176,6 +4270,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4258,6 +4354,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4340,6 +4438,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4422,6 +4522,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4504,6 +4606,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4586,6 +4690,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4668,6 +4774,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4750,6 +4858,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4832,6 +4942,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4914,6 +5026,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4996,6 +5110,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5078,6 +5194,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5160,6 +5278,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5242,6 +5362,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5324,6 +5446,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5428,6 +5552,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5532,6 +5658,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5636,6 +5764,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5740,6 +5870,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5844,6 +5976,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5948,6 +6082,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6052,6 +6188,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6156,6 +6294,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6260,6 +6400,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6366,8 +6508,12 @@ tags: be_include/be_visitor_interface/tie_si.h \ be_include/be_visitor_interface/ami_handler_fwd_ch.h \ be_include/be_visitor_interface/ami_handler_fwd_ci.h \ - be_include/be_visitor_interface/ami_handler_ch.h be_include/be.h \ - $(ACE_ROOT)/ace/Process.h \ + be_include/be_visitor_interface/ami_handler_servant_ch.h \ + be_include/be_visitor_interface/ami_handler_servant_cs.h \ + be_include/be_visitor_interface/ami_handler_stub_ch.h \ + be_include/be_visitor_interface/ami_handler_stub_cs.h \ + be_include/be_visitor_interface/collocated_ami_handler_ch.h \ + be_include/be.h $(ACE_ROOT)/ace/Process.h \ $(ACE_ROOT)/ace/Process.i \ be_include/be_decl.h be_include/be_scope.h be_include/be_generator.h \ be_include/be_type.h be_include/be_predefined_type.h \ @@ -6388,6 +6534,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6492,6 +6640,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6596,6 +6746,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6700,6 +6852,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6804,6 +6958,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6908,6 +7064,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7012,6 +7170,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7116,6 +7276,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7220,6 +7382,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7336,6 +7500,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7440,6 +7606,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7544,6 +7712,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7648,6 +7818,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7752,6 +7924,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7856,6 +8030,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7960,6 +8136,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8064,6 +8242,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8168,6 +8348,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8273,6 +8455,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8377,6 +8561,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8481,6 +8667,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8585,6 +8773,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8689,6 +8879,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8794,6 +8986,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8898,6 +9092,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9002,6 +9198,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9107,6 +9305,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9226,6 +9426,10 @@ tags: be_include/be_visitor_argument/pre_invoke_cs.h \ be_include/be_visitor_argument/ami_arglist.h \ be_include/be_visitor_argument/ami_handler_arglist.h \ + be_include/be_visitor_argument/ami_handler_result_arg.h \ + be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h \ + be_include/be_visitor_argument/ami_handler_upcall_cs.h \ + be_include/be_visitor_argument/ami_handler_vardecl_cs.h \ be_include/be_visitor_array.h be_include/be_visitor_array/array.h \ be_include/be_visitor_array/array_ch.h \ be_include/be_visitor_array/array_ci.h \ @@ -9286,7 +9490,11 @@ tags: be_include/be_visitor_interface/tie_si.h \ be_include/be_visitor_interface/ami_handler_fwd_ch.h \ be_include/be_visitor_interface/ami_handler_fwd_ci.h \ - be_include/be_visitor_interface/ami_handler_ch.h \ + be_include/be_visitor_interface/ami_handler_servant_ch.h \ + be_include/be_visitor_interface/ami_handler_servant_cs.h \ + be_include/be_visitor_interface/ami_handler_stub_ch.h \ + be_include/be_visitor_interface/ami_handler_stub_cs.h \ + be_include/be_visitor_interface/collocated_ami_handler_ch.h \ be_include/be_visitor_interface_fwd.h \ be_include/be_visitor_interface_fwd/interface_fwd_ch.h \ be_include/be_visitor_interface_fwd/interface_fwd_ci.h \ @@ -9354,6 +9562,9 @@ tags: be_include/be_visitor_operation/ami_arglist.h \ be_include/be_visitor_operation/ami_handler_operation_ch.h \ be_include/be_visitor_operation/ami_handler_arglist.h \ + be_include/be_visitor_operation/ami_handler_operation_cs.h \ + be_include/be_visitor_operation/ami_handler_skeleton_cs.h \ + be_include/be_visitor_operation/ami_handler_argument_marshal.h \ be_include/be_visitor_root.h be_include/be_visitor_root/root.h \ be_include/be_visitor_root/root_ch.h \ be_include/be_visitor_root/root_ci.h \ @@ -9426,6 +9637,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9527,6 +9740,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9643,6 +9858,10 @@ tags: be_include/be_visitor_argument/pre_invoke_cs.h \ be_include/be_visitor_argument/ami_arglist.h \ be_include/be_visitor_argument/ami_handler_arglist.h \ + be_include/be_visitor_argument/ami_handler_result_arg.h \ + be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h \ + be_include/be_visitor_argument/ami_handler_upcall_cs.h \ + be_include/be_visitor_argument/ami_handler_vardecl_cs.h \ be/be_visitor_argument/arglist.cpp \ be/be_visitor_argument/argument.cpp \ be/be_visitor_argument/docall_cs.cpp \ @@ -9659,11 +9878,17 @@ tags: be/be_visitor_argument/compiled_marshal_ss.cpp \ be/be_visitor_argument/pre_invoke_cs.cpp \ be/be_visitor_argument/ami_arglist.cpp \ - be/be_visitor_argument/ami_handler_arglist.cpp + be/be_visitor_argument/ami_handler_arglist.cpp \ + be/be_visitor_argument/ami_handler_result_arg.cpp \ + be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp \ + be/be_visitor_argument/ami_handler_upcall_cs.cpp \ + be/be_visitor_argument/ami_handler_vardecl_cs.cpp .obj/be_visitor_array.o .obj/be_visitor_array.so .shobj/be_visitor_array.o .shobj/be_visitor_array.so: be/be_visitor_array.cpp include/idl.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9781,6 +10006,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9889,6 +10116,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9999,6 +10228,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10103,6 +10334,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10208,6 +10441,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10322,6 +10557,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10456,6 +10693,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10570,6 +10809,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10694,7 +10935,11 @@ tags: be_include/be_visitor_interface/tie_si.h \ be_include/be_visitor_interface/ami_handler_fwd_ch.h \ be_include/be_visitor_interface/ami_handler_fwd_ci.h \ - be_include/be_visitor_interface/ami_handler_ch.h \ + be_include/be_visitor_interface/ami_handler_servant_ch.h \ + be_include/be_visitor_interface/ami_handler_servant_cs.h \ + be_include/be_visitor_interface/ami_handler_stub_ch.h \ + be_include/be_visitor_interface/ami_handler_stub_cs.h \ + be_include/be_visitor_interface/collocated_ami_handler_ch.h \ be/be_visitor_interface/interface.cpp \ be/be_visitor_interface/interface_ch.cpp \ be/be_visitor_interface/interface_ci.cpp \ @@ -10720,12 +10965,17 @@ tags: be_include/be_visitor_interface_fwd/interface_fwd_ci.h \ be_include/be_visitor_interface_fwd/cdr_op_ci.h \ be/be_visitor_interface/ami_handler_fwd_ci.cpp \ - be/be_visitor_interface/ami_handler_ch.cpp + be/be_visitor_interface/ami_handler_servant_ch.cpp \ + be/be_visitor_interface/ami_handler_servant_cs.cpp \ + be/be_visitor_interface/ami_handler_stub_ch.cpp \ + be/be_visitor_interface/ami_handler_stub_cs.cpp \ + be/be_visitor_interface/collocated_ami_handler_ch.cpp .obj/be_visitor_interface_fwd.o .obj/be_visitor_interface_fwd.so .shobj/be_visitor_interface_fwd.o .shobj/be_visitor_interface_fwd.so: be/be_visitor_interface_fwd.cpp \ - include/idl.h \ - $(ACE_ROOT)/ace/ACE.h \ + include/idl.h $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10838,6 +11088,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11002,6 +11254,9 @@ tags: be_include/be_visitor_operation/ami_arglist.h \ be_include/be_visitor_operation/ami_handler_operation_ch.h \ be_include/be_visitor_operation/ami_handler_arglist.h \ + be_include/be_visitor_operation/ami_handler_operation_cs.h \ + be_include/be_visitor_operation/ami_handler_skeleton_cs.h \ + be_include/be_visitor_operation/ami_handler_argument_marshal.h \ be/be_visitor_valuetype/field_ch.cpp \ be/be_visitor_valuetype/field_cs.cpp \ be/be_visitor_valuetype/field_cdr_ci.cpp \ @@ -11013,10 +11268,11 @@ tags: be_include/be_visitor_field/cdr_op_cs.h \ be/be_visitor_valuetype/obv_module.cpp .obj/be_visitor_valuetype_fwd.o .obj/be_visitor_valuetype_fwd.so .shobj/be_visitor_valuetype_fwd.o .shobj/be_visitor_valuetype_fwd.so: be/be_visitor_valuetype_fwd.cpp \ - include/idl.h \ - $(ACE_ROOT)/ace/ACE.h \ + include/idl.h $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11126,6 +11382,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11240,6 +11498,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11378,6 +11638,9 @@ tags: be_include/be_visitor_operation/ami_arglist.h \ be_include/be_visitor_operation/ami_handler_operation_ch.h \ be_include/be_visitor_operation/ami_handler_arglist.h \ + be_include/be_visitor_operation/ami_handler_operation_cs.h \ + be_include/be_visitor_operation/ami_handler_skeleton_cs.h \ + be_include/be_visitor_operation/ami_handler_argument_marshal.h \ be/be_visitor_operation/operation.cpp \ be/be_visitor_operation/arglist.cpp \ be/be_visitor_operation/argument.cpp \ @@ -11411,6 +11674,10 @@ tags: be_include/be_visitor_argument/pre_invoke_cs.h \ be_include/be_visitor_argument/ami_arglist.h \ be_include/be_visitor_argument/ami_handler_arglist.h \ + be_include/be_visitor_argument/ami_handler_result_arg.h \ + be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h \ + be_include/be_visitor_argument/ami_handler_upcall_cs.h \ + be_include/be_visitor_argument/ami_handler_vardecl_cs.h \ be/be_visitor_operation/operation_is.cpp \ be/be_visitor_operation/rettype.cpp \ be/be_visitor_operation/rettype_is.cpp \ @@ -11429,11 +11696,16 @@ tags: be/be_visitor_operation/ami_ch.cpp be/be_visitor_operation/ami_cs.cpp \ be/be_visitor_operation/ami_arglist.cpp \ be/be_visitor_operation/ami_handler_operation_ch.cpp \ - be/be_visitor_operation/ami_handler_arglist.cpp + be/be_visitor_operation/ami_handler_arglist.cpp \ + be/be_visitor_operation/ami_handler_operation_cs.cpp \ + be/be_visitor_operation/ami_handler_skeleton_cs.cpp \ + be/be_visitor_operation/ami_handler_argument_marshal.cpp .obj/be_visitor_root.o .obj/be_visitor_root.so .shobj/be_visitor_root.o .shobj/be_visitor_root.so: be/be_visitor_root.cpp include/idl.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11555,6 +11827,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11660,6 +11934,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11788,11 +12064,13 @@ tags: be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp \ be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp \ be/be_visitor_sequence/gen_bounded_str_sequence_ch.cpp \ + be/be_visitor_sequence/gen_unbounded_sequence_ci.cpp \ be/be_visitor_sequence/gen_bounded_sequence_ci.cpp \ be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp \ be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp \ be/be_visitor_sequence/gen_bounded_str_sequence_ci.cpp \ be/be_visitor_sequence/gen_unbounded_sequence_cs.cpp \ + be/be_visitor_sequence/gen_bounded_sequence_cs.cpp \ be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp \ be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp \ be/be_visitor_sequence/gen_bounded_str_sequence_cs.cpp @@ -11800,6 +12078,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11930,6 +12210,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12040,6 +12322,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12163,6 +12447,8 @@ tags: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12284,10 +12570,11 @@ tags: be/be_visitor_union/any_op_cs.cpp be/be_visitor_union/cdr_op_ch.cpp \ be/be_visitor_union/cdr_op_ci.cpp be/be_visitor_union/cdr_op_cs.cpp .obj/be_visitor_union_branch.o .obj/be_visitor_union_branch.so .shobj/be_visitor_union_branch.o .shobj/be_visitor_union_branch.so: be/be_visitor_union_branch.cpp \ - include/idl.h \ - $(ACE_ROOT)/ace/ACE.h \ + include/idl.h $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ diff --git a/TAO/TAO_IDL/ast/ast_decl.cpp b/TAO/TAO_IDL/ast/ast_decl.cpp index 19d22a688bb..cde4aee0e50 100644 --- a/TAO/TAO_IDL/ast/ast_decl.cpp +++ b/TAO/TAO_IDL/ast/ast_decl.cpp @@ -76,8 +76,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc. * main file or an #include'd file. */ -#include "idl.h" -#include "idl_extern.h" +#include "idl.h" +#include "idl_extern.h" ACE_RCSID(ast, ast_decl, "$Id$") @@ -104,8 +104,8 @@ AST_Decl::AST_Decl(NodeType nt, UTL_ScopedName *n, UTL_StrList *p) : pd_imported(idl_global->imported()), pd_in_main_file(idl_global->in_main_file()), pd_defined_in(idl_global->scopes()->depth() > 0 - ? idl_global->scopes()->top() - : 0), + ? idl_global->scopes()->top() + : 0), pd_node_type(nt), pd_line(idl_global->lineno()), pd_file_name(idl_global->filename()), @@ -132,8 +132,8 @@ AST_Decl::AST_Decl(NodeType nt, UTL_ScopedName *n, UTL_StrList *p) void AST_Decl::compute_full_name(UTL_ScopedName *n) { - UTL_ScopedName *cn = NULL; - AST_Decl *d = NULL; + UTL_ScopedName *cn = NULL; + AST_Decl *d = NULL; /* * Initialize this name to NULL @@ -280,6 +280,74 @@ AST_Decl::name() return pd_name; } + +// @@ Wherever compute_* are called, we should remember to delete them +// after use. + +// Variation of the <name>. Computes scoped name string, applying +// prefix and suffix to the local name component. +UTL_ScopedName * +AST_Decl::compute_name (const char *prefix, const char *suffix) +{ + if (prefix == 0 || suffix == 0) + return 0; + + UTL_ScopedName *result_name = NULL; + + // Prepare prefix_<local_name>_suffix string. + + ACE_CString suffix_str (suffix); + ACE_CString local_str (this->local_name ()->get_string ()); + + ACE_CString result_local_str (prefix); + result_local_str += local_str; + result_local_str += suffix_str; + + // Identifier for the resulting local name. + Identifier *result_local_id = new Identifier (result_local_str.c_str (), + 1, + 0, + I_FALSE); + + // UTL_Scoped name for the resulting local name. + UTL_ScopedName *result_local_name = new UTL_ScopedName (result_local_id, + NULL); + + // Global scope? + if (this->defined_in () == NULL) + { + result_name = result_local_name; + } + else + { + // OK, not global. So copy name of containing scope, then + // smash last cdr of copy with new component. + + AST_Decl *d = ScopeAsDecl(defined_in()); + if (d != NULL) + { + UTL_ScopedName *cn = d->name(); + if (cn != NULL) + { + result_name = (UTL_ScopedName *) cn->copy(); + if (result_name == NULL) + { + result_name = result_local_name; + } + else + result_name->nconc(result_local_name); + } + } + } + + return result_name; + +} + + + + + void AST_Decl::set_name(UTL_ScopedName *n) { @@ -299,6 +367,29 @@ AST_Decl::local_name() return pd_local_name; } +Identifier * +AST_Decl::compute_local_name (const char *prefix, const char *suffix) +{ + if (prefix == 0 || suffix == 0) + return 0; + + // Init the result with prefix. + ACE_CString result_str (prefix); + + // Put local. + result_str += ACE_CString (this->local_name ()->get_string ()); + + // Put suffix. + result_str += ACE_CString (suffix); + + // Identifier for the resulting local name. + Identifier *result_id = new Identifier (result_str.c_str (), + 1, + 0, + I_FALSE); + return result_id; +} + // If there is _cxx_ in the beginning, we will remove that and keep // a copy of the original name. TAO IDL's front end adds _cxx_ // prefix to the all the reserved keywords. But when we invoke the diff --git a/TAO/TAO_IDL/be/be_codegen.cpp b/TAO/TAO_IDL/be/be_codegen.cpp index ffc3af9ab26..0d943c59d16 100644 --- a/TAO/TAO_IDL/be/be_codegen.cpp +++ b/TAO/TAO_IDL/be/be_codegen.cpp @@ -184,15 +184,49 @@ TAO_CodeGen::start_client_header (const char *fname) << "# pragma once\n" << "#endif /* ACE_LACKS_PRAGMA_ONCE */\n\n"; - // Other include files + // Other include files. if (idl_global->export_include () != 0) { *this->client_header_ << "#include \"" - << idl_global->export_include () + << idl_global->export_include () << "\"\n"; } + // Include the Messaging files if AMI is enabled. + if (idl_global->ami_call_back () == I_TRUE) + { + // Include Messaging skeleton file. + *this->client_header_ << "#include "; + + if (idl_global->changing_standard_include_files () == 1) + *this->client_header_ << "\""; + else + *this->client_header_ << "<"; + + *this->client_header_ << "tao/MessagingS.h"; + + if (idl_global->changing_standard_include_files () == 1) + *this->client_header_ << "\"\n"; + else + *this->client_header_ << ">\n"; + + // Including Asynch Invocation file. + *this->client_header_ << "#include "; + + if (idl_global->changing_standard_include_files () == 1) + *this->client_header_ << "\""; + else + *this->client_header_ << "<"; + + *this->client_header_ << "tao/Asynch_Invocation.h"; + + if (idl_global->changing_standard_include_files () == 1) + *this->client_header_ << "\"\n"; + else + *this->client_header_ << ">\n"; + } + // We must include all the skeleton headers corresponding to // IDL files included by the current IDL file. // We will use the included IDL file names as they appeared diff --git a/TAO/TAO_IDL/be/be_decl.cpp b/TAO/TAO_IDL/be/be_decl.cpp index fc25927940d..b510a4c5b3a 100644 --- a/TAO/TAO_IDL/be/be_decl.cpp +++ b/TAO/TAO_IDL/be/be_decl.cpp @@ -41,8 +41,11 @@ be_decl::be_decl (void) cli_stub_cdr_op_gen_ (I_FALSE), cli_inline_cdr_op_gen_ (I_FALSE), fullname_ (0), + ami_handler_fullname_ (0), flatname_ (0), + ami_handler_flatname_ (0), repoID_ (0), + ami_handler_repoID_ (0), prefix_ (0), size_type_ (be_decl::SIZE_UNKNOWN) { @@ -66,8 +69,11 @@ be_decl::be_decl (AST_Decl::NodeType type, cli_hdr_cdr_op_gen_ (I_FALSE), cli_stub_cdr_op_gen_ (I_FALSE), fullname_ (0), + ami_handler_fullname_ (0), flatname_ (0), + ami_handler_flatname_ (0), repoID_ (0), + ami_handler_repoID_ (0), prefix_ (0), size_type_ (be_decl::SIZE_UNKNOWN) { @@ -76,6 +82,41 @@ be_decl::be_decl (AST_Decl::NodeType type, //destructor be_decl::~be_decl (void) { + if (this->fullname_ != 0) + { + delete[] this->fullname_; + this->fullname_ = 0; + } + if (this->ami_handler_fullname_ != 0) + { + delete[] this->ami_handler_fullname_; + this->ami_handler_fullname_ = 0; + } + if (this->flatname_ != 0) + { + delete[] this->flatname_; + this->flatname_ = 0; + } + if (this->ami_handler_flatname_ != 0) + { + delete[] this->ami_handler_flatname_; + this->ami_handler_flatname_ = 0; + } + if (this->repoID_ != 0) + { + delete[] this->repoID_; + this->repoID_ = 0; + } + if (this->ami_handler_repoID_ != 0) + { + delete[] this->ami_handler_repoID_; + this->ami_handler_repoID_ = 0; + } + if (this->prefix_ != 0) + { + delete[] this->prefix_; + this->prefix_ = 0; + } } // return our size type @@ -105,6 +146,26 @@ be_decl::size_type (be_decl::SIZE_TYPE st) this->size_type_ = st; } +const char* +be_decl::fullname (void) +{ + if (!this->fullname_) + compute_fullname (); + + return this->fullname_; +} + +const char* +be_decl::ami_handler_fullname (void) +{ + if (!this->ami_handler_fullname_) + compute_ami_handler_name (this->fullname (), + this->ami_handler_fullname_); + + return this->ami_handler_fullname_; +} + + // compute stringified fully scoped name void be_decl::compute_fullname (void) @@ -170,14 +231,24 @@ be_decl::compute_fullname (void) } const char* -be_decl::fullname (void) +be_decl::flatname (void) { - if (!this->fullname_) - compute_fullname (); + if (!this->flatname_) + this->compute_flatname (); - return this->fullname_; + return this->flatname_; } +const char* +be_decl::ami_handler_flatname (void) +{ + if (!this->ami_handler_flatname_) + this->compute_flatname ("AMI_","_Handler"); + + return this->ami_handler_flatname_; +} + + // compute stringified flattened fully scoped name void be_decl::compute_flatname (void) @@ -245,17 +316,83 @@ be_decl::compute_flatname (void) +char * +be_decl::compute_flatname (const char *prefix, const char *suffix) +{ + if (prefix == 0 || suffix == 0) + return 0; -const char* -be_decl::flatname (void) + ACE_CString prefix_str (prefix); + ACE_CString suffix_str (suffix); + + ACE_CString result_str; + + // Get parent. + if (this->defined_in () == 0) + { + // Global scope. + + // Prefix. + result_str = prefix_str; + + // Local name. + result_str += ACE_CString (this->local_name ()->get_string ()); + + // Suffix. + result_str += suffix_str; + } + else + { + // Get scope name. + be_decl *parent = be_scope::narrow_from_scope (this->defined_in ())->decl (); + if (parent == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_decl::" + "compute_flat_name - " + "scope name is nil\n"), + 0); + } + + // Parent name. + result_str = ACE_CString (parent->fullname ()); + + // _ + if (ACE_OS::strcmp (parent->fullname (), "") != 0) + result_str += ACE_CString ("_"); + + // Prefix. + result_str += ACE_CString ("AMI_"); + + // Local name. + result_str += ACE_CString (this->local_name ()->get_string ()); + + // Suffix. + result_str += suffix_str; + } + + this->ami_handler_flatname_ = result_str.rep (); + return this->ami_handler_flatname_; +} + +const char * +be_decl::repoID (void) { - if (!this->flatname_) - compute_flatname (); + if (!this->repoID_) + this->compute_repoID (); - return this->flatname_; + return this->repoID_; } +const char * +be_decl::ami_handler_repoID (void) +{ + if (!this->ami_handler_repoID_) + this->compute_repoID ("AMI_","_Handler"); + + return this->ami_handler_repoID_; +} // compute stringified repository ID @@ -331,15 +468,197 @@ be_decl::compute_repoID (void) return; } -const char * -be_decl::repoID (void) +// Apply the prefix and suffix to the local name and compute the +// repoID. Both the parameters should be non-null. +char * +be_decl::compute_repoID (const char *prefix, const char *suffix) { - if (!this->repoID_) - compute_repoID (); + // Prefix and suffix should be valid. + if (prefix == 0 || suffix == 0) + return 0; - return this->repoID_; + // First prepare the result without IDL: and :1.0 strings. + + // repoID without IDL: and :1.0 strings. + char *result = 0; + + long namelen; + UTL_IdListActiveIterator *i; + long first = I_TRUE; + long second = I_FALSE; + + // In the first loop compute the total length. + namelen = 8; // for the prefix "IDL:" and suffix ":1.0" + namelen += ACE_OS::strlen (this->prefix ()) + 1; + i = new UTL_IdListActiveIterator (this->name ()); + while (!(i->is_done ())) + { + if (!first) + namelen += 1; // for "/" + else if (second) + first = second = I_FALSE; + // print the identifier + namelen += ACE_OS::strlen (i->item ()->get_string ()); + if (first) + { + if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0) + // does not start with a "" + first = I_FALSE; + else + second = I_TRUE; + } + i->next (); + } + delete i; + + // Get the result. + + result = new char [namelen+1]; + result[0] = '\0'; + + // Start the result with prefix. + ACE_OS::sprintf (result, "%s", this->prefix ()); + + // Add the "/" only if there is a prefix + if (ACE_OS::strcmp (this->prefix (), "") != 0) + ACE_OS::strcat (result, "/"); + + i = new UTL_IdListActiveIterator (this->name ()); + first = I_TRUE; + second = I_FALSE; + while (!(i->is_done ())) + { + if (!first) + ACE_OS::strcat (result, "/"); + else if (second) + first = second = I_FALSE; + // print the identifier + ACE_OS::strcat (result, i->item ()->get_string ()); + if (first) + { + if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0) + // does not start with a "" + first = I_FALSE; + else + second = I_TRUE; + } + i->next (); + } + delete i; + + // Add prefix and suffix. + + // Search where the last / is. If it is not there put AMI_ right + // after IDL: and _Handler after that and then the :1.0 string. + // Otherwise put AMI after the last / and _Handler at the end and + // then the 1.0 string. + + // CStrings are cool. + + ACE_CString result_str (result); + + // Return val. Release = 0 so that we can return the <c_str>. + ACE_CString repoID ("IDL:", 0, 0); + + // Useful CStrings. + ACE_CString prefix_str (prefix); + ACE_CString suffix_str (suffix); + ACE_CString version_str (":1.0"); + + // Find the last /. + int last_name_pos = result_str.rfind ('/'); + + if (last_name_pos == ACE_CString::npos) + { + // '/' not present. + + // Add prefix + result. + repoID += prefix_str; + + repoID += result_str; + + // Add suffix. + repoID += suffix_str; + } + else + { + // '/' present. + + // IDl:<result except the last name>'/'. Watch get the last / + // also. + repoID += result_str.substring (0, last_name_pos+1); + + // Put prefix. + repoID += prefix_str; + + // Put the last name. + repoID += result_str.substr (last_name_pos + 1); + + // Add suffix. + repoID += suffix_str; + } + + // Add 1.0. + repoID += version_str; + + // Delete result. + delete result; + result = 0; + + this->ami_handler_repoID_ = repoID.rep (); + + return this->ami_handler_repoID_; +} + + +int +be_decl::compute_ami_handler_name (const char *name, + char *&ami_handler_name) +{ + int name_length = ACE_OS::strlen (name); + int ami_handler_length = ACE_OS::strlen ("AMI__HANDLER"); + + ACE_NEW_RETURN (ami_handler_name, + char[name_length + ami_handler_length+1], + -1); + + // copy it in + ACE_OS::strcpy (ami_handler_name, name); + + const char *interface_name = 0; + int i = ACE_OS::strlen (name); + for (;i >= 1; i--) + { + if (name[i-1] == ':' && name[i] == ':') + { + interface_name = &name[i+1]; + break; + } + else if (i >= 3) + if (name[i-3] == 'P' && + name[i-2] == 'O' && + name[i-1] == 'A' && + name[i] == '_') + { + interface_name = &name[i+1]; + break; + } + } + + if (interface_name == 0) + interface_name = name; + + ACE_OS::strcpy(&ami_handler_name[name_length-ACE_OS::strlen(interface_name)],"AMI_"); + ACE_OS::strcpy(&ami_handler_name[name_length-ACE_OS::strlen(interface_name)+4], + interface_name); + ACE_OS::strcpy(&ami_handler_name[name_length+4], + "_Handler"); + + return 0; } + + void be_decl::compute_prefix () { diff --git a/TAO/TAO_IDL/be/be_interface.cpp b/TAO/TAO_IDL/be/be_interface.cpp index ccd862f77b8..37860f537b5 100644 --- a/TAO/TAO_IDL/be/be_interface.cpp +++ b/TAO/TAO_IDL/be/be_interface.cpp @@ -33,9 +33,13 @@ ACE_RCSID(be, be_interface, "$Id$") // default constructor be_interface::be_interface (void) : full_skel_name_ (0), + ami_handler_full_skel_name_ (0), skel_count_ (0), full_coll_name_ (0), + ami_handler_full_coll_name_ (0), local_coll_name_ (0), + ami_handler_local_coll_name_ (0), + ami_handler_local_name_ (0), in_mult_inheritance_ (-1) { this->size_type (be_decl::VARIABLE); // always the case @@ -48,9 +52,13 @@ be_interface::be_interface (UTL_ScopedName *n, AST_Interface **ih, long nih, AST_Decl (AST_Decl::NT_interface, n, p), UTL_Scope (AST_Decl::NT_interface), full_skel_name_ (0), + ami_handler_full_skel_name_ (0), skel_count_ (0), full_coll_name_ (0), + ami_handler_full_coll_name_ (0), local_coll_name_ (0), + ami_handler_local_coll_name_ (0), + ami_handler_local_name_ (0), in_mult_inheritance_ (-1) { this->size_type (be_decl::VARIABLE); // always the case @@ -63,16 +71,36 @@ be_interface::~be_interface (void) delete[] this->full_skel_name_; this->full_skel_name_ = 0; } + if (this->ami_handler_full_skel_name_ != 0) + { + delete[] this->ami_handler_full_skel_name_; + this->ami_handler_full_skel_name_ = 0; + } if (this->full_coll_name_ != 0) { delete[] this->full_coll_name_; this->full_coll_name_ = 0; } + if (this->ami_handler_full_coll_name_ != 0) + { + delete[] this->ami_handler_full_coll_name_; + this->ami_handler_full_coll_name_ = 0; + } if (this->local_coll_name_ != 0) { delete[] this->local_coll_name_; this->local_coll_name_ = 0; } + if (this->ami_handler_local_coll_name_ != 0) + { + delete[] this->ami_handler_local_coll_name_; + this->ami_handler_local_coll_name_ = 0; + } + if (this->ami_handler_local_name_ != 0) + { + delete[] this->ami_handler_local_name_; + this->ami_handler_local_name_ = 0; + } } // compute stringified fully qualified collocated class name. @@ -177,6 +205,126 @@ be_interface::local_coll_name (int type) const return this->local_coll_name_; } + +const char* +be_interface::ami_handler_full_coll_name (void) +{ + if (this->ami_handler_full_coll_name_ == 0) + { + // @@ Michael: We need to check this one. I am just passing 1 + // for the time being. (Alex). + compute_ami_handler_name (this->full_coll_name(1), + this->ami_handler_full_coll_name_); + } + + return this->ami_handler_full_coll_name_; +} + +const char* +be_interface::ami_handler_local_coll_name (void) +{ + if (this->ami_handler_local_coll_name_ == 0) + { + // @@ Michael: We need to check this one. I am just passing 1 + // for the time being. (Alex). + compute_ami_handler_name (this->local_coll_name(1), + this->ami_handler_local_coll_name_); + } + + return this->ami_handler_local_coll_name_; +} + +const char* +be_interface::ami_handler_local_name (void) +{ + if (this->ami_handler_local_name_ == 0) + compute_ami_handler_name (this->local_name()->get_string (), + this->ami_handler_local_name_); + + return this->ami_handler_local_name_; +} + +// Generate collocated local and full names for the arbitrary local +// name under the scope of this interface. Usefull to generate AMI +// Handlers. +int +be_interface::compute_coll_names (const char *local_name, + char *&coll_local_name, + char *&coll_full_name) + +{ + const char collocated[] = "_tao_collocated_"; + const char poa[] = "POA_"; + + // Reserve enough room for the "POA_" prefix, the "_tao_collocated_" + // prefix and the local name and the (optional) "::" + int namelen = sizeof (collocated) + sizeof (poa); + + UTL_IdListActiveIterator *i; + ACE_NEW_RETURN (i, UTL_IdListActiveIterator (this->name ()), -1); + while (!i->is_done ()) + { + // reserve 2 characters for "::". + namelen += ACE_OS::strlen (i->item ()->get_string ()) + 2; + i->next (); + } + delete i; + + ACE_NEW_RETURN (coll_full_name, + char[namelen+1], + -1); + coll_full_name[0] = 0; // null terminate the string... + + // Iterate again.... + ACE_NEW_RETURN (i, UTL_IdListActiveIterator (this->name ()), -1); + + // Only the first component get the "POA_" preffix. + int poa_added = 0; + while (!i->is_done ()) + { + const char* item = i->item ()->get_string (); + + // Increase right away, so we can test for the final component + // in the loop. + i->next (); + + // We add the POA_ preffix only if the first component is not + // the global scope... + if (ACE_OS::strcmp (item, "") != 0) + { + if (!i->is_done ()) + { + // We only add the POA_ preffix if there are more than + // two components in the name, in other words, if the + // class is inside some scope. + if (!poa_added) + { + ACE_OS::strcat (coll_full_name, poa); + poa_added = 1; + } + ACE_OS::strcat (coll_full_name, item); + ACE_OS::strcat (coll_full_name, "::"); + } + else + { + ACE_OS::strcat (coll_full_name, collocated); + ACE_OS::strcat (coll_full_name, item); + } + } + } + delete i; + + // Compute the local name for the collocated class. + int localen = sizeof (collocated); + localen += ACE_OS::strlen (local_name); + ACE_NEW_RETURN (coll_local_name, char[localen], -1); + ACE_OS::strcpy(coll_local_name, collocated); + ACE_OS::strcat(coll_local_name, + local_name); + + return 0; +} + // compute stringified fully scoped skel name void be_interface::compute_fullskelname (void) @@ -259,6 +407,17 @@ be_interface::full_skel_name (void) return this->full_skel_name_; } +const char* +be_interface::ami_handler_full_skel_name (void) +{ + if (this->ami_handler_full_skel_name_ == 0) + compute_ami_handler_name (this->full_skel_name(), + this->ami_handler_full_skel_name_); + + return this->ami_handler_full_skel_name_; +} + + // Am I in some kind of a multiple inheritance int be_interface::in_mult_inheritance (void) { @@ -562,7 +721,7 @@ be_interface::gen_var_impl (char *interface_local_name, *ci << "{\n"; ci->incr_indent (); *ci << "CORBA::release (this->ptr_);" << nl; - *ci << "this->ptr_ = " << name () << "::_duplicate (p.ptr ());\n"; + *ci << "this->ptr_ = " << interface_full_name << "::_duplicate (p.ptr ());\n"; ci->decr_indent (); *ci << "}" << nl; *ci << "return *this;\n"; @@ -2055,6 +2214,8 @@ be_interface::accept (be_visitor *visitor) return visitor->visit_interface (this); } + + // Narrowing IMPL_NARROW_METHODS3 (be_interface, AST_Interface, be_scope, be_type) IMPL_NARROW_FROM_DECL (be_interface) diff --git a/TAO/TAO_IDL/be/be_type.cpp b/TAO/TAO_IDL/be/be_type.cpp index 899b2360a40..279348d9008 100644 --- a/TAO/TAO_IDL/be/be_type.cpp +++ b/TAO/TAO_IDL/be/be_type.cpp @@ -19,9 +19,9 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" ACE_RCSID(be, be_type, "$Id$") @@ -94,13 +94,70 @@ be_type::compute_tc_name (void) (namebuf), 1, 0, I_FALSE), NULL)); } + return; } +UTL_ScopedName * +be_type::compute_tc_name (const char *prefix, const char *suffix) +{ + // Both prefix and suffix has to be valid. Else return. + if (prefix == 0 || suffix == 0) + return 0; + + static char namebuf [NAMEBUFSIZE]; + UTL_ScopedName *n; + + UTL_ScopedName *result = NULL; + ACE_OS::memset (namebuf, '\0', NAMEBUFSIZE); + n = this->name (); + while (n->tail () != NULL) + { + if (!result) + { + // does not exist + result = new UTL_ScopedName (n->head (), NULL); + } + else + { + result->nconc (new UTL_ScopedName (n->head (), NULL)); + } + n = (UTL_ScopedName *)n->tail (); + } + + ACE_OS::sprintf (namebuf, + "_tc_%s%s%s", + prefix, + n->last_component ()->get_string (), + suffix); + + if (!result) + { + // does not exist + result = new UTL_ScopedName (new Identifier (ACE_OS::strdup + (namebuf), 1, 0, I_FALSE), NULL); + } + else + { + result->nconc (new UTL_ScopedName (new Identifier (ACE_OS::strdup + (namebuf), 1, + 0, I_FALSE), NULL)); + } + + return result; +} + // retrieve typecode name UTL_ScopedName * -be_type::tc_name (void) +be_type::tc_name (const char *prefix, const char *suffix) { + if (prefix != 0 && suffix != 0) + { + // Just compute and return the name. + return compute_tc_name (prefix, suffix); + } + + // Compute and init the member. if (!this->tc_name_) compute_tc_name (); diff --git a/TAO/TAO_IDL/be/be_visitor_argument.cpp b/TAO/TAO_IDL/be/be_visitor_argument.cpp index f839202185b..b6c726568ba 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument.cpp @@ -40,5 +40,10 @@ #include "be_visitor_argument/pre_invoke_cs.cpp" #include "be_visitor_argument/ami_arglist.cpp" #include "be_visitor_argument/ami_handler_arglist.cpp" +#include "be_visitor_argument/ami_handler_result_arg.cpp" +#include "be_visitor_argument/ami_handler_compiled_marshal_cs.cpp" +#include "be_visitor_argument/ami_handler_upcall_cs.cpp" +#include "be_visitor_argument/ami_handler_vardecl_cs.cpp" + ACE_RCSID(be, be_visitor_argument, "$Id$") diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp index 8ccbe559bb4..7eed73d1933 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_arglist.cpp @@ -72,6 +72,7 @@ be_visitor_args_ami_handler_arglist::visit_argument (be_argument *node) "cannot accept visitor\n"), -1); } + // Print the variable name only if the type was printed already. if (result) *os << " " << node->local_name () << ",\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp new file mode 100644 index 00000000000..7f2031f7604 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_compiled_marshal_cs.cpp @@ -0,0 +1,698 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_compiled_marshal_cs.cpp +// +// = DESCRIPTION +// Visitor generating the code that passes arguments to the CDR operators +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "be.h" +#include "be_visitor_argument.h" + +ACE_RCSID(be_visitor_argument, ami_handler_compiled_marshal_cs, "$Id$") + + +// **************************************************************************** +// visitor for arguments passing to the CDR operators. +// **************************************************************************** + +be_visitor_args_ami_handler_compiled_marshal_cs:: +be_visitor_args_ami_handler_compiled_marshal_cs (be_visitor_context *ctx) + : be_visitor_args (ctx) +{ +} + +be_visitor_args_ami_handler_compiled_marshal_cs:: +~be_visitor_args_ami_handler_compiled_marshal_cs (void) +{ +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_argument (be_argument *node) +{ + this->ctx_->node (node); // save the argument node + + // retrieve the type of the argument + be_type *bt = be_type::narrow_from_decl (node->field_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_argument - " + "Bad argument type\n"), + -1); + } + + // Different types have different mappings when used as in/out or + // inout parameters. Let this visitor deal with the type + + TAO_OutStream *os = this->ctx_->stream (); // get output stream + + //TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGS_DEMARSHAL_CS) + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << "(_tao_in >> "; + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << "(_tao_out << "; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_argument - " + "Bad substate\n"), + -1); + } + + if (bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_argument - " + "cannot accept visitor\n"), + -1); + } + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << ")"; + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << ")"; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_argument - " + "Bad substate\n"), + -1); + } + + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_array (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << "_tao_forany_" << arg->local_name (); + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << node->name () << "_forany (" + << "(" << node->name () << "_slice *)" + << arg->local_name () << ")"; + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_array - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_enum (be_enum *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_enum - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_interface (be_interface *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << ".out ()"; + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_interface - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_interface_fwd (be_interface_fwd *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << "out ()"; + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_interface - " + "Bad substate\n"), + -1); + } + return 0; +} + +#ifdef IDL_HAS_VALUETYPE + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_valuetype (be_valuetype *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << ".out ()"; + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_valuetype - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_valuetype_fwd (be_valuetype_fwd *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name () << "out ()"; + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_valuetype_fwd - " + "Bad substate\n"), + -1); + } + return 0; +} + +#endif /* IDL_HAS_VALUETYPE */ + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_predefined_type (be_predefined_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get argument node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + switch (node->pt ()) + { + case AST_PredefinedType::PT_pseudo: + *os << arg->local_name () << ".out ()"; + break; + case AST_PredefinedType::PT_any: + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_longlong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_float: + case AST_PredefinedType::PT_double: + case AST_PredefinedType::PT_longdouble: + *os << arg->local_name (); + break; + case AST_PredefinedType::PT_char: + *os << "CORBA::Any::to_char (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_wchar: + *os << "CORBA::Any::to_wchar (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_boolean: + *os << "CORBA::Any::to_boolean (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_octet: + *os << "CORBA::Any::to_octet (" << arg->local_name () << ")"; + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_ss::" + "visit_predefined_type - " + "Bad predefined type\n"), + -1); + } + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + switch (node->pt ()) + { + case AST_PredefinedType::PT_pseudo: + case AST_PredefinedType::PT_any: + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_longlong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_float: + case AST_PredefinedType::PT_double: + case AST_PredefinedType::PT_longdouble: + *os << arg->local_name (); + break; + case AST_PredefinedType::PT_char: + *os << "CORBA::Any::from_char (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_wchar: + *os << "CORBA::Any::from_wchar (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_boolean: + *os << "CORBA::Any::from_boolean (" << arg->local_name () << ")"; + break; + case AST_PredefinedType::PT_octet: + *os << "CORBA::Any::from_octet (" << arg->local_name () << ")"; + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_compiled_marshal_cs::" + "visit_predefined_type - " + "Bad predefined type\n"), + -1); + } + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_array - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_sequence (be_sequence *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_interface - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_string (be_string *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + // we need to make a distinction between bounded and unbounded strings + if (node->max_size ()->ev ()->u.ulval == 0) + { + *os << arg->local_name () << ".out ()"; + } + else + { + *os << "CORBA::Any::to_string (" + << arg->local_name () << ".out (), " + << node->max_size ()->ev ()->u.ulval - 1 + << ")"; + } + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_interface - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_structure (be_structure *node) +{ + ACE_UNUSED_ARG (node); + + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_interface - " + "Bad substate\n"), + -1); + } + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_union (be_union *node) +{ + ACE_UNUSED_ARG (node); + + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + *os << arg->local_name (); + break; + } + } + else + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_interface - " + "Bad substate\n"), + -1); + } + + return 0; +} + +int be_visitor_args_ami_handler_compiled_marshal_cs::visit_typedef (be_typedef *node) +{ + this->ctx_->alias (node); + if (node->primitive_base_type ()->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_compiled_marshal_cs::" + "visit_typedef - " + "accept on primitive type failed\n"), + -1); + } + this->ctx_->alias (0); + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp new file mode 100644 index 00000000000..9a2b8872e9a --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_result_arg.cpp @@ -0,0 +1,179 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_result_arg.cpp +// +// = DESCRIPTION +// Visitor that generates the result argument in a call back method +// of a Reply Handler. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "be.h" +#include "be_visitor_argument.h" + +ACE_RCSID(be_visitor_args, ami_handler_result_arg, "$Id$") + + +// ************************************************************ +// Visitor for parameter list in AMI Handler call back declarations +// and definitions. +// ************************************************************ + +be_visitor_args_ami_handler_result_arg::be_visitor_args_ami_handler_result_arg (be_visitor_context *ctx) + : be_visitor_args (ctx) +{ +} + +be_visitor_args_ami_handler_result_arg::~be_visitor_args_ami_handler_result_arg (void) +{ +} + +int +be_visitor_args_ami_handler_result_arg::visit_array (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << "const " << this->type_name (node) << " _tao_retval, "; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_enum (be_enum *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node) << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_interface (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node, "_ptr") << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_interface_fwd (be_interface_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node, "_ptr") << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_native (be_native *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node) << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_predefined_type (be_predefined_type *node) +{ + + // Nothing to do if the return type is void. + if (node->pt () == AST_PredefinedType::PT_void) + return 0; + + // Get output stream. + TAO_OutStream *os = this->ctx_->stream (); + + // Check if the type is an any. + if (node->pt () == AST_PredefinedType::PT_any) + { + *os << "const " << this->type_name (node) << " &" << " _tao_retval"; + } + else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object + { + *os << this->type_name (node, "_ptr") << " _tao_retval"; + } + else + { + *os << this->type_name (node) << " _tao_retval"; + } + + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_sequence (be_sequence *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " &" << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_string (be_string *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const char *" << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_structure (be_structure *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " &" << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_union (be_union *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " &" << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_typedef (be_typedef *node) +{ + this->ctx_->alias (node); + if (node->primitive_base_type ()->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_result_arg::" + "visit_typedef - " + "accept on primitive type failed\n"), + -1); + } + this->ctx_->alias (0); + return 1; +} + + +#ifdef IDL_HAS_VALUETYPE + +int +be_visitor_args_ami_handler_result_arg::visit_valuetype (be_valuetype *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << this->type_name (node) << " *" << " _tao_retval"; + return 1; +} + +int +be_visitor_args_ami_handler_result_arg::visit_valuetype_fwd (be_valuetype_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " *" << " _tao_retval"; + return 1; +} + +#endif /* IDL_HAS_VALUETYPE */ diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp new file mode 100644 index 00000000000..344d2a61ce0 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_upcall_cs.cpp @@ -0,0 +1,382 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_upcall_cs.cpp +// +// = DESCRIPTION +// Visitor that generates code that passes argument variables to the +// upcall. +// +// = AUTHOR +// Aniruddha Gokhale +// Michael Kircher +// +// ============================================================================ + +#include "idl.h" +#include "be.h" +#include "be_visitor_argument.h" + +ACE_RCSID(be_visitor_argument, upcall_cs, "$Id$") + + +// ************************************************************************ +// visitor for passing arguments to the upcall +// ************************************************************************ + +be_visitor_args_ami_handler_upcall_cs::be_visitor_args_ami_handler_upcall_cs (be_visitor_context *ctx) + : be_visitor_args (ctx) +{ +} + +be_visitor_args_ami_handler_upcall_cs::~be_visitor_args_ami_handler_upcall_cs (void) +{ +} + +int be_visitor_args_ami_handler_upcall_cs::visit_argument (be_argument *node) +{ + this->ctx_->node (node); // save the argument node + + // retrieve the type + be_type *bt = be_type::narrow_from_decl (node->field_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_upcall_cs::" + "visit_argument - " + "Bad argument type\n"), + -1); + } + + // Different types have different mappings when used as in/out or + // inout parameters. Let this visitor deal with the type + + if (bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_upcall_cs::" + "visit_argument - " + "cannot accept visitor\n"), + -1); + } + + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_array (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_OUT: + case AST_Argument::dir_INOUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + if (node->size_type () == be_decl::VARIABLE) + *os << arg->local_name () << ".in ()"; + else + *os << arg->local_name (); + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_enum (be_enum *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << arg->local_name (); + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_interface (be_interface *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_interface_fwd (be_interface_fwd *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } + return 0; +} + +#ifdef IDL_HAS_VALUETYPE + +int be_visitor_args_ami_handler_upcall_cs::visit_valuetype (be_valuetype *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_valuetype_fwd (be_valuetype_fwd *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } + return 0; +} + +#endif /* IDL_HAS_VALUETYPE */ + + +int be_visitor_args_ami_handler_upcall_cs::visit_predefined_type (be_predefined_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // check if the type is an any + if (node->pt () == AST_PredefinedType::PT_any) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /* + if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } // end switch direction + } // end of if + else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } // end switch direction + } // end else if + else // simple predefined types + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << arg->local_name (); + break; + } // end switch direction + } // end of else + + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_sequence (be_sequence *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /*if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_string (be_string *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // If we use it in conjunction with AMI Reply Handlers we do + // not want to generate declarations for IN arguments + if (this->direction () == AST_Argument::dir_IN + && this->ctx_->state() == TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS) + return 0; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + /* + if (this->ctx_->state () + == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_upcall_cs) + *os << arg->local_name (); + else + */ + os->indent (); + *os << arg->local_name () << ".in ()"; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_structure (be_structure *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + if (node->size_type () == be_decl::VARIABLE) + *os << arg->local_name () << ".in ()"; + else + *os << arg->local_name (); + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_union (be_union *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + if (node->size_type () == be_decl::VARIABLE) + *os << arg->local_name () << ".in ()"; + else + *os << arg->local_name (); + break; + } + return 0; +} + +int be_visitor_args_ami_handler_upcall_cs::visit_typedef (be_typedef *node) +{ + this->ctx_->alias (node); + if (node->primitive_base_type ()->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_upcall_cs::" + "visit_typedef - " + "accept on primitive type failed\n"), + -1); + } + this->ctx_->alias (0); + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp new file mode 100644 index 00000000000..8592d1d5e81 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_argument/ami_handler_vardecl_cs.cpp @@ -0,0 +1,525 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_vardecl_cs.cpp +// +// = DESCRIPTION +// Visitor that generates the variable declaration in the skeleton +// corresponding to the Argument node +// +// = AUTHOR +// Aniruddha Gokhale +// Michael Kircher +// +// ============================================================================ + +#include "idl.h" +#include "be.h" +#include "be_visitor_argument.h" + +ACE_RCSID(be_visitor_argument, ami_handler_vardecl_cs, "$Id$") + + +// ************************************************************************ +// Visitor to generate code for argument variable declaration +// ************************************************************************ + +be_visitor_args_ami_handler_vardecl_cs::be_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx) + : be_visitor_args (ctx) +{ +} + +be_visitor_args_ami_handler_vardecl_cs::~be_visitor_args_ami_handler_vardecl_cs (void) +{ +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_argument (be_argument *node) +{ + this->ctx_->node (node); // save the argument node + + // retrieve the type + be_type *bt = be_type::narrow_from_decl (node->field_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_vardecl_cs::" + "visit_argument - " + "Bad argument type\n"), + -1); + } + + // Different types have different mappings when used as in/out or + // inout parameters. Let this visitor deal with the type + + if (bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_vardecl_cs::" + "visit_argument - " + "cannot accept visitor\n"), + -1); + } + + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_array (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";" << be_nl + << bt->name () << "_forany _tao_forany_" + << arg->local_name () << " (" << be_idt << be_idt_nl + << arg->local_name () << be_uidt_nl + << ");\n" << be_uidt; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_enum (be_enum *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";" << be_nl + << bt->name () << "_forany _tao_forany_" + << arg->local_name () << " (" << be_idt << be_idt_nl + << arg->local_name () << be_uidt_nl + << ");\n" << be_uidt; + break; + } + return 0; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_interface (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); +#if 0 /* ASG */ + *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl; + *os << "CORBA::Object_var _tao_base_var_" << arg->local_name () + << ";" << be_nl; + *os << "CORBA::Object_ptr &_tao_base_ptr_" << arg->local_name () + << " = _tao_base_var_" << arg->local_name () << ".out ();\n"; +#endif + *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl; + *os << "CORBA::Object_var _tao_base_var_" << arg->local_name () + << ";\n"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_interface_fwd (be_interface_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); +#if 0 /* ASG */ + *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl; + *os << "CORBA::Object_var _tao_base_var_" << arg->local_name () + << ";" << be_nl; + *os << "CORBA::Object_ptr &_tao_base_ptr_" << arg->local_name () + << " = _tao_base_var_" << arg->local_name () << ".out ();\n"; +#endif + *os << bt->name () << "_var " << arg->local_name () << ";" << be_nl; + *os << "CORBA::Object_var _tao_base_var_" << arg->local_name () + << ";\n"; + break; + } + return 0; +} + + +#ifdef IDL_HAS_VALUETYPE + +int be_visitor_args_ami_handler_vardecl_cs::visit_valuetype (be_valuetype *) +{ + return -1; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd *) +{ + return -1; +} + +#endif /* IDL_HAS_VALUETYPE */ + +int be_visitor_args_ami_handler_vardecl_cs::visit_predefined_type (be_predefined_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + // check if the type is an any + if (node->pt () == AST_PredefinedType::PT_any) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";\n"; + break; + } // end switch direction + } // end of if + else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); +#if 0 /* ASG */ + *os << bt->name () << "_var " << arg->local_name () + << ";" << be_nl; + *os << bt->name () << "_ptr &_tao_ptr_" << arg->local_name () + << " = " << arg->local_name () << ".out ();\n"; +#endif + *os << bt->name () << "_var " << arg->local_name () + << ";\n"; + break; + } // end switch direction + } // end else if + else // simple predefined types + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";\n"; + break; + } // end switch direction + } // end of else + + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_sequence (be_sequence *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_string (be_string *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); +#if 0 /* ASG */ + *os << "CORBA::String_var _tao_var_" + << arg->local_name () << ";" << be_nl; + *os << "char *&" << arg->local_name () << " = _tao_var_" + << arg->local_name () << ".out ();" << be_nl; +#endif + *os << "CORBA::String_var " + << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_structure (be_structure *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_union (be_union *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << " " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int be_visitor_args_ami_handler_vardecl_cs::visit_typedef (be_typedef *node) +{ + this->ctx_->alias (node); + if (node->primitive_base_type ()->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_args_ami_handler_vardecl_cs::" + "visit_typedef - " + "accept on primitive type failed\n"), + -1); + } + this->ctx_->alias (0); + return 0; +} + + +// ************************************************************************ +// Visitor to generate code for argument variable declaration for compiled +// marshaling. This provides only the overriden methods. The rest is handled by +// the base class that works for interpretiveskeletons. +// ************************************************************************ + +be_compiled_visitor_args_ami_handler_vardecl_cs:: +be_compiled_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx) + : be_visitor_args_ami_handler_vardecl_cs (ctx) +{ +} + +be_compiled_visitor_args_ami_handler_vardecl_cs::~be_compiled_visitor_args_ami_handler_vardecl_cs (void) +{ +} + +int be_compiled_visitor_args_ami_handler_vardecl_cs::visit_interface (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << "_var " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int be_compiled_visitor_args_ami_handler_vardecl_cs::visit_interface_fwd (be_interface_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << "_var " << arg->local_name () << ";\n"; + break; + } + return 0; +} + + +#ifdef IDL_HAS_VALUETYPE + +int be_compiled_visitor_args_ami_handler_vardecl_cs::visit_valuetype (be_valuetype *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << "_var " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +int +be_compiled_visitor_args_ami_handler_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument + // node + // if the current type is an alias, use that + be_type *bt; + if (this->ctx_->alias ()) + bt = this->ctx_->alias (); + else + bt = node; + + switch (this->direction ()) + { + case AST_Argument::dir_IN: + break; + case AST_Argument::dir_INOUT: + case AST_Argument::dir_OUT: + os->indent (); + *os << bt->name () << "_var " << arg->local_name () << ";\n"; + break; + } + return 0; +} + +#endif /* IDL_HAS_VALUETYPE */ diff --git a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp index e8105746d40..18cae73c4c9 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_cs.cpp @@ -60,16 +60,17 @@ int be_visitor_args_compiled_marshal_cs::visit_argument (be_argument *node) TAO_OutStream *os = this->ctx_->stream (); // get output stream + os->indent (); + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { switch (this->direction ()) { case AST_Argument::dir_IN: case AST_Argument::dir_INOUT: - os->indent (); *os << "(_tao_out << "; break; - case AST_Argument::dir_OUT: + case AST_Argument::dir_OUT: break; } } @@ -81,7 +82,6 @@ int be_visitor_args_compiled_marshal_cs::visit_argument (be_argument *node) break; case AST_Argument::dir_INOUT: case AST_Argument::dir_OUT: - os->indent (); *os << "(_tao_in >> "; break; } @@ -158,7 +158,7 @@ int be_visitor_args_compiled_marshal_cs::visit_array (be_array *node) case AST_Argument::dir_INOUT: *os << node->name () << "_forany (" << arg->local_name () << ")"; - break; + break; case AST_Argument::dir_OUT: break; } @@ -676,15 +676,15 @@ int be_visitor_args_compiled_marshal_cs::visit_structure (be_structure *node) if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } + switch (this->direction ()) + { + case AST_Argument::dir_IN: + case AST_Argument::dir_INOUT: + *os << arg->local_name (); + break; + case AST_Argument::dir_OUT: + break; + } } else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) { diff --git a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp index 510a89d3328..012dc96724f 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/compiled_marshal_ss.cpp @@ -363,13 +363,13 @@ int be_visitor_args_compiled_marshal_ss::visit_valuetype_fwd (be_valuetype_fwd * { case AST_Argument::dir_IN: case AST_Argument::dir_INOUT: - *os << arg->local_name () << "out ()"; + *os << arg->local_name () << ".out ()"; break; case AST_Argument::dir_OUT: break; } } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { switch (this->direction ()) { diff --git a/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp index 57702ecd178..1e270712ea9 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp @@ -260,7 +260,6 @@ int be_visitor_args_upcall_ss::visit_predefined_type (be_predefined_type *node) TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - os->indent (); // check if the type is an any if (node->pt () == AST_PredefinedType::PT_any) @@ -328,7 +327,6 @@ int be_visitor_args_upcall_ss::visit_sequence (be_sequence *) TAO_OutStream *os = this->ctx_->stream (); // get the stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - os->indent (); switch (this->direction ()) { @@ -352,7 +350,6 @@ int be_visitor_args_upcall_ss::visit_string (be_string *) TAO_OutStream *os = this->ctx_->stream (); // get the stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - os->indent (); switch (this->direction ()) { @@ -386,7 +383,6 @@ int be_visitor_args_upcall_ss::visit_structure (be_structure *node) TAO_OutStream *os = this->ctx_->stream (); // get the stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - os->indent (); switch (this->direction ()) { @@ -413,7 +409,6 @@ int be_visitor_args_upcall_ss::visit_union (be_union *node) TAO_OutStream *os = this->ctx_->stream (); // get the stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - os->indent (); switch (this->direction ()) { diff --git a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp index b07cbd35be4..c5829ca7f92 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp @@ -368,7 +368,6 @@ int be_visitor_args_vardecl_ss::visit_string (be_string *) TAO_OutStream *os = this->ctx_->stream (); // get output stream be_argument *arg = this->ctx_->be_node_as_argument (); // get the argument // node - switch (this->direction ()) { case AST_Argument::dir_IN: diff --git a/TAO/TAO_IDL/be/be_visitor_factory.cpp b/TAO/TAO_IDL/be/be_visitor_factory.cpp index 78caefabdfc..bbb90a662dd 100644 --- a/TAO/TAO_IDL/be/be_visitor_factory.cpp +++ b/TAO/TAO_IDL/be/be_visitor_factory.cpp @@ -147,6 +147,7 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx) return new be_visitor_interface_ch (new_ctx); case TAO_CodeGen::TAO_INTERFACE_CI: return new be_visitor_interface_ci (new_ctx); + case TAO_CodeGen::TAO_INTERFACE_CS: return new be_visitor_interface_cs (new_ctx); @@ -168,6 +169,10 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx) return new be_visitor_interface_direct_collocated_sh (new_ctx); case TAO_CodeGen::TAO_INTERFACE_DIRECT_COLLOCATED_SS: return new be_visitor_interface_direct_collocated_ss (new_ctx); + + case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_CH: + return new be_visitor_interface_collocated_ami_handler_ch (new_ctx); + case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CH: return new be_visitor_interface_any_op_ch (new_ctx); case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CS: @@ -375,13 +380,16 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx) return new be_visitor_typedef_cdr_op_cs (new_ctx); case TAO_CodeGen::TAO_TYPECODE_DECL: + case TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DECL: // Do we need TypeCode Support? if (idl_global->tc_support ()) return new be_visitor_typecode_decl (new_ctx); else // return a NO_OP visitor return new be_visitor_decl (new_ctx); + case TAO_CodeGen::TAO_TYPECODE_DEFN: + case TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN: // Do we need TypeCode Support? if (idl_global->tc_support ()) return new be_visitor_typecode_defn (new_ctx); @@ -453,11 +461,20 @@ TAO_Common_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_AMI_HANDLER_FWD_CI: return new be_visitor_interface_ami_handler_fwd_ci (new_ctx); - case TAO_CodeGen::TAO_AMI_HANDLER_CH: - return new be_visitor_interface_ami_handler_ch (new_ctx); + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH: + return new be_visitor_interface_ami_handler_servant_ch (new_ctx); - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST: - return new be_visitor_operation_ami_handler_arglist (new_ctx); + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CS: + return new be_visitor_interface_ami_handler_servant_cs (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CH: + return new be_visitor_interface_ami_handler_stub_ch (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CS: + return new be_visitor_interface_ami_handler_stub_cs (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RESULT_ARG: + return new be_visitor_args_ami_handler_result_arg (new_ctx); default: // an error @@ -513,30 +530,45 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx) return new be_visitor_operation_direct_collocated_sh (new_ctx); case TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS: return new be_visitor_operation_direct_collocated_ss (new_ctx); + + case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH: + return new be_visitor_operation_ami_handler_operation_ch (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETTYPE_CH: case TAO_CodeGen::TAO_OPERATION_RETTYPE_OTHERS: return new be_visitor_operation_rettype (new_ctx); case TAO_CodeGen::TAO_OPERATION_RETTYPE_IS: return new be_visitor_operation_rettype_is (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS: return new be_visitor_operation_rettype_vardecl_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_PRE_INVOKE_CS: return new be_visitor_operation_rettype_pre_docall_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS: return new be_visitor_operation_rettype_docall_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_INVOKE_CS: return new be_visitor_operation_rettype_post_docall_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS: return new be_visitor_operation_rettype_return_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS: return new be_visitor_operation_exceptlist_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_SS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS: return new be_visitor_operation_rettype_vardecl_ss (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_DEMARSHAL_SS: case TAO_CodeGen::TAO_OPERATION_RETVAL_MARSHAL_SS: return new be_visitor_operation_rettype_marshal_ss (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_ASSIGN_SS: return new be_visitor_operation_rettype_assign_ss (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_UPCALL_SS: return new be_visitor_operation_rettype_post_upcall_ss (new_ctx); case TAO_CodeGen::TAO_OPERATION_ARGLIST_CH: @@ -546,8 +578,11 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_OPERATION_ARGLIST_COLLOCATED_SH: case TAO_CodeGen::TAO_OPERATION_ARGLIST_OTHERS: return new be_visitor_operation_arglist (new_ctx); + case TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS: case TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS: + case TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS: + // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS: case TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS: case TAO_CodeGen::TAO_OPERATION_ARG_PRE_UPCALL_SS: case TAO_CodeGen::TAO_OPERATION_ARG_UPCALL_SS: @@ -557,7 +592,9 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_OPERATION_ARG_DEMARSHAL_SS: case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS: case TAO_CodeGen::TAO_OPERATION_ARG_POST_MARSHAL_SS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS: return new be_visitor_operation_argument (new_ctx); + case TAO_CodeGen::TAO_OPERATION_TIE_SH: return new be_visitor_operation_tie_sh (new_ctx); case TAO_CodeGen::TAO_OPERATION_TIE_SI: @@ -566,10 +603,15 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_CH: case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_OTHERS: return new be_visitor_args_arglist (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_PRE_INVOKE_CS: return new be_visitor_args_pre_docall_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_INVOKE_CS: + case TAO_CodeGen::TAO_AMI_ARGUMENT_INVOKE_CS: + // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS: return new be_visitor_args_docall_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_POST_INVOKE_CS: return new be_visitor_args_post_docall_cs (new_ctx); case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS: @@ -593,24 +635,37 @@ TAO_Interpretive_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_OPERATION_AMI_CS: return new be_interpretive_visitor_operation_ami_cs (new_ctx); - case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST: + case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH: + case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS: return new be_visitor_operation_ami_arglist (new_ctx); - case TAO_CodeGen::TAO_OPERATION_ARG_AMI: - return new be_visitor_operation_argument (new_ctx); + // case TAO_CodeGen::TAO_OPERATION_ARG_AMI: + // return new be_visitor_operation_argument (new_ctx); - case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST: + case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CH: return new be_visitor_args_ami_arglist (new_ctx); - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_CH: + case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CS: + return new be_visitor_args_ami_arglist (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH: + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH: return new be_visitor_operation_ami_handler_operation_ch (new_ctx); - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST: + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CS: + return new be_interpretive_visitor_operation_ami_handler_operation_cs (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS: return new be_visitor_operation_ami_handler_arglist (new_ctx); - case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST: + case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH: + case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS: return new be_visitor_args_ami_handler_arglist (new_ctx); + case TAO_CodeGen::TAO_AMI_HANDLER_SKELETON_CS: + return new be_interpretive_visitor_operation_ami_handler_skeleton_cs (new_ctx); + default: // cannot handle it; delegate it to the common visitor factory delete new_ctx; @@ -664,34 +719,53 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx) return new be_visitor_operation_direct_collocated_sh (new_ctx); case TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS: return new be_visitor_operation_direct_collocated_ss (new_ctx); + + case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH: + return new be_visitor_operation_ami_handler_operation_ch (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETTYPE_CH: case TAO_CodeGen::TAO_OPERATION_RETTYPE_OTHERS: return new be_visitor_operation_rettype (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS: return new be_visitor_operation_rettype_vardecl_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_PRE_INVOKE_CS: return new be_visitor_operation_rettype_pre_invoke_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS: return new be_visitor_operation_rettype_compiled_marshal (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_INVOKE_CS: // this is a NO-OP return new be_visitor_decl (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS: return new be_visitor_operation_rettype_return_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS: return new be_visitor_operation_exceptlist_cs (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_SS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS: return new be_compiled_visitor_operation_rettype_vardecl_ss (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_DEMARSHAL_SS: // this is a NO-OP return new be_visitor_decl (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_MARSHAL_SS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_MARSHAL_CS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DEMARSHAL_CS: return new be_visitor_operation_rettype_compiled_marshal (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_ASSIGN_SS: return new be_visitor_operation_rettype_assign_ss (new_ctx); + case TAO_CodeGen::TAO_OPERATION_RETVAL_POST_UPCALL_SS: // this is a NO-OP return new be_visitor_decl (new_ctx); + case TAO_CodeGen::TAO_OPERATION_ARGLIST_CH: case TAO_CodeGen::TAO_OPERATION_ARGLIST_SH: case TAO_CodeGen::TAO_OPERATION_ARGLIST_IH: @@ -699,6 +773,7 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_OPERATION_ARGLIST_COLLOCATED_SH: case TAO_CodeGen::TAO_OPERATION_ARGLIST_OTHERS: return new be_visitor_operation_arglist (new_ctx); + case TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS: case TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS: case TAO_CodeGen::TAO_OPERATION_ARG_PRE_UPCALL_SS: @@ -707,40 +782,73 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_OPERATION_ARG_POST_UPCALL_SS: case TAO_CodeGen::TAO_OPERATION_ARG_DECL_SS: case TAO_CodeGen::TAO_OPERATION_ARG_POST_MARSHAL_SS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS: return new be_visitor_operation_argument (new_ctx); + case TAO_CodeGen::TAO_OPERATION_ARG_DEMARSHAL_SS: case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS: return new be_compiled_visitor_operation_argument_marshal (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS: + return new be_compiled_visitor_operation_ami_handler_argument_marshal (new_ctx); + case TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS: + case TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS: + // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS: return new be_compiled_visitor_operation_argument_invoke (new_ctx); + case TAO_CodeGen::TAO_OPERATION_TIE_SH: return new be_visitor_operation_tie_sh (new_ctx); + case TAO_CodeGen::TAO_OPERATION_TIE_SI: return new be_visitor_operation_tie_si (new_ctx); case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_CH: case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_OTHERS: return new be_visitor_args_arglist (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_PRE_INVOKE_CS: return new be_visitor_args_pre_invoke_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_INVOKE_CS: + case TAO_CodeGen::TAO_AMI_ARGUMENT_INVOKE_CS: + // @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS: return new be_visitor_args_compiled_marshal_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_POST_INVOKE_CS: return new be_visitor_args_post_docall_compiled_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS: return new be_compiled_visitor_args_vardecl_ss (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_VARDECL_CS: + return new be_compiled_visitor_args_ami_handler_vardecl_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS: // this is a NO-OP return new be_visitor_decl (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS: case TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS: return new be_visitor_args_upcall_ss (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS: + return new be_visitor_args_ami_handler_upcall_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS: // this is a NO-OP return new be_visitor_decl (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_DEMARSHAL_SS: case TAO_CodeGen::TAO_ARGUMENT_MARSHAL_SS: return new be_visitor_args_compiled_marshal_ss (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_DEMARSHAL_CS: + case TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_MARSHAL_CS: + return new be_visitor_args_ami_handler_compiled_marshal_cs (new_ctx); + case TAO_CodeGen::TAO_ARGUMENT_POST_MARSHAL_SS: // this is a NO-OP return new be_visitor_decl (new_ctx); @@ -751,27 +859,40 @@ TAO_Compiled_Visitor_Factory::make_visitor (be_visitor_context *ctx) case TAO_CodeGen::TAO_OPERATION_AMI_CH: return new be_visitor_operation_ami_ch (new_ctx); - case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST: + case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH: + case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS: return new be_visitor_operation_ami_arglist (new_ctx); - case TAO_CodeGen::TAO_OPERATION_ARG_AMI: - return new be_visitor_operation_argument (new_ctx); + // case TAO_CodeGen::TAO_OPERATION_ARG_AMI: + // return new be_visitor_operation_argument (new_ctx); - case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST: + case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CH: return new be_visitor_args_ami_arglist (new_ctx); - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_CH: + case TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CS: + return new be_visitor_args_ami_arglist (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH: + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH: return new be_visitor_operation_ami_handler_operation_ch (new_ctx); - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST: + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CS: + return new be_compiled_visitor_operation_ami_handler_operation_cs (new_ctx); + + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS: return new be_visitor_operation_ami_handler_arglist (new_ctx); case TAO_CodeGen::TAO_ARGUMENT_ARGLIST_AMI_HANDLER: return new be_visitor_args_ami_handler_arglist (new_ctx); - case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST: + case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH: + case TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS: return new be_visitor_args_ami_handler_arglist (new_ctx); + case TAO_CodeGen::TAO_AMI_HANDLER_SKELETON_CS: + return new be_compiled_visitor_operation_ami_handler_skeleton_cs (new_ctx); + default: // cannot handle it; delegate it to the common visitor factory delete new_ctx; diff --git a/TAO/TAO_IDL/be/be_visitor_interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface.cpp index ff8a4ab8d98..1ac9ed473ea 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface.cpp @@ -45,5 +45,10 @@ #include "be_visitor_interface/cdr_op_cs.cpp" #include "be_visitor_interface/ami_handler_fwd_ch.cpp" #include "be_visitor_interface/ami_handler_fwd_ci.cpp" -#include "be_visitor_interface/ami_handler_ch.cpp" +#include "be_visitor_interface/ami_handler_servant_ch.cpp" +#include "be_visitor_interface/ami_handler_servant_cs.cpp" +#include "be_visitor_interface/ami_handler_stub_ch.cpp" +#include "be_visitor_interface/ami_handler_stub_cs.cpp" +#include "be_visitor_interface/collocated_ami_handler_ch.cpp" + ACE_RCSID(be, be_visitor_interface, "$Id$") diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp index 857630cdbe5..678314b2855 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_ch.cpp @@ -20,9 +20,9 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" #include "be_visitor_interface.h" @@ -58,7 +58,7 @@ be_visitor_interface_ami_handler_ch::visit_interface (be_interface *node) // Generate the skeleton class name. // Start with whatever indentation level we are at. - os->indent (); + os->indent (); // We shall have a POA_ prefix only if we are at the topmost level. if (!node->is_nested ()) @@ -85,7 +85,7 @@ be_visitor_interface_ami_handler_ch::visit_interface (be_interface *node) // This class will inherit from the Messaging::ReplyHandler class. *os << "class " << idl_global->export_macro () << " " << namebuf - << " : public POA_Messaging::ReplyHandler" + << " : public POA_Messaging::ReplyHandler" << be_nl; // Body of the class definition. diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp new file mode 100644 index 00000000000..62eae6c6da5 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_cs.cpp @@ -0,0 +1,235 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_cs.cpp +// +// = DESCRIPTION +// Visitor generating code for AMI Handler class for an Interface. +// +// = AUTHOR +// Alexander Babu Arulanthu <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface.h" + +ACE_RCSID(be_visitor_interface, ami_handler_cs, "$Id$") + + +// ************************************************************ +// Interface visitor for client stubs +// ************************************************************ + +be_visitor_ ami_handler_cs::be_visitor_ ami_handler_cs (be_visitor_context *ctx) + : be_visitor_interface (ctx) +{ +} + +be_visitor_ ami_handler_cs::~be_visitor_ ami_handler_cs (void) +{ +} + +int +be_visitor_ ami_handler_cs::visit_interface (be_interface *node) +{ + // output stream. + TAO_OutStream *os; + + if (node->cli_stub_gen () || node->imported ()) + return 0; + + os = this->ctx_->stream (); + + // Start with whatever indentation level we are at. + os->indent (); + + // Create the full name for the AMI_<Interface name>_Handler + // interface. + char *full_name = 0; + + // Full name. + // If there exists a scope name for this, then generate + // "Scope::AMI_<Local Name>_Handler". + + size_t scope_len = 0; + + be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl (); + + if (parent != 0 && + parent->fullname () != 0 && + ACE_OS::strlen (parent->fullname ())) + scope_len = ACE_OS::strlen (parent->fullname ()) + ACE_OS::strlen ("::"); + + ACE_NEW_RETURN (full_name, + char [scope_len + + ACE_OS::strlen ("AMI_") + + ACE_OS::strlen (node->local_name ()->get_string ()) + + ACE_OS::strlen ("_Handler") + + 1], + -1); + + if (parent != 0 && + parent->fullname () != 0 && + ACE_OS::strlen (parent->fullname ())) + ACE_OS::sprintf (full_name, + "%s::AMI_%s_Handler", + parent->fullname (), + node->local_name ()->get_string ()); + else + ACE_OS::sprintf (full_name, + "AMI_%s_Handler", + node->local_name ()->get_string ()); + + // First generate the code for the static methods. + + // The _narrow method + *os << full_name << "_ptr " << full_name + << "::_narrow (" << be_idt << be_idt_nl + << "CORBA::Object_ptr obj," << be_nl + << "CORBA::Environment &env" << be_uidt_nl + << ")" << be_uidt_nl + << "{" << be_idt_nl + << "if (CORBA::is_nil (obj))" << be_idt_nl + << "return " << full_name << "::_nil ();" << be_uidt_nl + << "if (!obj->_is_a (\"" << node->repoID () << "\", env))" + << be_idt_nl + << "return " << full_name << "::_nil ();" << be_uidt_nl; + + *os << "return " << full_name + << "::_unchecked_narrow (obj, env);" << be_uidt_nl + << "}" << be_nl << be_nl; + + // This may be necessary to work around a GCC compiler bug! + // const char *skel_name = node->full_skel_name (); // unused at this time + const char *coll_name = node->full_coll_name (); + assert (coll_name != 0); + + // The _unchecked_narrow method + *os << full_name << "_ptr " << full_name + << "::_unchecked_narrow (" << be_idt << be_idt_nl + << "CORBA::Object_ptr obj," << be_nl + << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl + << ")" << be_uidt_nl + << "{" << be_idt_nl + << "ACE_UNUSED_ARG (ACE_TRY_ENV);" << be_nl + << "if (CORBA::is_nil (obj))" << be_idt_nl + << "return " << full_name << "::_nil ();" << be_uidt_nl; + + *os << "TAO_Stub* stub = obj->_stubobj ();" << be_nl + << "stub->_incr_refcnt ();" << be_nl; + *os << "void* servant = 0;" << be_nl; + *os << "if (obj->_is_collocated () " + << "&& obj->_servant() != 0)" << be_idt_nl + << "servant = obj->_servant()->_downcast (\"" + << "IDL:omg.org/CORBA/Object:1.0\");" << be_uidt_nl; + + *os << "if (servant != 0)" << be_idt_nl << "{" << be_idt_nl + // The collocated object reference factory is not working right (yet) + << full_name << "_ptr retv = ACE_reinterpret_cast (" << be_idt << be_idt_nl + << full_name << "_ptr," << be_nl + << "ACE_reinterpret_cast (" << be_idt << be_idt_nl + << "PortableServer::Servant," << be_nl + << "servant" << be_uidt_nl + << ")" << be_uidt_nl + << "->_create_collocated_objref (" << be_idt << be_idt_nl + << "\"" << node->repoID () << "\"," << be_nl + << "TAO_ORB_Core::ORB_CONTROL," << be_nl + << "stub" << be_uidt_nl + << ")" << be_uidt << be_uidt_nl + << ");" << be_uidt_nl + << "if (retv != 0)" << be_idt_nl + << "return retv;" << be_uidt + // So we are still using the old way to create collocated objref. + << be_uidt_nl + << "}" << be_uidt_nl; + + *os << "return new " << full_name << "(stub);" << be_uidt_nl + << "}" << be_nl << be_nl; + + // The _duplicate method + *os << full_name << "_ptr " << be_nl + << full_name << "::_duplicate (" + << full_name << "_ptr obj)" << be_nl + << "{" << be_idt_nl + << "if (!CORBA::is_nil (obj))" << be_idt_nl + << "obj->_incr_refcnt ();" << be_uidt_nl + << "return obj;" << be_uidt_nl + << "}" << be_nl << be_nl; + + // generate code for the elements of the interface + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_ ami_handler_cs::" + "visit_interface - " + "codegen for scope failed\n"), -1); + } + + // generate the is_a method + os->indent (); + *os << "CORBA::Boolean " << full_name << "::_is_a (" << + "const CORBA::Char *value, CORBA::Environment &env)" << be_nl; + *os << "{\n"; + os->incr_indent (); + *os << "if (\n"; + os->incr_indent (0); + if (node->traverse_inheritance_graph (be_interface::is_a_helper, os) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_ ami_handler_cs::" + "visit_interface - " + "_is_a method codegen failed\n"), -1); + } + + os->indent (); + *os << "(!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env))))\n"; + *os << " return 1; // success using local knowledge\n"; + os->decr_indent (); + *os << "else" << be_nl; + *os << " return this->CORBA_Object::_is_a (value, env);\n"; + os->decr_indent (); + *os << "}\n\n"; + + os->indent (); + *os << "const char* " << full_name + << "::_interface_repository_id (void) const" + << be_nl + << "{" << be_idt_nl + << "return \"" << node->repoID () << "\";" << be_uidt_nl + << "}\n\n"; + + // by using a visitor to declare and define the TypeCode, we have the + // added advantage to conditionally not generate any code. This will be + // based on the command line options. This is still TO-DO + be_visitor *visitor; + be_visitor_context ctx (*this->ctx_); + ctx.state (TAO_CodeGen::TAO_TYPECODE_DEFN); + ctx.sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_ ami_handler_cs::" + "visit_interface - " + "TypeCode definition failed\n" + ), -1); + } + + // @@ Alex: Make sure you have done the following in the other ami + // visitors. (Alex). + delete full_name; + full_name = 0; + + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp new file mode 100644 index 00000000000..899412c61fb --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_ch.cpp @@ -0,0 +1,243 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_servant_ch.cpp +// +// = DESCRIPTION +// Visitor generating AMI Reply Handler code for Interfaces in the +// client header. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface.h" + +ACE_RCSID(be_visitor_interface, ami_handler_servant_ch, "$Id$") + + +// ************************************************************ +// Interface visitor for server header +// ************************************************************ + +be_visitor_interface_ami_handler_servant_ch::be_visitor_interface_ami_handler_servant_ch (be_visitor_context *ctx) + : be_visitor_interface (ctx) +{ +} + +be_visitor_interface_ami_handler_servant_ch::~be_visitor_interface_ami_handler_servant_ch (void) +{ +} + +int +be_visitor_interface_ami_handler_servant_ch::visit_interface (be_interface *node) +{ + // Output stream. + TAO_OutStream *os; + + // Holds the class name. + static char namebuf [NAMEBUFSIZE]; + + // AMI_<Interface_Name>_Handler string. + static char ami_handler [NAMEBUFSIZE]; + + if (node->srv_hdr_gen () || node->imported ()) + return 0; + + ACE_OS::memset (namebuf, '\0', NAMEBUFSIZE); + ACE_OS::memset (ami_handler, '\0', NAMEBUFSIZE); + + os = this->ctx_->stream (); + + // Generate the skeleton class name. + + // Start with whatever indentation level we are at. + os->indent (); + + // We shall have a POA_ prefix only if we are at the topmost level. + if (!node->is_nested ()) + { + // we are outermost + ACE_OS::sprintf (namebuf, + "POA_AMI_%s_Handler", + node->local_name ()->get_string ()); + } + else + { + ACE_OS::sprintf (namebuf, + "AMI_%s_Handler", + node->local_name ()->get_string ()); + } + + // AMI Handler object's name. + ACE_OS::sprintf (ami_handler, + "AMI_%s_Handler", + node->local_name ()->get_string ()); + + *os << "class " << namebuf << ";" << be_nl; + + // generate the _ptr declaration + *os << "typedef " << namebuf << " *" << namebuf + << "_ptr;" << be_nl; + + // Now generate the class definition. + // This class will inherit from the Messaging::ReplyHandler class. + *os << "class " << idl_global->export_macro () + << " " << namebuf + << " : public virtual POA_Messaging::ReplyHandler" + << be_nl; + + // Body of the class definition. + *os << be_nl + << "{" << be_nl; + + // Default constructor. + *os << "protected:" << be_idt_nl + << namebuf << " (void);\n" << be_uidt_nl; + + // Public portion starts. + *os << "public:" << be_idt_nl + + // Copy constructor. + << namebuf << " (const " << namebuf << "& rhs);" << be_nl + + // Destructor. + << "virtual ~" << namebuf << " (void);\n\n" + + << be_nl; + + // Methods. + + // _is_a. + *os << "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl + << "const char* logical_type_id," << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");\n" << be_uidt_nl; + + // _down_cast. + *os << "virtual void* _downcast (" << be_idt << be_idt_nl + << "const char* logical_type_id" << be_uidt_nl + << ");\n" << be_uidt_nl; + + // add a skeleton for our _is_a method + *os << "static void _is_a_skel (" << be_idt << be_idt_nl + << "CORBA::ServerRequest &req," << be_nl + << "void *obj," << be_nl + << "void *context," << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");\n" << be_uidt_nl; + + // add a skeleton for our _non_existent method + *os << "static void _non_existent_skel (" << be_idt << be_idt_nl + << "CORBA::ServerRequest &req," << be_nl + << "void *obj," << be_nl + << "void *context," << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");\n" << be_uidt_nl; + + // add the dispatch method + *os << "virtual void _dispatch (" << be_idt << be_idt_nl + << "CORBA::ServerRequest &_tao_req," << be_nl + << "void *_tao_context," << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");\n" << be_uidt_nl; + + // Print out the _this() method. + *os << ami_handler << " *_this (" << be_idt << be_idt_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");\n" << be_uidt_nl; + + // The _interface_repository_id method. + *os << "virtual const char* _interface_repository_id " + << "(void) const;\n\n"; + + // The _create_collocated_objref method. + *os << "virtual void* _create_collocated_objref" + << "(const char*, CORBA::ULong type, TAO_Stub *sobj);" + << be_nl << be_nl; + + // Generate code for elements in the scope (e.g., operations). + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_ch::" + "visit_interface - " + "codegen for scope failed\n"), + -1); + } + + // Generate skeletons for operations of our base classes. These skeletons + // just cast the pointer to the appropriate type before invoking the call. + if (node->traverse_inheritance_graph (be_interface::gen_skel_helper, os) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_ch::" + "visit_interface - " + "inheritance graph traversal failed\n"), + -1); + } + + *os << be_uidt_nl << "};\n\n"; + + // Generate the collocated class + be_visitor_context ctx (*this->ctx_); + ctx.state (TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_CH); + be_visitor *visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_ch::" + "visit_interface - " + "codegen for collocated class failed\n"), + -1); + } + +#if 0 + // @@ Do this (Alex). + // generate the TIE class. + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_INTERFACE_TIE_SH); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_ch::" + "visit_interface - " + "codegen for TIE class failed\n"), + -1); + } +#endif /* 0 */ + + *os << "\n"; + +#if 0 + ctx.stream (tao_cg->server_template_header ()); +#endif /* 0 */ + + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp new file mode 100644 index 00000000000..6c3be5f1597 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_servant_cs.cpp @@ -0,0 +1,347 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_servant_cs.cpp +// +// = DESCRIPTION +// Visitor generating code for Interfaces in the server skeletons file. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface.h" + +ACE_RCSID(be_visitor_interface, ami_handler_servant_cs, "$Id$") + + +// ************************************************************ +// Interface visitor for server skeletons +// ************************************************************ + +be_visitor_interface_ami_handler_servant_cs::be_visitor_interface_ami_handler_servant_cs (be_visitor_context *ctx) + : be_visitor_interface (ctx) +{ +} + +be_visitor_interface_ami_handler_servant_cs::~be_visitor_interface_ami_handler_servant_cs (void) +{ +} + +int +be_visitor_interface_ami_handler_servant_cs::visit_interface (be_interface *node) +{ + TAO_OutStream *os; // output stream + + if (node->srv_skel_gen () || node->imported ()) + return 0; + + os = this->ctx_->stream (); + + // generate the skeleton class name + + os->indent (); // start with whatever indentation level we are at + + /* @@ Michael + if (node->gen_operation_table () == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::" + "visit_interface - " + "codegen for operation table failed\n"), + -1); + } + + */ + // constructor + *os << "// skeleton constructor" << be_nl; + // find if we are at the top scope or inside some module + if (!node->is_nested ()) + { + // we are outermost. So the POA_ prefix is prepended to our name + *os << node->ami_handler_full_skel_name () << "::POA_" << node->ami_handler_local_name () << + " (void)" << be_nl; + } + else + { + // the POA_ prefix is prepended to our outermost module name + *os << node->ami_handler_full_skel_name () << "::" << node->ami_handler_local_name () << + " (void)" << be_nl; + } + + *os << "{" << be_idt_nl + << "this->optable_ = &tao_" << node->flatname () + << "_optable;" << be_uidt_nl + << "}\n\n"; + + *os << "// copy ctor" << be_nl; + // find if we are at the top scope or inside some module + if (!node->is_nested ()) + { + // we are outermost. So the POA_ prefix is prepended to our name + *os << node->ami_handler_full_skel_name () << "::POA_" + << node->ami_handler_local_name () << " (" + << "const POA_" << node->ami_handler_local_name () << "& rhs)"; + } + else + { + // the POA_ prefix is prepended to our outermost module name + *os << node->ami_handler_full_skel_name () << "::" + << node->ami_handler_local_name () << " (const " + << node->ami_handler_local_name () << "& rhs)"; + } + *os << be_idt_nl + << ": "; + if (node->traverse_inheritance_graph + (be_interface::copy_ctor_helper, os) == -1) + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::visit_interface - " + " copy ctor generation failed\n"), -1); + *os << " TAO_ServantBase (rhs)" << be_uidt_nl + << "{}\n" << be_nl; + + *os << "// skeleton destructor" << be_nl; + + if (!node->is_nested ()) + { + // we are outermost. So the POA_ prefix is prepended to our name + *os << node->ami_handler_full_skel_name () << "::~POA_" << node->ami_handler_local_name () << + " (void)" << be_nl; + } + else + { + // the POA_ prefix is prepended to our outermost module name + *os << node->ami_handler_full_skel_name () << "::~" << node->ami_handler_local_name () << + " (void)" << be_nl; + } + *os << "{\n"; + *os << "}\n\n"; + + + // @@ Michael + /* + // generate code for elements in the scope (e.g., operations) + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::" + "visit_interface - " + "codegen for scope failed\n"), + -1); + } + */ + + // generate code for the _is_a skeleton + os->indent (); + *os << "void " << node->ami_handler_full_skel_name () + << "::_is_a_skel (" << be_idt << be_idt_nl + << "CORBA::ServerRequest &_tao_server_request, " << be_nl + << "void * _tao_object_reference," << be_nl + << "void * /* context */," << be_nl + << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl + << ")" << be_uidt_nl; + *os << "{" << be_idt_nl; + *os << "TAO_InputCDR &_tao_in = _tao_server_request.incoming ();" << be_nl; + *os << node->ami_handler_full_skel_name () << " *_tao_impl = (" + << node->ami_handler_full_skel_name () << " *) _tao_object_reference;" << be_nl; + *os << "CORBA::Boolean _tao_retval = 0;" << be_nl; + *os << "CORBA::String_var value;" << be_nl; + *os << "if (!((_tao_in >> value.out ())))" << be_idt_nl; + *os << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt_nl << be_nl; + *os << "_tao_retval = _tao_impl->_is_a (value.in (), ACE_TRY_ENV);" << be_nl; + *os << "ACE_CHECK;" << be_nl << be_nl; + *os << "_tao_server_request.init_reply (ACE_TRY_ENV);" << be_nl; + *os << "ACE_CHECK;" << be_nl; + *os << "TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();" << be_nl; + *os << "if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval))))" << be_idt_nl; + *os << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt << be_uidt_nl; + *os << "}\n\n"; + + + // generate code for the _non_existent skeleton + os->indent (); + *os << "void " << node->ami_handler_full_skel_name () + << "::_non_existent_skel (" << be_idt << be_idt_nl + << "CORBA::ServerRequest &_tao_server_request, " << be_nl + << "void * _tao_object_reference," << be_nl + << "void * /* context */," << be_nl + << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl + << ")" << be_uidt_nl; + *os << "{" << be_idt_nl; + *os << node->ami_handler_full_skel_name () << " *_tao_impl = (" + << node->ami_handler_full_skel_name () << " *) _tao_object_reference;" << be_nl; + *os << "CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_TRY_ENV);" << be_nl; + *os << "ACE_CHECK;" << be_nl << be_nl; + *os << "_tao_server_request.init_reply (ACE_TRY_ENV);" << be_nl; + *os << "ACE_CHECK;" << be_nl; + *os << "TAO_OutputCDR &_tao_out = _tao_server_request.outgoing ();" << be_nl; + *os << "if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval))))" << be_idt_nl; + *os << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt << be_uidt_nl; + *os << "}\n\n"; + + + os->indent (); + *os << "CORBA::Boolean " << node->ami_handler_full_skel_name () + << "::_is_a (" << be_idt << be_idt_nl + << "const char* value," << be_nl + << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl + << ")" << be_uidt_nl + << "{" << be_idt_nl + << "if (\n" << be_idt; + if (node->traverse_inheritance_graph (be_interface::is_a_helper, os) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::" + "visit_interface - " + "traversal of inhertance graph failed\n"), + -1); + } + + os->indent (); + *os << "(!ACE_OS::strcmp ((char *)value, " + << "CORBA::_tc_Object->id (ACE_TRY_ENV))))" + << be_idt_nl << "return 1;" << be_uidt_nl + << "else" << be_idt_nl + << "return 0;" << be_uidt << be_uidt << be_uidt_nl + << "}\n\n"; + + // the downcast method. + os->indent (); + *os << "void* " << node->ami_handler_full_skel_name () + << "::_downcast (" << be_idt << be_idt_nl + << "const char* logical_type_id" << be_uidt_nl + << ")" << be_uidt_nl + << "{" << be_idt_nl; + + if (node->traverse_inheritance_graph (be_interface::downcast_helper, os) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::" + "visit_interface - " + "traversal of inhertance graph failed\n"), + -1); + } + + *os << "if (ACE_OS::strcmp (logical_type_id, " + << "\"IDL:omg.org/CORBA/Object:1.0\") == 0)" << be_idt_nl + << "return ACE_static_cast(PortableServer::Servant, this);" + << be_uidt_nl; + + *os << "return 0;" << be_uidt_nl + << "}\n\n"; + + + // now the dispatch method + os->indent (); + *os << "void " << node->ami_handler_full_skel_name () << + "::_dispatch (CORBA::ServerRequest &req, " << + "void *context, CORBA::Environment &ACE_TRY_ENV)" << be_nl; + *os << "{\n"; + os->incr_indent (); + *os << "TAO_Skeleton skel; // pointer to skeleton for operation" << be_nl; + *os << "const char *opname = req.operation (); // retrieve operation name" + << be_nl; + *os << "// find the skeleton corresponding to this opname" << be_nl; + *os << "if (this->_find (opname, skel, req.operation_length ()) == -1)" << be_nl; + *os << "{" << be_idt_nl; + *os << "ACE_ERROR ((LM_ERROR, \"Bad operation <%s>\\n\", opname));" << be_nl; + *os << "ACE_THROW (CORBA_BAD_OPERATION ());" + //<< "ACE_TRY_ENV);" << be_uidt_nl; + << be_uidt_nl; + // *os << "env.exception (new CORBA_BAD_OPERATION ());" << be_nl; + *os << "}" << be_nl; + *os << "else" << be_idt_nl; + *os << "skel (req, this, context, ACE_TRY_ENV);" << be_uidt << be_uidt_nl; + *os << "}\n\n"; + + os->indent (); + *os << "const char* " << node->ami_handler_full_skel_name () + << "::_interface_repository_id (void) const" + << be_nl; + *os << "{\n"; + os->incr_indent (); + *os << "return \"" << node->repoID () << "\";\n"; + os->decr_indent (); + *os << "}\n\n"; + + *os << "\n"; + + // the _this () operation + *os << node->name () << "*" << be_nl + << node->ami_handler_full_skel_name () + << "::_this (CORBA_Environment &ACE_TRY_ENV)" << be_nl + << "{" << be_idt_nl + << "TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV);" << be_nl + << "ACE_CHECK_RETURN (0);" << be_nl + // << "if (ACE_TRY_ENV.exception () != 0)" << be_idt_nl + // << "return 0;" << be_uidt_nl + + // @@ Michael: We need to check this value being passed. I am + // passing 1 right now. (Alex). + << "return new " << node->full_coll_name (1) + << " (this, stub);" << be_uidt_nl; + + *os << "}\n\n"; + + // the _create_collocated_objref method + *os << "void*" << be_nl + << node->ami_handler_full_skel_name () + << "::_create_collocated_objref (const char* repository_id, " + << "CORBA::ULong type, TAO_Stub *stub)" << be_nl + << "{" << be_idt_nl + << "if (!ACE_OS::strcmp (\"" << node->repoID () + << "\", repository_id))" << be_idt_nl + << "return ACE_static_cast (" << be_idt << be_idt_nl + << node->name () << "_ptr," << be_nl + + // @@ Michael: We need to check this value being passed. I am + // passing 1 right now. (Alex). + << "new " << node->full_coll_name (1) + << " (this, stub)" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl + << "return 0;" << be_uidt_nl + << "}" << be_nl << be_nl; + + // @@ Michael + /* + // generate the collocated class impl + be_visitor_context ctx (*this->ctx_); + ctx.state (TAO_CodeGen::TAO_INTERFACE_COLLOCATED_SS); + be_visitor *visitor = tao_cg->make_visitor (&ctx); + if (!visitor) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::" + "visit_interface - " + "Bad visitor for collocated class\n"), + -1); + } + + if (node->accept (visitor) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_ami_handler_servant_cs::" + "visit_interface - " + "codegen for collocated class failed\n"), + -1); + } + delete visitor; + + *os << "\n\n"; + + */ + + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp new file mode 100644 index 00000000000..c4ee9d201d3 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_ch.cpp @@ -0,0 +1,198 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_stub_ch.cpp +// +// = DESCRIPTION +// Visitor generating default stub class for the AMI Handler in the +// client header. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface.h" + + +// ****************************************************** +// Interface visitor for client header +// ****************************************************** + +be_visitor_interface_ami_handler_stub_ch::be_visitor_interface_ami_handler_stub_ch (be_visitor_context *ctx) + : be_visitor_interface (ctx) +{ +} + +be_visitor_interface_ami_handler_stub_ch::~be_visitor_interface_ami_handler_stub_ch (void) +{ +} + +int +be_visitor_interface_ami_handler_stub_ch::visit_interface (be_interface *node) +{ + TAO_OutStream *os; // output stream + + // Not already generated and not imported. + if (!node->cli_hdr_gen () && !node->imported ()) + { + // Grab the stream. + os = this->ctx_->stream (); + + // Ifdef guard. + + // Generate AMI_...name..._Handler string. + char *ifdef_string = 0; + ACE_NEW_RETURN (ifdef_string, + char [ACE_OS::strlen ("AMI_") + + ACE_OS::strlen (node->flatname ()) + + ACE_OS::strlen ("_Handler") + + // end of string + 1], + 0); + ACE_OS::sprintf (ifdef_string, + "AMI_%s_Handler", + node->flatname ()); + + os->gen_ifdef_macro (ifdef_string); + + // Prepare the local name for the class. + char *local_name = 0; + ACE_NEW_RETURN (local_name, + char [ACE_OS::strlen ("AMI_") + + ACE_OS::strlen (node->local_name ()->get_string ()) + + ACE_OS::strlen ("_Handler") + + // end of string + 1], + 0); + ACE_OS::sprintf (local_name, + "AMI_%s_Handler", + node->local_name ()->get_string ()); + + // Now generate the class definition. + + os->indent (); + + *os << "class " << idl_global->export_macro () << " " + << local_name; + + // Node interface inherits from the Messaging::ReplyHandler + // interface. + *os << " : public virtual Messaging::ReplyHandler" << be_nl; + + // Generate the body. + + *os << "{" << be_nl + << "public:" << be_nl + + // generate the _ptr_type and _var_type typedefs + // but we must protect against certain versions of g++ + << "#if !defined(__GNUC__) || __GNUC__ > 2 || __GNUC_MINOR__ >= 8" + << be_idt_nl + << "typedef " << local_name << "_ptr _ptr_type;" << be_nl + << "typedef " << local_name << "_var _var_type;" << be_uidt_nl + << "#endif /* __GNUC__ */\n" << be_idt_nl + + // generate the static _duplicate, _narrow, and _nil operations + << "// the static operations" << be_nl + << "static " << local_name << "_ptr " << "_duplicate (" + << local_name << "_ptr obj);" << be_nl + << "static " << local_name << "_ptr " + << "_narrow (" << be_idt << be_idt_nl + << "CORBA::Object_ptr obj," << be_nl + << "CORBA::Environment &env = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt_nl + << "static " << local_name << "_ptr " + << "_unchecked_narrow (" << be_idt << be_idt_nl + << "CORBA::Object_ptr obj," << be_nl + << "CORBA::Environment &env = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt_nl + << "static " << local_name << "_ptr " << "_nil (void);\n\n"; + + // Visit the scope to generate the stubs for the call back + // methods. + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_ami_handler_stub_ch::" + "visit_interface - " + "codegen for scope failed\n"), + -1); + } + + + // the _is_a method + os->indent (); + *os << "virtual CORBA::Boolean _is_a (" << be_idt << be_idt_nl + << "const CORBA::Char *type_id, " << be_nl + << "CORBA::Environment &env = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt_nl + << "virtual const char* " + << "_interface_repository_id (void) const;\n" << be_uidt_nl; + + // generate the "protected" constructor so that users cannot instantiate + // us + *os << "protected:" << be_idt_nl + << local_name << " (void);" << be_nl + << local_name + << " (TAO_Stub *objref, " << be_idt << be_idt_nl + << "TAO_ServantBase *_tao_servant = 0, " << be_nl + << "CORBA::Boolean _tao_collocated = 0" << be_uidt_nl + << ");" << be_uidt_nl + << "virtual ~" << local_name << " (void);" << be_uidt_nl; + + // private copy constructor and assignment operator. These are not + // allowed, hence they are private. + *os << "private:\n"; + os->incr_indent (); + *os << local_name << " (const " << local_name << " &);" + << be_nl + << "void operator= (const " << local_name << " &);\n"; + + os->decr_indent (); + *os << "};\n\n"; + os->gen_endif (); + + // by using a visitor to declare and define the TypeCode, we have the + // added advantage to conditionally not generate any code. This will be + // based on the command line options. This is still TO-DO + be_visitor *visitor; + be_visitor_context ctx (*this->ctx_); + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DECL); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_ami_handler_stub_ch::" + "visit_interface - " + "TypeCode declaration failed\n"), + -1); + } + + + // Delete the heap allocated vars. + delete ifdef_string; + ifdef_string = 0; + delete local_name; + local_name = 0; + } + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp new file mode 100644 index 00000000000..e75034bd185 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami_handler_stub_cs.cpp @@ -0,0 +1,250 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_stub_cs.cpp +// +// = DESCRIPTION +// Visitor generating code for AMI Handler class for an Interface. +// +// = AUTHOR +// Alexander Babu Arulanthu <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface.h" + +ACE_RCSID(be_visitor_interface, ami_handler_stub_cs, "$Id$") + + +// ************************************************************ +// Interface visitor for client stubs +// ************************************************************ + +be_visitor_interface_ami_handler_stub_cs::be_visitor_interface_ami_handler_stub_cs (be_visitor_context *ctx) + : be_visitor_interface (ctx) +{ +} + +be_visitor_interface_ami_handler_stub_cs::~be_visitor_interface_ami_handler_stub_cs (void) +{ +} + +int +be_visitor_interface_ami_handler_stub_cs::visit_interface (be_interface *node) +{ + // output stream. + TAO_OutStream *os; + + if (node->cli_stub_gen () || node->imported ()) + return 0; + + os = this->ctx_->stream (); + + // Start with whatever indentation level we are at. + os->indent (); + + // Create the full name for the AMI_<Interface name>_Handler + // interface. + char *full_name = 0; + + // Full name. + // If there exists a scope name for this, then generate + // "Scope::AMI_<Local Name>_Handler". + + size_t scope_len = 0; + + be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl (); + + if (parent != 0 && + parent->fullname () != 0 && + ACE_OS::strlen (parent->fullname ())) + scope_len = ACE_OS::strlen (parent->fullname ()) + ACE_OS::strlen ("::"); + + ACE_NEW_RETURN (full_name, + char [scope_len + + ACE_OS::strlen ("AMI_") + + ACE_OS::strlen (node->local_name ()->get_string ()) + + ACE_OS::strlen ("_Handler") + + 1], + -1); + + if (parent != 0 && + parent->fullname () != 0 && + ACE_OS::strlen (parent->fullname ())) + ACE_OS::sprintf (full_name, + "%s::AMI_%s_Handler", + parent->fullname (), + node->local_name ()->get_string ()); + else + ACE_OS::sprintf (full_name, + "AMI_%s_Handler", + node->local_name ()->get_string ()); + + // First generate the code for the static methods. + + // The _narrow method + *os << full_name << "_ptr " << full_name + << "::_narrow (" << be_idt << be_idt_nl + << "CORBA::Object_ptr obj," << be_nl + << "CORBA::Environment &env" << be_uidt_nl + << ")" << be_uidt_nl + << "{" << be_idt_nl + << "if (CORBA::is_nil (obj))" << be_idt_nl + << "return " << full_name << "::_nil ();" << be_uidt_nl + << "if (!obj->_is_a (\"" + << node->compute_repoID ("AMI_", "_Handler") << "\", env))" + << be_idt_nl + << "return " << full_name << "::_nil ();" << be_uidt_nl; + + *os << "return " << full_name + << "::_unchecked_narrow (obj, env);" << be_uidt_nl + << "}" << be_nl << be_nl; + + // This may be necessary to work around a GCC compiler bug! + // const char *skel_name = node->full_skel_name (); // unused at this time + + // @@ Michael: We need to check this value being passed. I am + // passing 1 right now. (Alex). + const char *coll_name = node->full_coll_name (1); + assert (coll_name != 0); + + // The _unchecked_narrow method + *os << full_name << "_ptr " << full_name + << "::_unchecked_narrow (" << be_idt << be_idt_nl + << "CORBA::Object_ptr obj," << be_nl + << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl + << ")" << be_uidt_nl + << "{" << be_idt_nl + << "ACE_UNUSED_ARG (ACE_TRY_ENV);" << be_nl + << "if (CORBA::is_nil (obj))" << be_idt_nl + << "return " << full_name << "::_nil ();" << be_uidt_nl; + + *os << "TAO_Stub* stub = obj->_stubobj ();" << be_nl + << "stub->_incr_refcnt ();" << be_nl; + *os << "void* servant = 0;" << be_nl; + *os << "if (obj->_is_collocated () " + << "&& obj->_servant() != 0)" << be_idt_nl + << "servant = obj->_servant()->_downcast (\"" + << "IDL:omg.org/CORBA/Object:1.0\");" << be_uidt_nl; + + *os << "if (servant != 0)" << be_idt_nl << "{" << be_idt_nl + // The collocated object reference factory is not working right (yet) + << full_name << "_ptr retv = ACE_reinterpret_cast (" << be_idt << be_idt_nl + << full_name << "_ptr," << be_nl + << "ACE_reinterpret_cast (" << be_idt << be_idt_nl + << "PortableServer::Servant," << be_nl + << "servant" << be_uidt_nl + << ")" << be_uidt_nl + << "->_create_collocated_objref (" << be_idt << be_idt_nl + << "\"" << node->compute_repoID ("AMI_", "_Handler") << "\"," << be_nl + << "TAO_ORB_Core::ORB_CONTROL," << be_nl + << "stub" << be_uidt_nl + << ")" << be_uidt << be_uidt_nl + << ");" << be_uidt_nl + << "if (retv != 0)" << be_idt_nl + << "return retv;" << be_uidt + // So we are still using the old way to create collocated objref. + << be_uidt_nl + << "}" << be_uidt_nl; + + *os << "return new " << full_name << "(stub);" << be_uidt_nl + << "}" << be_nl << be_nl; + + // The _duplicate method + *os << full_name << "_ptr " << be_nl + << full_name << "::_duplicate (" + << full_name << "_ptr obj)" << be_nl + << "{" << be_idt_nl + << "if (!CORBA::is_nil (obj))" << be_idt_nl + << "obj->_incr_refcnt ();" << be_uidt_nl + << "return obj;" << be_uidt_nl + << "}" << be_nl << be_nl; + + // Generate code for the elements of the interface. + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_ami_handler_stub_cs::" + "visit_interface - " + "codegen for scope failed\n"), -1); + } + + // generate the is_a method + os->indent (); + *os << "CORBA::Boolean " << full_name << "::_is_a (" << + "const CORBA::Char *value, CORBA::Environment &env)" << be_nl; + *os << "{\n"; + os->incr_indent (); + *os << "if (\n"; + os->incr_indent (0); + + // We know what to generate. We dont have to call traverse graph. + + // Current interface. + *os << "(!ACE_OS::strcmp ((char *)value, " + << "\"" + << node->compute_repoID ("AMI_", "_Handler") + << "\"" + << ")) ||" + << be_nl; + + // Reply Handler. + *os << "(!ACE_OS::strcmp ((char *)value, " + << "\"" + << "IDL:omg.org/Messaging/ReplyHandler:1.0" + << "\"" + << ")) ||" + << be_nl; + + os->indent (); + + *os << "(!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env))))\n"; + *os << " return 1; // success using local knowledge\n"; + os->decr_indent (); + *os << "else" << be_nl; + *os << " return this->CORBA_Object::_is_a (value, env);\n"; + os->decr_indent (); + *os << "}\n\n"; + + os->indent (); + + *os << "const char* " << full_name + << "::_interface_repository_id (void) const" + << be_nl + << "{" << be_idt_nl + << "return \"" << node->compute_repoID ("AMI_", "_Handler") << "\";" << be_uidt_nl + << "}\n\n"; + + // By using a visitor to declare and define the TypeCode, we have the + // added advantage to conditionally not generate any code. This will be + // based on the command line options. This is still TO-DO. + be_visitor *visitor; + be_visitor_context ctx (*this->ctx_); + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN); + ctx.sub_state (TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_TYPECODE); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_ami_handler_stub_cs::" + "visit_interface - " + "TypeCode definition failed\n"), + -1); + } + + delete full_name; + full_name = 0; + + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp new file mode 100644 index 00000000000..9f30a1799c1 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_interface/collocated_ami_handler_ch.cpp @@ -0,0 +1,174 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// collocated_ami_handler_ch.cpp +// +// = DESCRIPTION +// Visitor generating code for collocated classes for the Interface node +// inside the server header. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_interface.h" + +ACE_RCSID(be_visitor_interface, collocated_ami_handler_ch, "$Id$") + + +// ************************************************************ +// collocated class in header +// ************************************************************ + +be_visitor_interface_collocated_ami_handler_ch::be_visitor_interface_collocated_ami_handler_ch +(be_visitor_context *ctx) + : be_visitor_interface (ctx) +{ +} + +be_visitor_interface_collocated_ami_handler_ch::~be_visitor_interface_collocated_ami_handler_ch (void) +{ +} + +int +be_visitor_interface_collocated_ami_handler_ch::visit_interface (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + + // Generate AMI_...name..._Handler string. + char *ifdef_string = 0; + ACE_NEW_RETURN (ifdef_string, + char [ACE_OS::strlen ("AMI_") + + ACE_OS::strlen (node->flatname ()) + + ACE_OS::strlen ("_Handler") + + // end of string + 1], + 0); + ACE_OS::sprintf (ifdef_string, + "AMI_%s_Handler", + node->flatname ()); + + os->gen_ifdef_macro (ifdef_string, "_collocated"); + + // Prepare the local name for the class. + char *local_name = 0; + ACE_NEW_RETURN (local_name, + char [ACE_OS::strlen ("AMI_") + + ACE_OS::strlen (node->local_name ()->get_string ()) + + ACE_OS::strlen ("_Handler") + + // end of string + 1], + 0); + ACE_OS::sprintf (local_name, + "AMI_%s_Handler", + node->local_name ()->get_string ()); + + // Get the coll names. + char *coll_local_name, *coll_full_name; + node->compute_coll_names (local_name, coll_local_name, coll_full_name); + + // Output the class defn. + os->indent (); + *os << "class " << idl_global->export_macro () + << " " << coll_local_name; + os->incr_indent (); + *os << " : public virtual " << local_name; + + *os << "\n"; + os->decr_indent (); + *os << "{" << be_nl; + *os << "public:\n"; + os->incr_indent (); + + *os << coll_local_name << " (\n"; + + os->incr_indent (0); + os->incr_indent (); + + // XXXASG - can we make this a method to return the right name ?? + if (!node->is_nested ()) + { + // The skeleton name is the outermost, we need to printout the + // POA_ prefix that goes with it. + *os << "POA_"; + } + + *os << local_name << "_ptr " + << " servant," << be_nl; + + *os << "TAO_Stub *stub\n"; + os->decr_indent (); + *os << ");\n"; + os->decr_indent (0); + + os->indent (); + + // _is_a method. + *os << "virtual CORBA::Boolean _is_a" << be_idt + << "(" << be_idt_nl + << "const CORBA::Char *logical_type_id," << be_nl + << "CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()" << be_uidt_nl + << ");" << be_uidt_nl << be_nl; + + // _get_servant method. + + if (!node->is_nested ()) + { + // The skeleton name is the outermost, we need to printout the + // POA_ prefix that goes with it. + *os << "POA_"; + } + + *os << local_name + << "_ptr _get_servant (void) const;" << be_nl << be_nl; + + // _non_existent method. + *os << "virtual CORBA::Boolean _non_existent" << be_idt + << "(" << be_idt_nl + << "CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()" << be_uidt_nl + << ");" << be_uidt_nl << be_nl; + + // Visit the scope to generate all the AMI call back hood methods. + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_interface_collocated_ami_handler_ch::" + "visit_interface - " + "codegen for scope failed\n"), + -1); + } + + os->decr_indent (); + + *os << be_nl << "private:\n"; + os->incr_indent (); + if (!node->is_nested ()) + { + // The skeleton name is the outermost, we need to printout the + // POA_ prefix that goes with it. + *os << "POA_"; + } + *os << local_name << "_ptr servant_;\n"; + os->decr_indent (); + *os << "};\n\n"; + + os->gen_endif (); + + delete ifdef_string; + delete local_name; + delete coll_local_name; + delete coll_full_name; + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp index 03267df4e6b..b9b7d3ba804 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface.cpp @@ -394,10 +394,6 @@ be_visitor_interface::visit_operation (be_operation *node) switch (this->ctx_->state ()) { - case TAO_CodeGen::TAO_AMI_HANDLER_CH: - ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_CH); - break; - case TAO_CodeGen::TAO_INTERFACE_CH: ctx.state (TAO_CodeGen::TAO_OPERATION_CH); break; @@ -434,6 +430,23 @@ be_visitor_interface::visit_operation (be_operation *node) case TAO_CodeGen::TAO_INTERFACE_DIRECT_COLLOCATED_SS: ctx.state (TAO_CodeGen::TAO_OPERATION_DIRECT_COLLOCATED_SS); break; + + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH); + break; + + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CH: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH); + break; + + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_CS: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CS); + break; + + case TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_CH: + ctx.state (TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH); + break; + case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CH: case TAO_CodeGen::TAO_INTERFACE_ANY_OP_CS: case TAO_CodeGen::TAO_INTERFACE_CDR_OP_CH: @@ -447,8 +460,8 @@ be_visitor_interface::visit_operation (be_operation *node) ACE_ERROR_RETURN ((LM_ERROR, "(%N:%l) be_visitor_interface::" "visit_operation - " - "Bad context state\n" - ), -1); + "Bad context state\n"), + -1); } } @@ -483,9 +496,9 @@ be_visitor_interface::visit_operation (be_operation *node) { return 0; } - - // Generate AMI stub for this operation, if you are doing client - // side header. + + // Generate AMI <sendc_> method, for this operation, if you are + // doing client header. switch (this->ctx_->state ()) { diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp index 6abb41bd851..8ed7aedc508 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp @@ -18,9 +18,9 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" #include "be_visitor_interface.h" @@ -138,7 +138,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node) // now generate the class definition os->indent (); *os << "class " << idl_global->export_macro () - << " " << node->local_name (); + << " " << node->local_name (); if (node->n_inherits () > 0) // node interface inherits from other // interfaces @@ -193,19 +193,19 @@ be_visitor_interface_ch::visit_interface (be_interface *node) << "static " << node->local_name () << "_ptr " << "_duplicate (" << node->local_name () << "_ptr obj);" << be_nl << "static " << node->local_name () << "_ptr " - << "_narrow (" << be_idt << be_idt_nl + << "_narrow (" << be_idt << be_idt_nl << "CORBA::Object_ptr obj," << be_nl - << "CORBA::Environment &env = " << be_idt_nl - << "TAO_default_environment ()" - << be_uidt << be_uidt_nl - << ");" << be_uidt_nl + << "CORBA::Environment &env = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt_nl << "static " << node->local_name () << "_ptr " - << "_unchecked_narrow (" << be_idt << be_idt_nl + << "_unchecked_narrow (" << be_idt << be_idt_nl << "CORBA::Object_ptr obj," << be_nl - << "CORBA::Environment &env = " << be_idt_nl - << "TAO_default_environment ()" - << be_uidt << be_uidt_nl - << ");" << be_uidt_nl; + << "CORBA::Environment &env = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt_nl; // This method is defined in the header file to workaround old // g++ problems *os << "static " << node->local_name () << "_ptr _nil (void)" @@ -240,10 +240,10 @@ be_visitor_interface_ch::visit_interface (be_interface *node) *os << "protected:" << be_idt_nl << node->local_name () << " (void);" << be_nl << node->local_name () - << " (TAO_Stub *objref, " << be_idt << be_idt_nl + << " (TAO_Stub *objref, " << be_idt << be_idt_nl << "TAO_ServantBase *_tao_servant = 0, " << be_nl << "CORBA::Boolean _tao_collocated = 0" << be_uidt_nl - << ");" << be_uidt_nl + << ");" << be_uidt_nl << "virtual ~" << node->local_name () << " (void);" << be_uidt_nl; // private copy constructor and assignment operator. These are not @@ -273,15 +273,20 @@ be_visitor_interface_ch::visit_interface (be_interface *node) "TypeCode declaration failed\n" ), -1); } + + // AMI + + // Generate code for the AMI Reply Handler. - // Generate the Skeleton code for the AMI Reply Handler. if (idl_global->ami_call_back () == I_TRUE) { + // = Generate the default stub code for Handler. + // Set the context. be_visitor_context ctx (*this->ctx_); // Set the state. - ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_CH); + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_CH); // Create the visitor. be_visitor *visitor = tao_cg->make_visitor (&ctx); @@ -293,7 +298,38 @@ be_visitor_interface_ch::visit_interface (be_interface *node) "Bad visitor\n"), -1); } + + // Call the visitor on this interface. + if (node->accept (visitor) == -1) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_ch::" + "visit_interface - " + "code gen for ami handler default stub failed\n"), + -1); + } + delete visitor; + + // = Generate the Servant Skeleton code. + // Set the context. + ctx = *this->ctx_; + + // Set the state. + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH); + + // Create the visitor. + visitor = tao_cg->make_visitor (&ctx); + if (!visitor) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_ch::" + "visit_interface - " + "Bad visitor\n"), + -1); + } + // call the visitor on this interface. if (node->accept (visitor) == -1) { diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp index cebf4c53513..7c472e441d8 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp @@ -18,9 +18,9 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" #include "be_visitor_interface.h" @@ -184,10 +184,76 @@ be_visitor_interface_cs::visit_interface (be_interface *node) ACE_ERROR_RETURN ((LM_ERROR, "(%N:%l) be_visitor_interface_cs::" "visit_interface - " - "TypeCode definition failed\n" - ), -1); + "TypeCode definition failed\n"), + -1); } + // AMI + + // Generate code for the AMI Reply Handler. + if (idl_global->ami_call_back () == I_TRUE) + { + // = Generate the default stub code for Handler. + + // Set the context. + be_visitor_context ctx (*this->ctx_); + + // Set the state. + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_STUB_CS); + + // Create the visitor. + be_visitor *visitor = tao_cg->make_visitor (&ctx); + if (!visitor) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_cs::" + "visit_interface - " + "Bad visitor\n"), + -1); + } + + // Call the visitor on this interface. + if (node->accept (visitor) == -1) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_cs::" + "visit_interface - " + "code gen for ami handler default stub failed\n"), + -1); + } + delete visitor; + + // = Generate the Servant Skeleton code. + // Set the context. + ctx = *this->ctx_; + + // Set the state. + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CS); + + // Create the visitor. + visitor = tao_cg->make_visitor (&ctx); + if (!visitor) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_cs::" + "visit_interface - " + "Bad visitor\n"), + -1); + } + + // Call the visitor on this interface. + if (node->accept (visitor) == -1) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_cs::" + "visit_interface - " + "code gen for ami handler failed\n"), + -1); + } + delete visitor; + } return 0; } diff --git a/TAO/TAO_IDL/be/be_visitor_operation.cpp b/TAO/TAO_IDL/be/be_visitor_operation.cpp index e29c228642c..3b4c8db91ac 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation.cpp @@ -18,9 +18,9 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" #include "be_visitor_operation.h" @@ -61,5 +61,8 @@ #include "be_visitor_operation/ami_arglist.cpp" #include "be_visitor_operation/ami_handler_operation_ch.cpp" #include "be_visitor_operation/ami_handler_arglist.cpp" +#include "be_visitor_operation/ami_handler_operation_cs.cpp" +#include "be_visitor_operation/ami_handler_skeleton_cs.cpp" +#include "be_visitor_operation/ami_handler_argument_marshal.cpp" ACE_RCSID(be, be_visitor_operation, "$Id$") diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp index bda8132715e..17283768469 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_arglist.cpp @@ -18,9 +18,9 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" #include "be_visitor_operation.h" @@ -64,8 +64,8 @@ be_visitor_operation_ami_arglist::visit_operation (be_operation *node) // AMI Handler argument. *os << "AMI_" << interface->fullname () - << "_ptr " - << "ami_handler" + << "_Handler_ptr " + << "_tao_ami_handler" << ",\n"; // #endif /* TAO_IDL_HAS_AMI */ @@ -79,20 +79,27 @@ be_visitor_operation_ami_arglist::visit_operation (be_operation *node) -1); } - - // @@ When some out arguments are skipped, the indentation seems to - // get messed up. Fix that. (Alex). - // Last argument - is always CORBA::Environment. + os->indent (); + *os << "CORBA::Environment &ACE_TRY_ENV"; - *os << " = " << be_idt_nl - << "TAO_default_environment ()" - << be_uidt; + + if (this->ctx_->state () == TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH) + { + *os << " = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt; + } // Done with the argument list. - *os << be_uidt_nl << ")" << be_uidt << "\n"; + *os << be_uidt_nl << ")" << be_uidt; + + if (this->ctx_->state () == TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH) + *os << ";"; + *os << "\n"; + return 0; } @@ -137,9 +144,14 @@ be_visitor_operation_ami_arglist::visit_argument (be_argument *node) switch (this->ctx_->state ()) { - case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST: - ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST); + case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH: + ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CH); break; + + case TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS: + ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_ARGLIST_CS); + break; + default: { ACE_ERROR_RETURN ((LM_ERROR, diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp index a7d21e61502..dc8aa70a9af 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_ch.cpp @@ -44,7 +44,12 @@ be_visitor_operation_ami_ch::~be_visitor_operation_ami_ch (void) int be_visitor_operation_ami_ch::visit_operation (be_operation *node) { - TAO_OutStream *os; // output stream + // No sendc method for oneway operations. + if (node->flags () == AST_Operation::OP_oneway) + return 0; + + // Output stream. + TAO_OutStream *os ; os = this->ctx_->stream (); this->ctx_->node (node); // save the node @@ -67,7 +72,7 @@ be_visitor_operation_ami_ch::visit_operation (be_operation *node) // mapping. For these we grab a visitor that generates the // parameter listing. be_visitor_context ctx (*this->ctx_); - ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST); + ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CH); be_visitor *visitor = tao_cg->make_visitor (&ctx); if (!visitor) { diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp index 2abc4ef0f98..3f87f4430db 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp @@ -56,6 +56,10 @@ be_visitor_operation_ami_cs::post_process (be_decl *bd) int be_visitor_operation_ami_cs::visit_operation (be_operation *node) { + // No sendc method for oneway operations. + if (node->flags () == AST_Operation::OP_oneway) + return 0; + TAO_OutStream *os; // output stream be_visitor_context ctx; // visitor context be_visitor *visitor; // visitor @@ -89,7 +93,7 @@ be_visitor_operation_ami_cs::visit_operation (be_operation *node) // Generate the argument list with the appropriate mapping (same as // in the header file) ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST); + ctx.state (TAO_CodeGen::TAO_OPERATION_AMI_ARGLIST_CS); visitor = tao_cg->make_visitor (&ctx); if ((!visitor) || (node->accept (visitor) == -1)) { @@ -185,9 +189,11 @@ be_visitor_operation_ami_cs::visit_operation (be_operation *node) -1); } - // do any pre marshal and invoke stuff with arguments +#if 0 + // @@ I am not sure whether we need this. + // Do any pre marshal and invoke stuff with arguments ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS); + ctx.state (TAO_CodeGen::TAO_AMI_OPERATION_ARG_PRE_INVOKE_CS); visitor = tao_cg->make_visitor (&ctx); if (!visitor || (node->accept (visitor) == -1)) { @@ -198,9 +204,10 @@ be_visitor_operation_ami_cs::visit_operation (be_operation *node) "codegen for argument pre invoke failed\n"), -1); } +#endif /* 0 */ - // generate the code for marshaling in the parameters and transmitting - // them + // Generate the code for marshaling in the parameters and transmitting + // them. if (this->gen_marshal_and_invoke (node, bt) == -1) { ACE_ERROR_RETURN ((LM_ERROR, @@ -628,9 +635,8 @@ be_compiled_visitor_operation_ami_cs::gen_pre_stub_info (be_operation *node, } int -be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation - *node, - be_type *bt) +be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation *node, + be_type *bt) { TAO_OutStream *os = this->ctx_->stream (); be_visitor *visitor; @@ -638,14 +644,15 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation os->indent (); - // create the GIOP_Invocation and grab the outgoing CDR stream + // Create the GIOP_Invocation and grab the outgoing CDR stream. switch (node->flags ()) { case AST_Operation::OP_oneway: - *os << "TAO_GIOP_Oneway_Invocation _tao_call "; + // If it is a oneway, we wouldnt have come here to generate AMI + // sendc method. break; default: - *os << "TAO_GIOP_Twoway_Invocation _tao_call "; + *os << "TAO_GIOP_Twoway_Asynch_Invocation _tao_call "; } *os << "(" << be_idt << be_idt_nl << "istub," << be_nl; @@ -660,28 +667,32 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation } *os << "\"" << node->local_name () << "\"," << be_nl - << "istub->orb_core ()" << be_uidt_nl + << "istub->orb_core ()," << be_nl; + + // Next argument is the reply handler skeleton for this method. + + // Get the interface. + be_decl *interface = be_interface::narrow_from_scope (node->defined_in ())->decl (); + + *os << "&AMI_" << interface->fullname () << "_Handler" << "::" + << node->local_name () << "_skel," << be_nl; + + // Next argument is the ami handler passed in for this method. + *os << "_tao_ami_handler" << be_uidt_nl + << ");" << be_uidt_nl; *os << "\n" << be_nl << "for (;;)" << be_nl << "{" << be_idt_nl; - // *os << "ACE_TRY_ENV.clear ();" << be_nl *os << "_tao_call.start (ACE_TRY_ENV);" << be_nl; - // check if there is an exception - if (this->gen_check_exception (bt) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_operation_ami_cs::" - "gen_marshal_and_invoke - " - "codegen for checking exception failed\n"), - -1); - - } - - // now make sure that we have some in and inout parameters. Otherwise, there - // is nothing to be marshaled in + // Check if there is an exception. + // Return type is void, so we know what to generate here. + *os << "ACE_CHECK;"; + + // Now make sure that we have some in and inout + // parameters. Otherwise, there is nothing to be marshaled in. if (this->has_param_type (node, AST_Argument::dir_IN) || this->has_param_type (node, AST_Argument::dir_INOUT)) { @@ -690,9 +701,9 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation << be_nl << "if (!(\n" << be_idt << be_idt << be_idt; - // marshal each in and inout argument + // Marshal each in and inout argument. ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS); + ctx.state (TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS); ctx.sub_state (TAO_CodeGen::TAO_CDR_OUTPUT); visitor = tao_cg->make_visitor (&ctx); if (!visitor || (node->accept (visitor) == -1)) @@ -707,7 +718,7 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation *os << be_uidt << be_uidt_nl << "))" << be_nl; - // if marshaling fails, raise exception + // If marshaling fails, raise exception. if (this->gen_raise_exception (bt, "CORBA::MARSHAL", "") == -1) { @@ -722,28 +733,21 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation *os << be_nl << "int _invoke_status =" << be_idt_nl; - if (node->flags () == AST_Operation::OP_oneway) + if (node->exceptions ()) { - // oneway operation - *os << "_tao_call.invoke (ACE_TRY_ENV);"; + *os << "_tao_call.invoke (_tao_" << node->flatname () + << "_exceptiondata, " + << node->exceptions ()->length () + << ", ACE_TRY_ENV);"; } else { - if (node->exceptions ()) - { - *os << "_tao_call.invoke (_tao_" << node->flatname () - << "_exceptiondata, " - << node->exceptions ()->length () - << ", ACE_TRY_ENV);"; - } - else - { - *os << "_tao_call.invoke (0, 0, ACE_TRY_ENV);"; - } + *os << "_tao_call.invoke (0, 0, ACE_TRY_ENV);"; } - + *os << be_uidt_nl; - // check if there is an exception + + // Check if there is an exception. if (this->gen_check_exception (bt) == -1) { ACE_ERROR_RETURN ((LM_ERROR, @@ -777,125 +781,7 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation << "break;" << be_nl << be_uidt_nl << "}" << be_nl; - // the code below this is for 2way operations only - - if (this->void_return_type (bt) && - !this->has_param_type (node, AST_Argument::dir_INOUT) && - !this->has_param_type (node, AST_Argument::dir_OUT)) - { - return 0; - } - - // Do any post_invoke stuff that might be necessary. - ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS); - ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT); - visitor = tao_cg->make_visitor (&ctx); - if (!visitor || (node->accept (visitor) == -1)) - { - delete visitor; - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_compiled_visitor_operation_ami_cs::" - "gen_marshal_and_invoke - " - "codegen for args in post do_static_call\n"), - -1); - } - - - // Generate any temporary variables to demarshal the arguments - ctx = *this->ctx_; - be_visitor_compiled_args_decl vis1 (new be_visitor_context (ctx)); - if (node->accept (&vis1) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_compiled_visitor_operation_ami_cs::" - "gen_pre_stub_info - " - "codegen for pre args failed\n"), - -1); - } - - if (!this->void_return_type (bt)) - { - // Generate any temporary variables to demarshal the return value - ctx = *this->ctx_; - be_visitor_context *new_ctx = - new be_visitor_context (ctx); - be_visitor_operation_compiled_rettype_post_docall vis2 (new_ctx); - if (bt->accept (&vis2) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_compiled_visitor_operation_ami_cs::" - "gen_pre_stub_info - " - "codegen rettype [post docall] failed\n"), - -1); - } - } - - // check if there was a user exception, else demarshal the - // return val (if any) and parameters (if any) that came with - // the response message - *os << "TAO_InputCDR &_tao_in = _tao_call.inp_stream ();" << be_nl - << "if (!(\n" << be_idt << be_idt << be_idt; - - if (!this->void_return_type (bt)) - { - // demarshal the return val - ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS); - ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT); - visitor = tao_cg->make_visitor (&ctx); - if (!visitor || (node->accept (visitor) == -1)) - { - delete visitor; - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_compiled_visitor_operation_ami_cs::" - "gen_marshal_and_invoke - " - "codegen for return var failed\n"), - -1); - } - } - - if (this->has_param_type (node, AST_Argument::dir_INOUT) || - this->has_param_type (node, AST_Argument::dir_OUT)) - { - if (!this->void_return_type (bt)) - *os << " &&\n"; - - // demarshal each out and inout argument - ctx = *this->ctx_; - ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS); - ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT); - visitor = tao_cg->make_visitor (&ctx); - if (!visitor || (node->accept (visitor) == -1)) - { - delete visitor; - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_compiled_visitor_operation_ami_cs::" - "gen_marshal_and_invoke - " - "codegen for return var failed\n"), - -1); - } - } - - if (!this->void_return_type (bt) || - this->has_param_type (node, AST_Argument::dir_INOUT) || - this->has_param_type (node, AST_Argument::dir_OUT)) - { - - *os << be_uidt << be_uidt << be_nl - << "))" << be_nl; - // if marshaling fails, raise exception - if (this->gen_raise_exception (bt, "CORBA::MARSHAL", - "TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES") == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_compiled_visitor_operation_ami_cs::" - "gen_marshal_and invoke - " - "codegen for return var failed\n"), - -1); - } - *os << be_uidt; - } - + // Return type is void and we are going to worry about OUT or INOUT + // parameters. Return from here. return 0; } diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp index 66d6b5763bb..4670062f2df 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_arglist.cpp @@ -16,13 +16,13 @@ // // = AUTHOR // Aniruddha Gokhale and Alexander Babu Arulanthu -// <alex@cs.wustl.edu> +// <alex@cs.wustl.edu> // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" +#include "idl.h" +#include "idl_extern.h" +#include "be.h" #include "be_visitor_operation.h" @@ -40,6 +40,82 @@ be_visitor_operation_ami_handler_arglist::be_visitor_operation_ami_handler_argli { } +// Visit the scope and its elements. +// This implementation is the same as +// <be_visitor_scope::visit_scope>. The variation is that it calls the +// <post_process> only if the return value of the <accept> is 1. We +// need to do this since we have to differentiate between an argument +// that was printed and an argument that was skipped in the signature. + +int +be_visitor_operation_ami_handler_arglist::visit_scope (be_scope *node) +{ + // Proceed if the number of members in our scope is greater than 0. + if (node->nmembers () > 0) + { + // initialize an iterator to iterate thru our scope + UTL_ScopeActiveIterator *si; + ACE_NEW_RETURN (si, + UTL_ScopeActiveIterator (node, + UTL_Scope::IK_decls), + -1); + this->elem_number_ = 0; + // continue until each element is visited + while (!si->is_done ()) + { + AST_Decl *d = si->item (); + if (!d) + { + delete si; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_scope::visit_scope - " + "bad node in this scope\n"), -1); + + } + be_decl *bd = be_decl::narrow_from_decl (d); + // set the scope node as "node" in which the code is being + // generated so that elements in the node's scope can use it + // for code generation + + this->ctx_->scope (node->decl ()); + + // set the node to be visited + this->ctx_->node (bd); + this->elem_number_++; + + // Do any pre processing using the next item info. + if (this->pre_process (bd) == -1) + { + delete si; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_scope::visit_scope - " + "pre processing failed\n"), -1); + } + + // Send the visitor. + int visitor_result = 0; + if (bd == 0 || (visitor_result = bd->accept (this)) == -1) + { + delete si; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_scope::visit_scope - " + "codegen for scope failed\n"), -1); + + } + + // Do any post processing using this item info. + if (visitor_result == 1) + this->post_process (bd); + + // Next argument. + si->next (); + } // end of while loop + delete si; + } // end of if + + return 0; +} + be_visitor_operation_ami_handler_arglist::~be_visitor_operation_ami_handler_arglist (void) { } @@ -48,11 +124,54 @@ int be_visitor_operation_ami_handler_arglist::visit_operation (be_operation *node) { TAO_OutStream *os = this->ctx_->stream (); - - *os << " (" << be_idt << be_idt << "\n"; - // All we do is hand over code generation to our scope. - if (this->visit_scope (node) == -1) + *os << " (" << be_idt << be_idt << be_nl; + + // First argument is a the return value of the operation. + + // Indent. + os->indent (); + + // Get the return type. + be_type *bt = be_type::narrow_from_decl (node->return_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_arglist::" + "visit_operation - " + "Bad return type\n"), + -1); + } + + // Grab the visitor. + + be_visitor_context ctx = *this->ctx_; + + // Set the state. + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RESULT_ARG); + be_visitor *visitor = tao_cg->make_visitor (&ctx); + + // Pass the visitor. + int result_printed = bt->accept (visitor); + if (result_printed == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_arglist::" + "visit_operation - " + "Bad return type\n"), + -1); + } + delete visitor; + visitor = 0; + + if (result_printed) + *os << ", " << be_nl; + + // Rest of the arguments. + + // All we do is hand over code generation to our scope. + int args_printed = this->visit_scope (node); + if (args_printed == -1) { ACE_ERROR_RETURN ((LM_ERROR, "(%N:%l) be_visitor_operation_ami_handler_arglist::" @@ -61,29 +180,47 @@ be_visitor_operation_ami_handler_arglist::visit_operation (be_operation *node) -1); } - // No argument for exception. What will you do if you get the - // exception from the call back method? + // Generate the CORBA::Environment parameter for the alternative + // mapping. + if (!idl_global->exception_support ()) + { + // If the operation node has parameters, then we need to insert + // a comma. + // @@ Fix this. + // if (result_printed || args_printed) + // *os << "," << be_nl; - // Arglist is over. + os->indent (); + + switch (this->ctx_->state ()) + { + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH: + // Last argument - is always CORBA::Environment + *os << "CORBA::Environment &ACE_TRY_ENV"; + *os << " = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt; + break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS: + // Last argument - is always CORBA::Environment. + *os << "CORBA::Environment &ACE_TRY_ENV"; + break; + } + } *os << be_uidt_nl << ")" << be_uidt; - // @@ No THROW SPECs. You can do anything if the call back guy - // throws an exception. But I am not too sure about - // this. (Alex). + // Now generate the throw specs. + *os << be_idt_nl << "ACE_THROW_SPEC ((CORBA::SystemException))" + << be_uidt_nl; + switch (this->ctx_->state ()) { - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST: - // Each method is pure virtual in the header. - *os << " = 0;\n\n"; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH: + *os << ";" << be_nl << be_nl; break; default: - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_ami_handler_arglist::" - "visit_operation - " - "Bad operation\n"), - -1); + *os << be_nl; } - return 0; } @@ -128,8 +265,11 @@ be_visitor_operation_ami_handler_arglist::visit_argument (be_argument *node) switch (this->ctx_->state ()) { - case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST: - ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST); + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH: + ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH); + break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS: + ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS); break; default: { @@ -151,7 +291,11 @@ be_visitor_operation_ami_handler_arglist::visit_argument (be_argument *node) "Bad visitor\n"), -1); } - if (node->accept (visitor) == -1) + + // Pass the visitor. + + int result = node->accept (visitor); + if (result == -1) { delete visitor; ACE_ERROR_RETURN ((LM_ERROR, @@ -161,7 +305,7 @@ be_visitor_operation_ami_handler_arglist::visit_argument (be_argument *node) -1); } delete visitor; - return 0; + return result; } int diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp new file mode 100644 index 00000000000..0707400379e --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_argument_marshal.cpp @@ -0,0 +1,172 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_argument_marshal.cpp +// +// = DESCRIPTION +// Visitor to pass arguments to the CDR operators. This one helps in +// generating the && and the , at the right place. This one is for the +// skeleton side. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_operation.h" + +ACE_RCSID(be_visitor_operation, ami_handler_argument_marshal, "$Id$") + + +// ************************************************************ +// operation visitor to handle the passing of arguments to the CDR operators +// ************************************************************ + +be_compiled_visitor_operation_ami_handler_argument_marshal:: +be_compiled_visitor_operation_ami_handler_argument_marshal (be_visitor_context + *ctx) + : be_visitor_operation_argument (ctx), + last_arg_printed_ (be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE) +{ +} + +be_compiled_visitor_operation_ami_handler_argument_marshal:: +~be_compiled_visitor_operation_ami_handler_argument_marshal (void) +{ +} + +int +be_compiled_visitor_operation_ami_handler_argument_marshal::pre_process (be_decl *bd) +{ + TAO_OutStream *os = this->ctx_->stream (); + + be_argument *arg = be_argument::narrow_from_decl (bd); + + if (!arg) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) " + "be_compiled_visitor_operation_ami_handler_argument_marshal" + "::post_process - " + "Bad argument node\n"), + -1); + } + switch (arg->direction ()) + { + case AST_Argument::dir_IN: + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + // nothing + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + // nothing + } + break; + case AST_Argument::dir_INOUT: + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + if (this->last_arg_printed_ != + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE) + *os << " &&\n"; + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + if (this->last_arg_printed_ != + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE) + *os << " &&\n"; + } + break; + case AST_Argument::dir_OUT: + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) + { + if (this->last_arg_printed_ != + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE) + *os << " &&\n"; + } + else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) + { + if (this->last_arg_printed_ != + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_NONE) + *os << " &&\n"; + } + break; + } + + return 0; +} + +int +be_compiled_visitor_operation_ami_handler_argument_marshal::post_process (be_decl *bd) +{ + be_argument *arg = be_argument::narrow_from_decl (bd); + + if (!arg) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) " + "be_compiled_visitor_operation_ami_handler_argument_marshal" + "::post_process - " + "Bad argument node\n"), + -1); + } + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_CDR_INPUT: + switch (arg->direction ()) + { + case AST_Argument::dir_IN: + // these arguments don't get printed for the << operator on the stub + break; + case AST_Argument::dir_INOUT: + // only these arguments get printed + this->last_arg_printed_ = + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_INOUT; + break; + case AST_Argument::dir_OUT: + // only these arguments get printed + this->last_arg_printed_ = + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_OUT; + break; + } + break; + case TAO_CodeGen::TAO_CDR_OUTPUT: + switch (arg->direction ()) + { + case AST_Argument::dir_IN: + // these arguments don't get printed for the >> on the stub + break; + case AST_Argument::dir_INOUT: + // only these arguments get printed + this->last_arg_printed_ = + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_INOUT; + break; + case AST_Argument::dir_OUT: + // only these arguments get printed + this->last_arg_printed_ = + be_compiled_visitor_operation_ami_handler_argument_marshal::TAO_ARG_OUT; + break; + } + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) " + "be_compiled_visitor_operation_ami_handler_argument_marshal" + "::post_process - " + "Bad sub state\n"), + -1); + } + return 0; +} + diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp new file mode 100644 index 00000000000..30f38acf344 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation.cpp @@ -0,0 +1,154 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_operation_ch.cpp +// +// = DESCRIPTION +// Visitor generating code for AMI Handler call back operation in +// the client header. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_operation.h" + +ACE_RCSID(be_visitor_operation, ami_handler_operation_ch, "$Id$") + + +// ************************************************************ +// Operation visitor for server header +// ************************************************************ + +be_visitor_operation_ami_handler_operation_ch::be_visitor_operation_ami_handler_operation_ch (be_visitor_context *ctx) + : be_visitor_operation (ctx) +{ +} + +be_visitor_operation_ami_handler_operation_ch::~be_visitor_operation_ami_handler_operation_ch (void) +{ +} + +int +be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *node) +{ + TAO_OutStream *os; // output stream + + os = this->ctx_->stream (); + this->ctx_->node (node); // save the node + + os->indent (); // start with the current indentation level + + // every operation is declared virtual in the client code + *os << "virtual "; + + // STEP I: generate the return type. Return type is simpy void. + *os << "void "; + + // STEP 2: generate the operation name. + *os << " " << node->local_name (); + + // STEP 3: generate the argument list with the appropriate + // mapping. For these we grab a visitor that generates the + // parameter listing. + be_visitor_context ctx (*this->ctx_); + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH); + be_visitor *visitor = tao_cg->make_visitor (&ctx); + if (!visitor) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_operation_ami_handler_operation_ch::" + "visit_operation - " + "Bad visitor to return type\n"), + -1); + } + + if (node->accept (visitor) == -1) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_ch::" + "visit_operation - " + "codegen for argument list failed\n"), + -1); + } + delete visitor; + + // Generating the skeleton method. + + // Skeleton not necessary for collocated class. + if (this->ctx_->state () == TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH) + { + return 0; + /* NOT REACHED */ + } + + // Generate the corresponding static skeleton method for this + // operation only if there was no "native" type. + if (!node->has_native ()) + { + // Next line. + *os << be_nl; + + // Indent. + os->indent (); + + *os << "static void "; + // Check if we are an attribute node in disguise + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "_set_"; + else + *os << "_get_"; + } + *os << node->local_name () << + "_skel (" << be_idt << be_idt_nl; + + // Different skeletons for the AMI Handler class and the servant + // class. + switch (this->ctx_->state ()) + { + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH: + *os << "CORBA::ServerRequest &_tao_req, " << be_nl + << "void *_tao_obj, " << be_nl + << "void *_tao_context, " << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt << "\n\n"; + break; + + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH: + *os << "TAO_InputCDR &_tao_reply_cdr, " << be_nl + << "Messaging::ReplyHandler_ptr _tao_reply_handler, " << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt << "\n\n"; + break; + + default: + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_ch::" + "visit_operation - " + "Unknown state\n"), + -1); + } + } + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp index bc54b1b3710..30f38acf344 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_ch.cpp @@ -65,7 +65,7 @@ be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *no // mapping. For these we grab a visitor that generates the // parameter listing. be_visitor_context ctx (*this->ctx_); - ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST); + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CH); be_visitor *visitor = tao_cg->make_visitor (&ctx); if (!visitor) { @@ -87,11 +87,25 @@ be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *no } delete visitor; + // Generating the skeleton method. + + // Skeleton not necessary for collocated class. + if (this->ctx_->state () == TAO_CodeGen::TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH) + { + return 0; + /* NOT REACHED */ + } + // Generate the corresponding static skeleton method for this // operation only if there was no "native" type. if (!node->has_native ()) { + // Next line. + *os << be_nl; + + // Indent. os->indent (); + *os << "static void "; // Check if we are an attribute node in disguise if (this->ctx_->attribute ()) @@ -103,15 +117,38 @@ be_visitor_operation_ami_handler_operation_ch::visit_operation (be_operation *no *os << "_get_"; } *os << node->local_name () << - "_skel (" << be_idt << be_idt_nl - << "CORBA::ServerRequest &_tao_req, " << be_nl - << "void *_tao_obj, " << be_nl - << "void *_tao_context, " << be_nl - << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl - << "TAO_default_environment ()" - << be_uidt << be_uidt_nl - << ");" << be_uidt << "\n\n"; + "_skel (" << be_idt << be_idt_nl; + + // Different skeletons for the AMI Handler class and the servant + // class. + switch (this->ctx_->state ()) + { + case TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_OPERATION_CH: + *os << "CORBA::ServerRequest &_tao_req, " << be_nl + << "void *_tao_obj, " << be_nl + << "void *_tao_context, " << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt << "\n\n"; + break; + + case TAO_CodeGen::TAO_AMI_HANDLER_STUB_OPERATION_CH: + *os << "TAO_InputCDR &_tao_reply_cdr, " << be_nl + << "Messaging::ReplyHandler_ptr _tao_reply_handler, " << be_nl + << "CORBA::Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt << "\n\n"; + break; + + default: + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_ch::" + "visit_operation - " + "Unknown state\n"), + -1); + } } - return 0; } diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp new file mode 100644 index 00000000000..89d14a4d74e --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp @@ -0,0 +1,810 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_operation_cs.cpp +// +// = DESCRIPTION +// Visitor generating code for Operation in the stubs file. +// +// = AUTHOR +// Alexander Babu Arulanthu <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_operation.h" + +ACE_RCSID(be_visitor_operation, ami_handler_operation_cs, "$Id$") + + +// ************************************************************ +// Operation visitor for client stubs +// ************************************************************ + +be_visitor_operation_ami_handler_operation_cs::be_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx) + : be_visitor_operation (ctx) +{ +} + +be_visitor_operation_ami_handler_operation_cs::~be_visitor_operation_ami_handler_operation_cs (void) +{ +} + +// processing to be done after every element in the scope is processed +int +be_visitor_operation_ami_handler_operation_cs::post_process (be_decl *bd) +{ + // all we do here is to insert a comma and a newline + TAO_OutStream *os = this->ctx_->stream (); + if (!this->last_node (bd)) + *os << ",\n"; + return 0; +} + +int +be_visitor_operation_ami_handler_operation_cs::visit_operation (be_operation *node) +{ + TAO_OutStream *os; // output stream + be_type *bt; // type node + be_visitor_context ctx; // visitor context + be_visitor *visitor; // visitor + + os = this->ctx_->stream (); + this->ctx_->node (node); // save the node for future use + + // Start with the current indentation level. + os->indent (); + + // Init the return type variable. + bt = be_type::narrow_from_decl (node->return_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_ami_handler_operation_cs::" + "visit_operation - " + "Bad return type\n"), + -1); + } + + // Generate the return type. Return type is simply void. + *os << "void " << be_nl; + + // Get the scope name. + be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl (); + if (parent == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "visit_operation - " + "scopeless operation :-<\n"), + -1); + } + + // Genereate scope name. + *os << parent->compute_name ("AMI_", "_Handler"); + + // Generate the operation name. + *os << "::" << node->local_name (); + + // Generate the argument list with the appropriate mapping (same as + // in the header file). + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARGLIST_CS); + visitor = tao_cg->make_visitor (&ctx); + if ((!visitor) || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "visit_operation - " + "codegen for argument list failed\n"), + -1); + } + delete visitor; + + os->indent (); + // Generate the actual code for the stub. However, if any of the argument + // types is "native", we flag a MARSHAL exception. + // last argument - is always CORBA::Environment + *os << "{" << be_idt_nl; + + // Deal with differences between IDL mapping for true C++ exceptions and + // alternate mapping. Since our code uses the ACE_TRY_ENV variable in a + // number of places, for the true exception case, we will have to explicitly + // declare the ACE_TRY_ENV variable. + *os << this->gen_environment_var () << be_nl; + + // Generate any pre stub info if and only if none of our parameters is of the + // native type. + if (!node->has_native ()) + { + // native type does not exist. + + // Generate any "pre" stub information such as tables or declarations + // This is a template method and the actual work will be done by the + // derived class + if (this->gen_pre_stub_info (node, bt) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_cs::" + "visit_operation - " + "gen_pre_stub_info failed\n"), + -1); + } + } + + // Declaring return type is not necessary. Since return type is + // void. + + // Native exists => no stub. + if (node->has_native ()) + { + if (this->gen_raise_exception (bt, "CORBA::MARSHAL", "") == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "visit_operation - " + "codegen for return var failed\n"), + -1); + } + } + else + { + os->indent (); + // Generate code that retrieves the underlying stub object and then + // invokes do_static_call on it. + *os << be_nl + << "TAO_Stub *istub = this->_stubobj ();" << be_nl + << "if (istub == 0)" << be_idt_nl; + + // If the stub object was bad, then we raise a system + // exception. + *os << "ACE_THROW (CORBA::INTERNAL ());\n\n"; + + *os << be_uidt; + + // do any pre marshal and invoke stuff with arguments + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_PRE_INVOKE_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_cs::" + "visit_operation - " + "codegen for argument pre invoke failed\n"), + -1); + } + + // Generate the code for marshaling in the parameters and transmitting + // them. + if (this->gen_marshal_and_invoke (node, bt) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_cs::" + "visit_operation - " + "codegen for marshal and invoke failed\n"), + -1); + + } + + // Return type is void, + + } // end of if (!native) + + *os << be_uidt_nl << "}" << be_nl << be_nl; + + // Generate the skeleton method. + + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SKELETON_CS); + visitor = tao_cg->make_visitor (&ctx); + + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_cs::" + "visit_operation - " + "codegen for AMI Handler skeleton failed\n"), + -1); + } + delete visitor; + + return 0; +} + +int +be_visitor_operation_ami_handler_operation_cs::visit_argument (be_argument *node) +{ + // this method is used to generate the ParamData table entry + + TAO_OutStream *os = this->ctx_->stream (); + be_type *bt; // argument type + + // retrieve the type for this argument + bt = be_type::narrow_from_decl (node->field_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "visit_argument - " + "Bad argument type\n"), + -1); + } + + os->indent (); + *os << "{" << bt->tc_name () << ", "; + switch (node->direction ()) + { + case AST_Argument::dir_IN: + *os << "PARAM_IN, "; + break; + case AST_Argument::dir_INOUT: + *os << "PARAM_INOUT, "; + break; + case AST_Argument::dir_OUT: + *os << "PARAM_OUT, "; + break; + } + *os << "0}"; + + return 0; +} + +int +be_visitor_operation_ami_handler_operation_cs::gen_raise_exception (be_type *bt, + const char *excep, + const char *completion_status) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + if (this->void_return_type (bt)) + { + *os << "ACE_THROW (" + << excep << " (" << completion_status << "));\n"; + } + else + { + *os << "ACE_THROW_RETURN (" + << excep << " (" << completion_status << "), "; + + // return the appropriate return value + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "gen_raise_exception - " + "codegen for return var failed\n"), + -1); + } + *os << ");\n"; + } + return 0; +} + +int +be_visitor_operation_ami_handler_operation_cs::gen_check_exception (be_type *bt) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + os->indent (); + // check if there is an exception + if (this->void_return_type (bt)) + { + *os << "ACE_CHECK;\n"; + //<< "_tao_environment);\n"; + } + else + { + *os << "ACE_CHECK_RETURN ("; + // << "_tao_environment, "; + + // return the appropriate return value + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "gen_check_exception - " + "codegen failed\n"), + -1); + } + *os << ");" << be_nl; + } + + return 0; +} + +// ************************************************************ +// Operation visitor for interpretive client stubs +// ************************************************************ + +be_interpretive_visitor_operation_ami_handler_operation_cs:: +be_interpretive_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx) + : be_visitor_operation_ami_handler_operation_cs (ctx) +{ +} + +be_interpretive_visitor_operation_ami_handler_operation_cs::~be_interpretive_visitor_operation_ami_handler_operation_cs (void) +{ +} + +// concrete implementation of the template methods + +int +be_interpretive_visitor_operation_ami_handler_operation_cs::gen_pre_stub_info (be_operation *node, + be_type *bt) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + // Generate the TAO_Param_Data table + os->indent (); + *os << "static const TAO_Param_Data "; + // check if we are an attribute node in disguise + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "_set_"; + else + *os << "_get_"; + } + *os << node->flatname () << + "_paramdata [] = " << be_nl; + *os << "{\n"; + os->incr_indent (); + + // entry for the return type + *os << "{" << bt->tc_name () << ", PARAM_RETURN, 0}"; + if (node->nmembers () > 0) + *os << ",\n"; + + // generate entries for the param data table for arguments + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::" + "gen_pre_stub_info - " + "visit scope failed\n"), + -1); + } + + os->indent (); + *os << be_nl; + os->decr_indent (); + *os << "}; // " << node->flatname () << "_paramdata\n\n"; + + // Check if this operation raises any exceptions. In that case, we must + // generate a list of exception typecodes. This is not valid for + // attributes + if (!this->ctx_->attribute ()) + { + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) " + "be_interpretive_visitor_operation_ami_handler_operation_cs::" + "gen_pre_stub_info - " + "Exceptionlist generation error\n"), + -1); + } + } + + // now generate the calldata table + os->indent (); + *os << "static const TAO_Call_Data "; + // check if we are an attribute node in disguise + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "_set_"; + else + *os << "_get_"; + } + *os << node->flatname () + << "_calldata = " << be_nl + << "{" + << "\""; + // check if we are an attribute node in disguise + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "_set_"; + else + *os << "_get_"; + } + *os << node->local_name () << "\", "; + + // are we oneway or two operation? + if (node->flags () == AST_Operation::OP_oneway) + { + *os << "0, "; // for false + } + else + { + *os << "1, "; // for true + } + // insert the size of the paramdata table i.e., number of arguments + 1 + // for return type + *os << (node->argument_count () + 1) << ", "; + + // insert the address of the paramdata table + // first check if we are an attribute node in disguise + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "_set_"; + else + *os << "_get_"; + } + *os << node->flatname () << "_paramdata, "; + + // insert exception list (if any) - node for attributes + if (this->ctx_->attribute ()) + *os << "0, 0};\n\n"; + else + { + if (node->exceptions ()) + { + *os << node->exceptions ()->length () + << ", _tao_" << node->flatname () << "_exceptiondata};\n\n"; + } + else + *os << "0, 0};\n\n"; + } + return 0; +} + +int +be_interpretive_visitor_operation_ami_handler_operation_cs:: +gen_marshal_and_invoke (be_operation*node, + be_type *bt) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + os->indent (); + *os << "void* _tao_arguments[" + << node->argument_count () + 1 << "];" << be_nl + << "const void** _tao_arg = ACE_const_cast (const void**,_tao_arguments);" << be_nl + << "*_tao_arg = "; + + // pass the appropriate return value to docall + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_INVOKE_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::" + "gen_marshal_and_invoke - " + "codegen for return var in do_static_call failed\n"), + -1); + } + *os << "; _tao_arg++;\n"; + + // pass each argument to do_static_call + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::" + "gen_marshal_and_invoke - " + "codegen for return var in do_static_call failed\n"), + -1); + } + delete visitor; + visitor=0; + + // call do_static_call with appropriate number of arguments + os->indent (); + *os << "istub->do_static_call (" << be_idt_nl + << "ACE_TRY_ENV, " << be_nl + << "&"; + // check if we are an attribute node in disguise + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "_set_"; + else + *os << "_get_"; + } + *os << node->flatname () << "_calldata," << be_nl + << "_tao_arguments" << be_uidt_nl + << ");\n"; + + os->indent (); + // check if there is an exception + if (this->gen_check_exception (bt) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_interpretive_visitor_operation_ami_handler_operation_cs::" + "gen_marshal_and_invoke - " + "codegen for checking exception failed\n"), + -1); + + } + + // do any post processing for the arguments + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "visit_operation - " + "codegen for args post do_static_call failed\n"), + -1); + } + delete visitor; + visitor = 0; + + // do any post processing for the retval + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_POST_INVOKE_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_operation_cs::" + "visit_operation - " + "codegen for return type post do_static_call failed\n"), + -1); + } + delete visitor; + + return 0; +} + +// ************************************************************ +// Operation visitor for compiled client stubs +// ************************************************************ + +be_compiled_visitor_operation_ami_handler_operation_cs:: +be_compiled_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx) + : be_visitor_operation_ami_handler_operation_cs (ctx) +{ +} + +be_compiled_visitor_operation_ami_handler_operation_cs::~be_compiled_visitor_operation_ami_handler_operation_cs (void) +{ +} + +// concrete implementation of the template methods + +int +be_compiled_visitor_operation_ami_handler_operation_cs::gen_pre_stub_info (be_operation *node, + be_type *) +{ + + // Check if this operation raises any exceptions. In that case, we must + // generate a list of exception typecodes. This is not valid for + // attributes + if (!this->ctx_->attribute ()) + { + be_visitor_context ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS); + be_visitor *visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) " + "be_compiled_visitor_operation_ami_handler_operation_cs::" + "gen_pre_stub_info - " + "Exceptionlist generation error\n"), + -1); + } + delete visitor; + } + + return 0; +} + +int +be_compiled_visitor_operation_ami_handler_operation_cs:: +gen_marshal_and_invoke (be_operation *node, + be_type *bt) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + os->indent (); + + // Create the GIOP_Invocation and grab the outgoing CDR stream. + switch (node->flags ()) + { + case AST_Operation::OP_oneway: + *os << "TAO_GIOP_Oneway_Invocation _tao_call "; + break; + default: + *os << "TAO_GIOP_Twoway_Invocation _tao_call "; + } + *os << "(" << be_idt << be_idt_nl + << "istub," << be_nl; + + if (this->ctx_->attribute ()) + { + // now check if we are a "get" or "set" operation + if (node->nmembers () == 1) // set + *os << "\"_set_\""; + else + *os << "\"_get_\""; + } + + *os << "\"" << node->original_local_name () + << "\"," << be_nl + << "istub->orb_core ()" << be_uidt_nl + << ");" << be_uidt_nl; + + *os << "\n" << be_nl + << "for (;;)" << be_nl + << "{" << be_idt_nl; + + *os << "ACE_TRY_ENV.clear ();" << be_nl; + *os << "_tao_call.start (ACE_TRY_ENV);" << be_nl; + // Check if there is an exception. + *os << "ACE_CHECK;"; + + // Now make sure that we have some AMI result parameter or OUT or + // INOUT parameters. Otherwise, there is nothing to be marshaled + // in. + if (!this->void_return_type (bt) || + this->has_param_type (node, AST_Argument::dir_OUT) || + this->has_param_type (node, AST_Argument::dir_INOUT)) + { + *os << be_nl + << "TAO_OutputCDR &_tao_out = _tao_call.out_stream ();" + << be_nl + << "if (!(\n" << be_idt << be_idt << be_idt; + + // @@ Michael: This has to be replaced witht he code in the + // "#if 0" clause + // Marshal the ami result argument, if the return type is not + // void. + if (!this->void_return_type (bt)) + { + os->indent (); + *os << "(_tao_out << _tao_retval)"; + + // Print the && if there are OUT or INOUT arguements in the + // signature. + if (this->has_param_type (node, AST_Argument::dir_OUT) || + this->has_param_type (node, AST_Argument::dir_INOUT)) + *os << " &&\n"; + } + +#if 0 + // @@ This for giving the _tao_retval argument only. But + // this may be needed for some data types. + // But the one that is above is ok for basic types. + // @@ We may need to do this. + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_MARSHAL_CS); + ctx.sub_state (TAO_CodeGen::TAO_CDR_OUTPUT); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_compiled_visitor_operation_ami_handler_operation_cs::" + "gen_marshal_and_invoke - " + "codegen for return var in do_static_call failed\n"), + -1); + } + delete visitor; + visitor = 0; +#endif /* 0 */ + + // Marshal each out and inout argument. + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS); + ctx.sub_state (TAO_CodeGen::TAO_CDR_OUTPUT); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_compiled_visitor_operation_ami_handler_operation_cs::" + "gen_marshal_and_invoke - " + "codegen for return var in do_static_call failed\n"), + -1); + } + delete visitor; + visitor = 0; + + *os << be_uidt << be_uidt_nl + << "))" << be_nl; + + // if marshaling fails, raise exception. + *os << "ACE_THROW (CORBA::MARSHAL ());"; + + *os << be_uidt; + } + + *os << be_nl + << "int _invoke_status =" << be_idt_nl; + if (node->flags () == AST_Operation::OP_oneway) + { + // oneway operation + *os << "_tao_call.invoke (ACE_TRY_ENV);"; + } + else + { + if (node->exceptions ()) + { + *os << "_tao_call.invoke (_tao_" << node->flatname () + << "_exceptiondata, " + << node->exceptions ()->length () + << ", ACE_TRY_ENV);"; + } + else + { + *os << "_tao_call.invoke (0, 0, ACE_TRY_ENV);"; + } + } + + *os << be_uidt_nl; + + // Check if there is an exception. + *os << "ACE_CHECK;"; + + *os << be_nl + << "if (_invoke_status == TAO_INVOKE_RESTART)" << be_idt_nl + << "continue;" << be_uidt_nl + << "// if (_invoke_status == TAO_INVOKE_EXCEPTION)" << be_idt_nl + << "// cannot happen" << be_uidt_nl + << "if (_invoke_status != TAO_INVOKE_OK)" << be_nl + << "{" << be_idt_nl; + + // Check if there is an exception. + *os << "ACE_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES));"; + + *os << be_uidt_nl + << "}" << be_nl + << "break;" << be_nl + << be_uidt_nl << "}" << be_nl; + + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp new file mode 100644 index 00000000000..ce3f1b178ce --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_result_arg.cpp @@ -0,0 +1,177 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_result_arg.cpp +// +// = DESCRIPTION +// Visitor that generates the result argument in a call back method +// of a Reply Handler. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "be.h" +#include "be_visitor_argument.h" + +ACE_RCSID(be_visitor_operation, ami_handler_result_arg, "$Id$") + + +// ************************************************************ +// Visitor for parameter list in AMI Handler call back declarations +// and definitions. +// ************************************************************ + +be_visitor_operation_ami_handler_result_arg::be_visitor_operation_ami_handler_result_arg (be_visitor_context *ctx) + : be_visitor_decl (ctx) +{ +} + +be_visitor_operation_ami_handler_result_arg::~be_visitor_operation_ami_handler_result_arg (void) +{ +} + +int +be_visitor_operation_ami_handler_result_arg::visit_array (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + + be_type *bt = be_type::narrow_from_decl (node); + + *os << "const " << bt->type_name (node) << " _tao_ami_result"; + + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_enum (be_enum *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node) << " _tao_ami_result" ; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_interface (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node, "_ptr") << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_interface_fwd (be_interface_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node, "_ptr") << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_native (be_native *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + *os << this->type_name (node) << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_predefined_type (be_predefined_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get output stream + + // check if the type is an any + if (node->pt () == AST_PredefinedType::PT_any) + { + *os << "const " << this->type_name (node) << " &" << " _tao_ami_result"; + } + else if (node->pt () == AST_PredefinedType::PT_pseudo) // e.g., CORBA::Object + { + *os << this->type_name (node, "_ptr") << " _tao_ami_result"; + } + else // simple predefined types + { + *os << this->type_name (node) << " _tao_ami_result"; + } + + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_sequence (be_sequence *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " &" << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_string (be_string *) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const char *" << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_structure (be_structure *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " &" << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_union (be_union *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " &" << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_typedef (be_typedef *node) +{ + this->ctx_->alias (node); + if (node->primitive_base_type ()->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_operation_ami_handler_result_arg::" + "visit_typedef - " + "accept on primitive type failed\n"), + -1); + } + this->ctx_->alias (0); + return 0; +} + + +#ifdef IDL_HAS_VALUETYPE + +int +be_visitor_operation_ami_handler_result_arg::visit_valuetype (be_valuetype *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << this->type_name (node) << " *" << " _tao_ami_result"; + return 0; +} + +int +be_visitor_operation_ami_handler_result_arg::visit_valuetype_fwd (be_valuetype_fwd *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // get the stream + *os << "const " << this->type_name (node) << " *" << " _tao_ami_result"; + return 0; +} + +#endif /* IDL_HAS_VALUETYPE */ diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp new file mode 100644 index 00000000000..d6936926da6 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_skeleton_cs.cpp @@ -0,0 +1,486 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_skeleton_cs.cpp +// +// = DESCRIPTION +// Visitor generating code for Operation in the stubs file. +// +// = AUTHOR +// Alexander Babu Arulanthu <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_operation.h" + +ACE_RCSID(be_visitor_operation, ami_handler_skeleton_cs, "$Id$") + + +// ************************************************************ +// Operation visitor for client stubs +// ************************************************************ + +be_visitor_operation_ami_handler_skeleton_cs::be_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx) + : be_visitor_operation (ctx) +{ +} + +be_visitor_operation_ami_handler_skeleton_cs::~be_visitor_operation_ami_handler_skeleton_cs (void) +{ +} + +// processing to be done after every element in the scope is processed +int +be_visitor_operation_ami_handler_skeleton_cs::post_process (be_decl *bd) +{ + // all we do here is to insert a comma and a newline + TAO_OutStream *os = this->ctx_->stream (); + if (!this->last_node (bd)) + *os << ",\n"; + return 0; +} + +int +be_visitor_operation_ami_handler_skeleton_cs::visit_operation (be_operation *node) +{ + TAO_OutStream *os; // output stream + be_type *bt; // type node + be_visitor_context ctx; // visitor context + be_visitor *visitor = 0; // visitor + + os = this->ctx_->stream (); + this->ctx_->node (node); // save the node for future use + + // Init the return type variable. + bt = be_type::narrow_from_decl (node->return_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_ami_handler_skeleton_cs::" + "visit_operation - " + "Bad return type\n"), + -1); + } + + // Start with the current indentation level. + os->indent (); + + + // Generate the return type. Return type is simply void. + *os << be_nl << "void" << be_nl; + + // Get the scope name. + be_decl *parent = be_scope::narrow_from_scope (node->defined_in ())->decl (); + if (parent == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::" + "visit_operation - " + "scopeless operation :-<\n"), + -1); + } + + // Genereate scope name. + *os << parent->compute_name ("AMI_", "_Handler"); + + // Generate the operation name. + *os << "::" << node->local_name () << "_skel (" << be_idt_nl; + + // Generate the argument list. + *os << "TAO_InputCDR &_tao_in, " << be_nl + << "Messaging::ReplyHandler_ptr _tao_reply_handler," << be_nl + << "CORBA::Environment &ACE_TRY_ENV"<< be_uidt << be_uidt_nl + << ")" << be_nl; + + // Generate the actual code for the stub. However, if any of the argument + // types is "native", we flag a MARSHAL exception. + // last argument - is always CORBA::Environment + *os << "{\n" << be_idt; + + // Deal with differences between IDL mapping for true C++ exceptions and + // alternate mapping. Since our code uses the ACE_TRY_ENV variable in a + // number of places, for the true exception case, we will have to explicitly + // declare the ACE_TRY_ENV variable. + *os << this->gen_environment_var () << be_nl; + + // Generate any pre stub info if and only if none of our parameters is of the + // native type. + if (!node->has_native ()) + { + // native type does not exist. + + // Generate any "pre" stub information such as tables or declarations + // This is a template method and the actual work will be done by the + // derived class + if (this->gen_pre_stub_info (node, bt) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_cs::" + "visit_operation - " + "gen_pre_stub_info failed\n"), + -1); + } + } + + os->indent(); + + *os << "// Retrieve Reply Handler object." << be_nl; + *os << parent->compute_name ("AMI_", "_Handler") << "_var " + << "_tao_reply_handler_object =" << be_idt_nl; + + *os << parent->compute_name ("AMI_", "_Handler"); + *os << "::_narrow(_tao_reply_handler, ACE_TRY_ENV);" << be_uidt_nl; + + *os << "ACE_CHECK;" << be_nl << be_nl + << "// @@ Error handling " << be_nl << be_nl; + + *os << "//Demarshall all the arguments.\n"; + + // declare a return type variable + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) ami_handler_skeleton_cs::" + "visit_operation - " + "codegen for return var decl failed\n"), + -1); + } + delete visitor; + visitor = 0; + + // declare variables for arguments + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) ami_handler_skeleton_cs::" + "visit_operation - " + "codegen for return var decl failed\n"), + -1); + } + delete visitor; + visitor = 0; + + // Demarshal parameters + if (this->gen_marshal_and_invoke (node, bt) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%1) ami_handler_skeleton_cs::" + "visit_operation - " + "gen_demarshal_params failed\n"), + -1); + } + + *os << be_uidt_nl << "};" << be_nl << be_nl; + + return 0; +} + +int +be_visitor_operation_ami_handler_skeleton_cs::visit_argument (be_argument *node) +{ + // this method is used to generate the ParamData table entry + + TAO_OutStream *os = this->ctx_->stream (); + be_type *bt; // argument type + + // retrieve the type for this argument + bt = be_type::narrow_from_decl (node->field_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::" + "visit_argument - " + "Bad argument type\n"), + -1); + } + + os->indent (); + *os << "{" << bt->tc_name () << ", "; + switch (node->direction ()) + { + case AST_Argument::dir_IN: + *os << "PARAM_IN, "; + break; + case AST_Argument::dir_INOUT: + *os << "PARAM_INOUT, "; + break; + case AST_Argument::dir_OUT: + *os << "PARAM_OUT, "; + break; + } + *os << "0}"; + + return 0; +} + +int +be_visitor_operation_ami_handler_skeleton_cs::gen_raise_exception (be_type *bt, + const char *excep, + const char *completion_status) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + if (this->void_return_type (bt)) + { + *os << "ACE_THROW (" + << excep << " (" << completion_status << "));\n"; + } + else + { + *os << "ACE_THROW_RETURN (" + << excep << " (" << completion_status << "), "; + + // return the appropriate return value + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::" + "gen_raise_exception - " + "codegen for return var failed\n"), + -1); + } + *os << ");\n"; + } + return 0; +} + +int +be_visitor_operation_ami_handler_skeleton_cs::gen_check_exception (be_type *bt) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor; + be_visitor_context ctx; + + os->indent (); + // check if there is an exception + if (this->void_return_type (bt)) + { + *os << "ACE_CHECK;\n"; + //<< "_tao_environment);\n"; + } + else + { + *os << "ACE_CHECK_RETURN ("; + // << "_tao_environment, "; + + // return the appropriate return value + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (bt->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_operation_ami_handler_skeleton_cs::" + "gen_check_exception - " + "codegen failed\n"), + -1); + } + *os << ");\n"; + } + + return 0; +} + +// ************************************************************ +// Operation visitor for interpretive client skeletons of the AMI reply handler +// ************************************************************ + +be_interpretive_visitor_operation_ami_handler_skeleton_cs:: +be_interpretive_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx) + : be_visitor_operation_ami_handler_skeleton_cs (ctx) +{ +} + +be_interpretive_visitor_operation_ami_handler_skeleton_cs::~be_interpretive_visitor_operation_ami_handler_skeleton_cs (void) +{ +} + +// concrete implementation of the template methods + +int +be_interpretive_visitor_operation_ami_handler_skeleton_cs::gen_pre_stub_info (be_operation *node, + be_type *bt) +{ + ACE_UNUSED_ARG (node); + ACE_UNUSED_ARG (bt); + + // @@ Michael: To be done. + return 0; +} + +int +be_interpretive_visitor_operation_ami_handler_skeleton_cs:: +gen_marshal_and_invoke (be_operation*node, + be_type *bt) +{ + ACE_UNUSED_ARG (node); + ACE_UNUSED_ARG (bt); + + // @@ Michael: To be done. + return 0; +} + +// ************************************************************ +// Operation visitor for compiled client skeletons of the AMI reply handler +// ************************************************************ + +be_compiled_visitor_operation_ami_handler_skeleton_cs:: +be_compiled_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx) + : be_visitor_operation_ami_handler_skeleton_cs (ctx) +{ +} + +be_compiled_visitor_operation_ami_handler_skeleton_cs::~be_compiled_visitor_operation_ami_handler_skeleton_cs (void) +{ +} + +// concrete implementation of the template methods + +int +be_compiled_visitor_operation_ami_handler_skeleton_cs::gen_pre_stub_info (be_operation *node, + be_type *) +{ + + // Check if this operation raises any exceptions. In that case, we must + // generate a list of exception typecodes. This is not valid for + // attributes + if (!this->ctx_->attribute ()) + { + be_visitor_context ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_OPERATION_EXCEPTLIST_CS); + be_visitor *visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) " + "be_compiled_visitor_operation_ami_handler_skeleton_cs::" + "gen_pre_stub_info - " + "Exceptionlist generation error\n"), + -1); + } + delete visitor; + } + + return 0; +} + +int +be_compiled_visitor_operation_ami_handler_skeleton_cs:: +gen_marshal_and_invoke (be_operation *node, + be_type *bt) +{ + TAO_OutStream *os = this->ctx_->stream (); + be_visitor *visitor = 0; + be_visitor_context ctx; + + os->indent (); + + *os << "if (!(\n" << be_idt << be_idt << be_idt; + + if (!this->void_return_type (bt)) + { + // demarshal the return val + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_RETVAL_DEMARSHAL_CS); + ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_compiled_visitor_operation_ami_handler_skeleton_cs::" + "gen_demarshal_params - " + "codegen for return var failed\n"), + -1); + } + delete visitor; + + // Print the && if there are OUT or INOUT arguements in the + // signature. + if (this->has_param_type (node, AST_Argument::dir_OUT) || + this->has_param_type (node, AST_Argument::dir_INOUT)) + *os << " &&\n"; + } + + if (this->has_param_type (node, AST_Argument::dir_INOUT) || + this->has_param_type (node, AST_Argument::dir_OUT)) + { + // demarshal each in and inout argument + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS); + ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_compiled_visitor_operation_ami_handler_skeleton_cs::" + "gen_marshal_params - " + "codegen for args failed\n"), + -1); + } + delete visitor; + } + + *os << be_uidt << be_uidt_nl + << " ))" << be_nl + << "ACE_THROW (CORBA::MARSHAL ());" << be_uidt_nl << be_nl; + + // Invoke the callback method + *os << "// Invoke the call back method." << be_nl + << "_tao_reply_handler_object->" + << node->local_name () << " (" << be_idt_nl; + + // if we have a non-void return type then pass it as the first argument + if (!this->void_return_type (bt)) + *os << "_tao_retval,\n"; + + // generate the argument list containing the inout and inout arguments + ctx = *this->ctx_; + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS); + visitor = tao_cg->make_visitor (&ctx); + if (!visitor || (node->accept (visitor) == -1)) + { + delete visitor; + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) ami_handler_skeleton_cs::" + "visit_operation - " + "codegen for making upcall failed\n"), + -1); + } + delete visitor; + visitor = 0; + + *os << be_nl << ");" << be_uidt_nl; + + *os << "ACE_CHECK;" << be_nl; + + return 0; +} diff --git a/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp b/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp index f7d36bd63df..a36fd00d9a4 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/argument.cpp @@ -61,6 +61,20 @@ be_visitor_operation_argument::post_process (be_decl *bd) case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS: *os << ",\n"; break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS: + { + // @@ Michael + // In the case of of AMI, we do not want to + // print a comma for in arguments. + // This is due to the concept of post processing, + // which I was not able to prevent to be executed + // in the case of in arguments. + be_argument *arg = this->ctx_->be_node_as_argument (); + ACE_ASSERT (arg != 0); + if (arg->direction () != AST_Argument::dir_IN) + *os << ",\n"; + } + break; default: break; } @@ -91,6 +105,7 @@ be_visitor_operation_argument::visit_operation (be_operation *node) { case TAO_CodeGen::TAO_OPERATION_ARG_UPCALL_SS: case TAO_CodeGen::TAO_OPERATION_COLLOCATED_ARG_UPCALL_SS: + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS: // applicable only to these cases where the actual upcall is made // last argument is the environment @@ -155,18 +170,33 @@ be_visitor_operation_argument::visit_argument (be_argument *node) case TAO_CodeGen::TAO_OPERATION_ARG_INVOKE_CS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_INVOKE_CS); break; + case TAO_CodeGen::TAO_AMI_OPERATION_ARG_INVOKE_CS: + ctx.state (TAO_CodeGen::TAO_AMI_ARGUMENT_INVOKE_CS); + break; +// @@ Michael case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS: +// ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS); +// break; case TAO_CodeGen::TAO_OPERATION_ARG_POST_INVOKE_CS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_POST_INVOKE_CS); break; case TAO_CodeGen::TAO_OPERATION_ARG_DECL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_VARDECL_SS); break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_VARDECL_CS); + break; case TAO_CodeGen::TAO_OPERATION_ARG_DEMARSHAL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_DEMARSHAL_SS); break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_DEMARSHAL_CS); + break; case TAO_CodeGen::TAO_OPERATION_ARG_MARSHAL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_MARSHAL_SS); break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_MARSHAL_CS); + break; case TAO_CodeGen::TAO_OPERATION_ARG_PRE_UPCALL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_PRE_UPCALL_SS); break; @@ -176,15 +206,18 @@ be_visitor_operation_argument::visit_argument (be_argument *node) case TAO_CodeGen::TAO_OPERATION_ARG_UPCALL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_UPCALL_SS); break; + case TAO_CodeGen::TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS: + ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS); + break; case TAO_CodeGen::TAO_OPERATION_ARG_POST_UPCALL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_POST_UPCALL_SS); break; case TAO_CodeGen::TAO_OPERATION_ARG_POST_MARSHAL_SS: ctx.state (TAO_CodeGen::TAO_ARGUMENT_POST_MARSHAL_SS); break; - case TAO_CodeGen::TAO_OPERATION_ARG_AMI: - ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI); - break; + // case TAO_CodeGen::TAO_OPERATION_ARG_AMI: + // ctx.state (TAO_CodeGen::TAO_ARGUMENT_AMI); + // break; default: { ACE_ERROR_RETURN ((LM_ERROR, diff --git a/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp b/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp index 1dc503c91e0..ab97bf649f1 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/argument_invoke.cpp @@ -62,6 +62,7 @@ be_compiled_visitor_operation_argument_invoke::pre_process (be_decl *bd) "Bad argument node\n"), -1); } + switch (arg->direction ()) { case AST_Argument::dir_IN: diff --git a/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp b/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp index ed123807f65..675a5807d94 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp @@ -68,7 +68,7 @@ visit_operation (be_operation *node) if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) { - os->indent (); + os->indent (); *os << "(_tao_out << "; } else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp index 6581578631c..980cbb496c8 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp @@ -115,14 +115,14 @@ be_visitor_operation_cs::visit_operation (be_operation *node) // last argument - is always CORBA::Environment *os << "{" << be_idt_nl; - // deal with differences between IDL mapping for trus C++ exceptions and + // Deal with differences between IDL mapping for true C++ exceptions and // alternate mapping. Since our code uses the ACE_TRY_ENV variable in a // number of places, for the true exception case, we will have to explicitly // declare the ACE_TRY_ENV variable. *os << this->gen_environment_var () << "\n"; - // generate any pre stub info if and only if none of our parameters is of the - // native type + // Generate any pre stub info if and only if none of our parameters is of the + // native type. if (!node->has_native ()) { // native type does not exist. @@ -140,7 +140,7 @@ be_visitor_operation_cs::visit_operation (be_operation *node) } } - // Declare a return type + // Declare return type. ctx = *this->ctx_; ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS); visitor = tao_cg->make_visitor (&ctx); diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp index 277021a3a0f..860210a7aab 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype.cpp @@ -45,8 +45,6 @@ be_visitor_operation_rettype::~be_visitor_operation_rettype (void) int be_visitor_operation_rettype::visit_array (be_array *node) { - - TAO_OutStream *os = this->ctx_->stream (); // grab the out stream be_type *bt; // return type diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp index 2dc75fbe214..5873b0d412f 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp @@ -56,7 +56,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_array (be_array *node) bt = node; os->indent (); - *os << bt->name () << "_slice *_tao_retval = 0;\n\n"; + + *os << bt->name () << "_slice *_tao_retval = 0;"; + + *os << be_nl << be_nl; + return 0; } @@ -72,7 +76,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_enum (be_enum *node) bt = node; os->indent (); - *os << bt->name () << " _tao_retval = (" << bt->name () << ")0;\n"; + + *os << bt->name () << " _tao_retval = (" << bt->name () << ")0;"; + + *os << be_nl << be_nl; + return 0; } @@ -88,7 +96,10 @@ be_visitor_operation_rettype_vardecl_cs::visit_interface (be_interface *node) bt = node; os->indent (); - *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();\n"; + *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();"; + + *os << be_nl << be_nl; + return 0; } @@ -104,7 +115,10 @@ be_visitor_operation_rettype_vardecl_cs::visit_interface_fwd (be_interface_fwd * bt = node; os->indent (); - *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();\n"; + *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();"; + + *os << be_nl << be_nl; + return 0; } @@ -122,7 +136,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_valuetype (be_valuetype *node) bt = node; os->indent (); - *os << bt->name () << "* _tao_retval = 0;\n"; + + *os << bt->name () << "* _tao_retval = 0;"; + + *os << be_nl << be_nl; + return 0; } @@ -138,7 +156,10 @@ be_visitor_operation_rettype_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd * bt = node; os->indent (); - *os << bt->name () << "* _tao_retval = 0;\n"; + *os << bt->name () << "* _tao_retval = 0;"; + + *os << be_nl << be_nl; + return 0; } @@ -159,19 +180,22 @@ be_visitor_operation_rettype_vardecl_cs::visit_predefined_type (be_predefined_ty { case AST_PredefinedType::PT_pseudo: os->indent (); - *os << bt->name () << "_ptr _tao_retval = 0;\n"; + *os << bt->name () << "_ptr _tao_retval = 0;"; break; case AST_PredefinedType::PT_any: os->indent (); - *os << bt->name () << " *_tao_retval = 0;\n"; + *os << bt->name () << "* _tao_retval = 0;"; break; case AST_PredefinedType::PT_void: break; default: os->indent (); - *os << bt->name () << " _tao_retval = 0;\n"; + *os << bt->name () << " _tao_retval = 0;"; break; } + + *os << be_nl << be_nl; + return 0; } @@ -189,7 +213,9 @@ be_visitor_operation_rettype_vardecl_cs::visit_sequence (be_sequence *node) bt = node; os->indent (); - *os << bt->name () << " *_tao_retval = 0;\n"; + *os << bt->name () << "* _tao_retval = 0;"; + + *os << be_nl << be_nl; return 0; } @@ -199,7 +225,9 @@ be_visitor_operation_rettype_vardecl_cs::visit_string (be_string * /* node*/) TAO_OutStream *os = this->ctx_->stream (); // grab the out stream os->indent (); - *os << "char *_tao_retval = 0;\n"; + *os << "char* _tao_retval = 0;"; + + *os << be_nl << be_nl; return 0; } @@ -215,15 +243,20 @@ be_visitor_operation_rettype_vardecl_cs::visit_structure (be_structure *node) bt = node; os->indent (); + // based on whether we are variable or not, we return a pointer or the // aggregate type if (node->size_type () == be_decl::VARIABLE) - *os << bt->name () << " *_tao_retval = 0;\n"; + { + *os << bt->name () << "* _tao_retval = 0;" << be_nl; + } else - { - *os << bt->name () << " _tao_retval;" << be_nl; - *os << "ACE_OS::memset (&_tao_retval, 0, sizeof (" << bt->name () << "));\n"; - } + { + *os << bt->name () << " _tao_retval;" << be_nl; + *os << "ACE_OS::memset (&_tao_retval, 0, sizeof (" << bt->name () << "));" + << be_nl; + } + return 0; } @@ -255,13 +288,18 @@ be_visitor_operation_rettype_vardecl_cs::visit_union (be_union *node) bt = node; os->indent (); + // based on whether we are variable or not, we return a pointer or the // aggregate type if (node->size_type () == be_decl::VARIABLE) - *os << bt->name () << " *_tao_retval = 0;\n"; + { + *os << bt->name () << "* _tao_retval = 0;"; + } else { - *os << bt->name () << " _tao_retval;\n"; + *os << bt->name () << " _tao_retval;"; } + + *os << be_nl; return 0; } diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp index b368ff8fc43..88901556894 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_ss.cpp @@ -89,7 +89,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_interface (be_interface *) // return type may be some derived class *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n"; #if 0 /* ASG */ - *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();" << be_nl; + *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n"; *os << "CORBA::Object_ptr &_tao_ptr_retval = _tao_retval.out ();\n"; #endif return 0; @@ -107,10 +107,10 @@ visit_interface_fwd (be_interface_fwd *) // CORBA::Object_ptr as the type for the return value even though the actual // return type may be some derived class #if 0 /* ASG */ - *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();" << be_nl; + *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n"; *os << "CORBA::Object_ptr &_tao_ptr_retval = _tao_retval.out ();\n"; #endif - *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();" << be_nl; + *os << "CORBA::Object_var _tao_retval = CORBA::Object::_nil ();\n"; return 0; } @@ -156,7 +156,7 @@ visit_predefined_type (be_predefined_type *node) case AST_PredefinedType::PT_pseudo: os->indent (); #if 0 /* ASG */ - *os << bt->name () << "_var _tao_retval;" << be_nl; + *os << bt->name () << "_var _tao_retval;\n"; *os << bt->name () << "_ptr &_tao_ptr_retval = _tao_retval.out ();\n"; #endif *os << bt->name () << "_var _tao_retval;\n"; @@ -164,7 +164,7 @@ visit_predefined_type (be_predefined_type *node) case AST_PredefinedType::PT_any: os->indent (); #if 0 /* ASG */ - *os << bt->name () << "_var _tao_retval;" << be_nl; + *os << bt->name () << "_var _tao_retval;\n"; *os << bt->name () << "_ptr &_tao_ptr_retval = _tao_retval.out ();\n"; #endif *os << bt->name () << "_var _tao_retval;\n"; @@ -194,7 +194,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_sequence (be_sequence *node) os->indent (); #if 0 /* ASg */ - *os << bt->name () << "_var _tao_retval;" << be_nl; + *os << bt->name () << "_var _tao_retval;\n"; *os << bt->name () << " *&_tao_ptr_retval = _tao_retval.out ();\n"; #endif *os << bt->name () << "_var _tao_retval;\n"; @@ -208,7 +208,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_string (be_string * /* node*/) os->indent (); #if 0 /* ASG */ - *os << "CORBA::String_var _tao_retval;" << be_nl; + *os << "CORBA::String_var _tao_retval;\n"; *os << "char *&_tao_ptr_retval = _tao_retval.out ();\n"; #endif *os << "CORBA::String_var _tao_retval;\n"; @@ -232,7 +232,7 @@ be_visitor_operation_rettype_vardecl_ss::visit_structure (be_structure *node) if (node->size_type () == be_decl::VARIABLE) { #if 0 /* ASG */ - *os << bt->name () << "_var _tao_retval;" << be_nl; + *os << bt->name () << "_var _tao_retval;\n"; *os << bt->name () << " *&_tao_ptr_retval = _tao_retval.out ();\n"; #endif *os << bt->name () << "_var _tao_retval;\n"; @@ -275,10 +275,10 @@ be_visitor_operation_rettype_vardecl_ss::visit_union (be_union *node) if (node->size_type () == be_decl::VARIABLE) { #if 0 /* ASG */ - *os << bt->name () << "_var _tao_retval;" << be_nl; + *os << bt->name () << "_var _tao_retval;\n"; *os << bt->name () << " *&_tao_ptr_retval = _tao_retval.out ();\n"; #endif - *os << bt->name () << "_var _tao_retval;" << be_nl; + *os << bt->name () << "_var _tao_retval;\n"; } else *os << bt->name () << " _tao_retval;\n"; diff --git a/TAO/TAO_IDL/be/be_visitor_rettype.cpp b/TAO/TAO_IDL/be/be_visitor_rettype.cpp new file mode 100644 index 00000000000..eb1cf5095d9 --- /dev/null +++ b/TAO/TAO_IDL/be/be_visitor_rettype.cpp @@ -0,0 +1,3032 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// be_visitor_rettype.cpp +// +// = DESCRIPTION +// Visitor generating the first argument of an ami handler's call +// back hook method. +// +// = AUTHOR +// Alexander Babu Arulanthu <alex@cs.wustl.edu> +// +// ============================================================================ + +#include "idl.h" +#include "idl_extern.h" +#include "be.h" + +#include "be_visitor_rettype.h" + +ACE_RCSID(be, be_visitor_rettype, "$Id$") + + +// ****************************************************** +// TypeCode Definitions +// ****************************************************** + +be_visitor_rettype_ami_handler_result_arg::be_visitor_rettype_ami_handler_result_arg (be_visitor_context *ctx) + : be_visitor_scope (ctx), + computed_tc_size_ (0), + computed_encap_len_ (0), + computed_scope_encap_len_ (0), + tc_offset_ (0), + index_ (-1) + +{ +} + +be_visitor_rettype_ami_handler_result_arg::~be_visitor_rettype_ami_handler_result_arg (void) +{ + this->queue_reset (this->tc_queue_); + this->queue_reset (this->compute_queue_); +} + +// the visit methods will be called for the top-level node whose typecode is +// being generated + +int +be_visitor_rettype_ami_handler_result_arg::visit_type (be_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + + // reset the queue + this->queue_reset (this->tc_queue_); + this->tc_offset_ = 0; + + // check if optimized typecodes are desired OR if the node is involved in + // some form of recursion + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_rettype_ami_handler_result_arg::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + os->indent (); // start from current indentation level + + // generate the typecode information here + *os << "static const CORBA::Long _oc_" << node->flatname () << "[] =" + << be_nl; + *os << "{" << be_idt << "\n"; + + // add the sizeof the enum tk_* and the encap length that we do not put into + // this array but which will exist in the CDR buffer + + this->tc_offset_ = 4 + 4; + + + // note that we just need the parameters here and hence we generate the + // encapsulation for the parameters + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_rettype_ami_handler_result_arg::" + "visit_type - " + "codegen for typecode encapsulation failed\n"), + -1); + } + *os << be_uidt << "};" << be_nl; + + *os << "static CORBA::TypeCode _tc_TAO_tc_" << node->flatname () + << " ("; + switch (node->node_type ()) + { + case AST_Decl::NT_array: + *os << "CORBA::tk_array"; + break; + case AST_Decl::NT_enum: + *os << "CORBA::tk_enum"; + break; + case AST_Decl::NT_except: + *os << "CORBA::tk_except"; + break; + case AST_Decl::NT_interface: + *os << "CORBA::tk_objref"; + break; + case AST_Decl::NT_sequence: + *os << "CORBA::tk_sequence"; + break; + case AST_Decl::NT_struct: + *os << "CORBA::tk_struct"; + break; + case AST_Decl::NT_typedef: + *os << "CORBA::tk_alias"; + break; + case AST_Decl::NT_union: + *os << "CORBA::tk_union"; + break; + default: + return -1; // error + } + + *os << ", sizeof (_oc_" << node->flatname () + << "), (char *) &_oc_" << node->flatname () + << ", 0, sizeof (" << node->name () << "));" << be_nl; + + // is our enclosing scope a module? We need this check because for + // platforms that support namespaces, the typecode must be declared + // extern + if (node->is_nested () && + node->defined_in ()->scope_node_type () == AST_Decl::NT_module) + { + *os << "TAO_NAMESPACE_TYPE (CORBA::TypeCode_ptr)" << be_nl; + be_module *module = be_module::narrow_from_scope (node->defined_in ()); + if (!module || (this->gen_nested_namespace_begin (module) == -1)) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_rettype_ami_handler_result_arg::visit_type - " + "Error parsing nested name\n"), + -1); + } + *os << "TAO_NAMESPACE_DEFINE (CORBA::TypeCode_ptr, _tc_" + << node->local_name () << ", &_tc_TAO_tc_" + << node->flatname () << ")" << be_nl; + if (this->gen_nested_namespace_end (module) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "be_visitor_rettype_ami_handler_result_arg::visit_type - " + "Error parsing nested name\n"), + -1); + } + } + else + { + // outermost scope. + *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc_TAO_tc_" + << node->flatname () << ";\n\n"; + } + return 0; +} + +// the following needs to be done to deal with the most bizarre behavior of +// MSVC++ compiler +int +be_visitor_rettype_ami_handler_result_arg::gen_nested_namespace_begin (be_module *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + UTL_IdListActiveIterator *i; + + i = new UTL_IdListActiveIterator (node->name ()); + while (!(i->is_done ())) + { + if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0) + { + // leave the outermost root scope + *os << "TAO_NAMESPACE_BEGIN (" << i->item ()->get_string () + << ")" << be_nl; + } + i->next (); + } + delete i; + return 0; +} + +// the following needs to be done to deal with the most bizarre behavior of +// MSVC++ compiler +int +be_visitor_rettype_ami_handler_result_arg::gen_nested_namespace_end (be_module *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + UTL_IdListActiveIterator *i; + + i = new UTL_IdListActiveIterator (node->name ()); + while (!(i->is_done ())) + { + if (ACE_OS::strcmp (i->item ()->get_string (), "") != 0) + { + // leave the outermost root scope + *os << "TAO_NAMESPACE_END" << be_nl; + } + i->next (); + } + delete i; + return 0; +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_array (be_array *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_enum (be_enum *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + return this->visit_scope (node); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_enum_val (be_enum_val *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_exception (be_exception *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + return this->visit_scope (node); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_field (be_field *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_interface (be_interface *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_interface_fwd (be_interface_fwd *) +{ + // nothing to do + return 0; +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_predefined_type (be_predefined_type *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + // top level typecodes are defined in the CORBA library. If we show up + // here, then it is an error + break; + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_rettype_ami_handler_result_arg::visit_sequence (be_sequence *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_rettype_ami_handler_result_arg::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_typecode_defn::visit_string (be_string *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + // top level typecode for string is not permitted. It has to be a + // typedefed string + break; + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_typecode_defn::visit_structure (be_structure *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + return this->visit_scope (node); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_typecode_defn::visit_typedef (be_typedef *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_typecode_defn::visit_union (be_union *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: + return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: + return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: + this->computed_tc_size_ = this->compute_tc_size (node); + return ((this->computed_tc_size_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + return this->visit_scope (node); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +int +be_visitor_typecode_defn::visit_union_branch (be_union_branch *node) +{ + switch (this->ctx_->sub_state ()) + { + case TAO_CodeGen::TAO_TC_DEFN_SCOPE: + return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN: + this->computed_encap_len_ = this->compute_encap_length (node); + return ((this->computed_encap_len_ > 0) ? 0 : -1); + default: + // error + break; + } + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::") + ASYS_TEXT ("visit - bad sub state ") + ASYS_TEXT ("in visitor context\n")), + -1); +} + +// methods that actually produce the typecode and the encapsulations + + +int +be_visitor_typecode_defn::gen_typecode (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // we do not do typecode optimization for anonymous arrays + + *os << "CORBA::tk_array, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (array) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn::") + ASYS_TEXT ("gen_typecode - ") + ASYS_TEXT ("gen_encapsulation failed for array\n")), + -1); + } + + *os << be_uidt << "\n"; + + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_array *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + be_type *bt; // base type + unsigned long i; + + os->indent (); // start from the current indentation level + + // retrieve the base type + bt = be_type::narrow_from_decl (node->base_type ()); + if (!bt) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_array::gen_encapsulation - " + "bad base type\n"), + -1); + } + + // compute the typecode size + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_encapsulation (array) - ") + ASYS_TEXT ("Failed to get typecode size\n")), + -1); + } + + for (i = 0; i < (node->n_dims () - 1); i++) + { + unsigned long rem_encap_len; + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + *os << "CORBA::tk_array, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + rem_encap_len + = (node->n_dims () - (i + 1)) * (4 + 4) + + (node->n_dims () - (i + 2)) * (4 + 4) + + this->computed_tc_size_; + *os << rem_encap_len << ", // encapsulation length" << be_idt_nl; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + + // now generate the typecode of the base type + *os << "TAO_ENCAP_BYTE_ORDER, // byte order\n"; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED); + if (bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_array::gen_encapsulation - " + "base type typecode gen failed\n"), + -1); + } + + os->indent (); + // now reduce the indentation appropriately + for (i = (node->n_dims () - 1); i > 0; i--) + { + *os << node->dims ()[i] << "," << be_uidt_nl; + // size of the dimension which is a 4 byte quantity + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + *os << node->dims ()[0] << ",\n"; + // size of the dimension which is a 4 byte quantity + this->tc_offset_ += sizeof (ACE_CDR::ULong); + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_enum *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_enum, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (enum) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (enum) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + + *os << be_uidt << "\n"; + + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_enum *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + + // generate the member count + os->indent (); + *os << node->member_count () << ", // member count\n"; + // size of the member length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // hand over to the scope to generate the typecode for elements + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_encapsulation (enum) - ") + ASYS_TEXT ("cannot generate typecode for members\n")), + -1); + } + + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_enum_val *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // generate name + this->gen_name (node); + + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_exception *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_except, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (exception) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (exception) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + + *os << be_uidt << "\n"; + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_exception *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + + // generate the member count + os->indent (); + *os << node->member_count () << ", // member count\n"; + // size of the member count + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // hand over to the scope to generate the typecode for elements + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_encapsulation (exception) - ") + ASYS_TEXT ("cannot generate typecode for members\n")), + -1); + } + + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_field *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + be_type *bt; // our type node + + os->indent (); // start from whatever indentation level we were at + + // generate name + this->gen_name (node); + + // hand over code generation to our type node + bt = be_type::narrow_from_decl (node->field_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_encapsulation (field) - ") + ASYS_TEXT ("failed to generate typecode\n")), + -1); + } + // revert the state to what it was before because we may be dealing with + // subsequent fields for which we have to be in the "gen scope" + // substate + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE); + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_objref, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (interface) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (interface) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + *os << be_uidt << "\n"; + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_interface *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_interface_fwd *) +{ + // nothing to do here + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_interface_fwd *) +{ + // nothing to be done + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_predefined_type *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from the current indentation level + + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + switch (node->pt ()) + { + case AST_PredefinedType::PT_void: + *os << "CORBA::tk_void,\n\n"; + break; + case AST_PredefinedType::PT_short: + *os << "CORBA::tk_short,\n\n"; + break; + case AST_PredefinedType::PT_ushort: + *os << "CORBA::tk_ushort,\n\n"; + break; + case AST_PredefinedType::PT_long: + *os << "CORBA::tk_long,\n\n"; + break; + case AST_PredefinedType::PT_ulong: + *os << "CORBA::tk_ulong,\n\n"; + break; + case AST_PredefinedType::PT_longlong: + *os << "CORBA::tk_longlong,\n\n"; + break; + case AST_PredefinedType::PT_ulonglong: + *os << "CORBA::tk_ulonglong,\n\n"; + break; + case AST_PredefinedType::PT_float: + *os << "CORBA::tk_float,\n\n"; + break; + case AST_PredefinedType::PT_double: + *os << "CORBA::tk_double,\n\n"; + break; + case AST_PredefinedType::PT_longdouble: + *os << "CORBA::tk_longdouble,\n\n"; + break; + case AST_PredefinedType::PT_boolean: + *os << "CORBA::tk_boolean,\n\n"; + break; + case AST_PredefinedType::PT_char: + *os << "CORBA::tk_char,\n\n"; + break; + case AST_PredefinedType::PT_octet: + *os << "CORBA::tk_octet,\n\n"; + break; + case AST_PredefinedType::PT_any: + *os << "CORBA::tk_any,\n\n"; + break; + case AST_PredefinedType::PT_wchar: + *os << "CORBA::tk_wchar,\n\n"; + break; + case AST_PredefinedType::PT_pseudo: + { + if (!ACE_OS::strcmp (node->local_name ()->get_string (), "TypeCode")) + *os << "CORBA::tk_TypeCode,\n\n"; + else + if (!ACE_OS::strcmp (node->local_name ()->get_string (), "Object")) + { + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_objref," << be_nl; + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (predefined) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect + // computation of other nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ + << ", // encapsulation length" << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (predefined objref) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + *os << be_uidt << "\n"; + } + } + } + break; + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_predefined_type *node) +{ + // this one is valid only for "Object" + if (!ACE_OS::strcmp (node->local_name ()->get_string (), "Object")) + { + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + } + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_sequence *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // no typecode optimization for anonymous sequences + + *os << "CORBA::tk_sequence, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (sequence) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (sequence) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + *os << be_uidt << "\n"; + + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_sequence *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + be_type *bt; // base type + + os->indent (); + *os << "TAO_ENCAP_BYTE_ORDER, // byte order\n"; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // emit typecode of element type + bt = be_type::narrow_from_decl (node->base_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_encapsulation (sequence) - ") + ASYS_TEXT ("failed to generate typecode\n")), + -1); + } + + // emit the sequence bounds (0 if unbounded) + os->indent (); + *os << node->max_size () << ",\n"; + // size of the bound length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_string *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + // no typecode optimizations for anonymous strings + + os->indent (); // start from the current indentation level + // emit the enumeration + *os << "CORBA::tk_string, " << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // emit the string bounds (0 if unbounded) + *os << node->max_size () << ", // string length\n"; + // size of the bounds + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_string *) +{ + // nothing to be done here + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_structure *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_struct, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (struct) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (structure) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + *os << be_uidt << "\n"; + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_structure *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + + // generate the member count + os->indent (); + *os << node->member_count () << ", // member count\n"; + // size of the member count + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // hand over to the scope to generate the typecode for elements + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE); + if (node->accept (this) == -1) + { + ACE_ERROR ((LM_ERROR, "be_structure: cannot generate typecode for members\n")); + return -1; + } + + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_typedef *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_alias, // typecode kind for typedefs" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (typedef) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (typedef) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + + *os << be_uidt << "\n"; + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_typedef *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + be_type *bt; // base type + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + + // generate typecode for the base type + bt = be_type::narrow_from_decl (node->base_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_encapsulation (typedef) - ") + ASYS_TEXT ("failed to generate typecode\n")), + -1); + } + return 0; +} + +int +be_visitor_typecode_defn::gen_typecode (be_union *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + + os->indent (); // start from whatever indentation level we were at + + // check if we are repeated + const be_visitor_typecode_defn::QNode *qnode = + this->queue_lookup (this->tc_queue_, node); + if (qnode) + { + // we are repeated, so we must generate an indirection here + *os << "0xffffffff, // indirection" << be_nl; + this->tc_offset_ += sizeof (ACE_CDR::ULong); + // the offset must point to the tc_kind value of the first occurrence of + // this type + os->print ("0x%x, // negative offset (%ld)\n", + (qnode->offset - this->tc_offset_), + (qnode->offset - this->tc_offset_)); + this->tc_offset_ += sizeof (ACE_CDR::ULong); + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->tc_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "visit_type - " + "queue insert failed\n"), + -1); + } + } + + *os << "CORBA::tk_union, // typecode kind" << be_nl; + // size of the enum + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // reset the compute queue to set the stage for computing our + // encapsulation length + this->queue_reset (this->compute_queue_); + + // emit the encapsulation length + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) - be_visitor_typecode_defn") + ASYS_TEXT ("gen_typecode (union) - ") + ASYS_TEXT ("Failed to get encap length\n")), + -1); + } + // reset the compute queue since we must not affect computation of other + // nodes + this->queue_reset (this->compute_queue_); + + *os << this->computed_encap_len_ << ", // encapsulation length" + << be_idt << "\n"; + // size of the encap length + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // now emit the encapsulation + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_typecode (union) - ") + ASYS_TEXT ("failed to generate encapsulation\n")), + -1); + } + *os << be_uidt << "\n"; + } + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_union *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + be_type *discrim; + + os->indent (); // start from whatever indentation level we were at + + *os << "TAO_ENCAP_BYTE_ORDER, // byte order" << be_nl; + // size of the encapsulation byte order flag. Although it is 1 byte, the + // aligned size is 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate repoID + this->gen_repoID (node); + + // generate name + os->indent (); + this->gen_name (node); + + // generate typecode for discriminant + discrim = be_type::narrow_from_decl (node->disc_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED); + if (discrim->accept (this) == -1) + { + ACE_ERROR ((LM_ERROR, "be_union: cannot generate typecode for discriminant\n")); + return -1; + } + + // generate the default used flag + os->indent (); + *os << node->default_index () << ", // default used index" << be_nl; + // size of the default index used + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // generate the member count + *os << node->member_count () << ", // member count\n"; + // size of the member count + this->tc_offset_ += sizeof (ACE_CDR::ULong); + + // hand over to the scope to generate the typecode for elements + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE); + if (node->accept (this) == -1) + { + ACE_ERROR ((LM_ERROR, "be_union: cannot generate code for members\n")); + return -1; + } + + return 0; +} + +int +be_visitor_typecode_defn::gen_encapsulation (be_union_branch *node) +{ + TAO_OutStream *os = this->ctx_->stream (); // output stream + be_type *bt; // our type node + + be_union *ub = this->ctx_->be_scope_as_union (); + + ACE_UINT32 buf[1]; + ACE_OS::memset (buf, 0, sizeof (buf)); + + for (unsigned long i = 0; + i < node->label_list_length (); + ++i) + { + os->indent (); + + // emit the case label value + if (node->label (i)->label_kind () == AST_UnionLabel::UL_label) + { + AST_Expression *expression = node->label (i)->label_val (); + AST_Expression::AST_ExprValue *ev = expression->ev (); + switch (ub->udisc_type ()) + { + case AST_Expression::EV_char: + os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)ev->u.cval); + // size of bool/char aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + case AST_Expression::EV_bool: + os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)ev->u.bval); + // size of bool/char aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + case AST_Expression::EV_wchar: + case AST_Expression::EV_short: + os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)ev->u.sval); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_ushort: + os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)ev->u.usval); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_long: + os->print ("0x%08.8x", (unsigned long)ev->u.lval); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_ulong: + os->print ("0x%08.8x", ev->u.ulval); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_any: + // enum + os->print ("0x%08.8x", (unsigned long)ev->u.eval); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_ulonglong: + case AST_Expression::EV_longlong: + // unimplemented yet + + default: + ACE_ERROR_RETURN ((LM_DEBUG, + "be_union_branch: (%N:%l) Label value " + "type (%d) is invalid\n", ev->et), -1); + ACE_NOTREACHED (break;) + } + + *os << ", // union case label (evaluated value)" << be_nl; + } + else + { + // default case + be_union::DefaultValue dv; + if (ub->default_value (dv) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode::" + "gen_encapsulation (union_branch) - " + "computing default value failed\n"), + -1); + } + + switch (ub->udisc_type ()) + { + case AST_Expression::EV_char: + os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)dv.u.char_val); + // size of bool/char aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + case AST_Expression::EV_bool: + os->print ("ACE_IDL_NCTOHL (0x%02.2x)", (unsigned char)dv.u.bool_val); + // size of bool/char aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + case AST_Expression::EV_wchar: + case AST_Expression::EV_short: + os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)dv.u.short_val); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_ushort: + os->print ("ACE_IDL_NSTOHL (0x%04.4x)", (unsigned short)dv.u.ushort_val); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_long: + os->print ("0x%08.8x", (unsigned long)dv.u.long_val); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_ulong: + os->print ("0x%08.8x", (unsigned long)dv.u.ulong_val); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_any: + // enum + os->print ("0x%08.8x", (unsigned long)dv.u.enum_val); + // size of short/wchar aligned to 4 bytes + this->tc_offset_ += sizeof (ACE_CDR::ULong); + break; + + case AST_Expression::EV_ulonglong: + case AST_Expression::EV_longlong: + // unimplemented yet + + default: + ACE_ERROR_RETURN ((LM_DEBUG, + "be_union_branch: (%N:%l) Label value " + "type (%d) is invalid\n", ub->udisc_type ()), + -1); + ACE_NOTREACHED (break;) + } + + *os << ", // union default label (evaluated value)" << be_nl; + } + + // emit name + this->gen_name (node); + + // hand over code generation to our type node + bt = be_type::narrow_from_decl (node->field_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::gen_encapsulation (union_branch) - ") + ASYS_TEXT ("failed to generate typecode\n")), + -1); + } + } // end of for loop + + // revert the state + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE); + return 0; +} + + +// = methods for computing typecode and encapsulation sizes + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_array *node) +{ + // 4 bytes for enumeration, 4 bytes for storing encap length val, followed by the + // actual encapsulation + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (array) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_array *node) +{ + // Suppose "N" is the number of dimensions, then for a N dimensional array, + // we will have N encapsulations. The innermost encapsulation will hold the + // typecode of the real base type. + // Thus, we will have N byte order flags and dimensions, and N-1 tk_array + // enumerations, encapsulation lengths, and dimensions. + + be_type *bt; // base type + + bt = be_type::narrow_from_decl (node->base_type ()); + + ACE_CDR::Long encap_len = + // N byte order flags and dimensions + node->n_dims () * (4 + 4) + + + // N-1 of tk_array and that many encapsulation lengths + (node->n_dims () - 1) * (4 + 4); + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (array) - ") + ASYS_TEXT ("cannot compute tc size for base\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_tc_size_; + return this->computed_encap_len_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_enum *node) +{ + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (enum) - " + "queue insert failed\n"), + -1); + } + } + + // 4 bytes for enumeration, 4 bytes for storing encap length val, followed by the + // actual encapsulation + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (enum) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + return this->computed_tc_size_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_enum *node) +{ + ACE_CDR::Long encap_len; + encap_len = 4; // holds the byte order flag + + encap_len += + this->repoID_encap_len (node); // repoID storage + + // do the same thing for the local name + encap_len += this->name_encap_len (node); + + encap_len += 4; // to hold the member count + + // save the current value of scope len and start with a fresh one for our + // scope length computation + if (this->push (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (enum) - ") + ASYS_TEXT ("push failed\n")), + -1); + } + this->computed_scope_encap_len_ = 0; + + // compute encap length for members + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (enum) - ") + ASYS_TEXT ("cannot compute scope tc size\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_; + + // pop off the previous value of computed_scope_len_ + if (this->pop (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (enum) - ") + ASYS_TEXT ("pop failed\n")), + -1); + } + + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_enum_val *node) +{ + this->computed_encap_len_ = this->name_encap_len (node); + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_exception *node) +{ + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (exception) - " + "queue insert failed\n"), + -1); + } + } + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (array) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + return this->computed_tc_size_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_exception *node) +{ + ACE_CDR::Long encap_len; + encap_len = 4; // holds the byte order flag + + encap_len += this->repoID_encap_len (node); // repoID + + // do the same thing for the local name + encap_len += this->name_encap_len (node); + + encap_len += 4; // to hold the member count + + // save the current value of scope len and start with a fresh one for our + // scope length computation + if (this->push (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (exception) - ") + ASYS_TEXT ("push failed\n")), + -1); + } + this->computed_scope_encap_len_ = 0; + + // compute encap length for members + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (exception) - ") + ASYS_TEXT ("cannot compute scope tc size\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_; + + // pop off the previous value of computed_scope_len_ + if (this->pop (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (exception) - ") + ASYS_TEXT ("pop failed\n")), + -1); + } + + return this->computed_encap_len_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_field *node) +{ + be_type *bt; + + // struct member is represented as the "name" followed by the typecode + + ACE_CDR::Long encap_len = + this->name_encap_len (node); // for name + + // add to this, the size of our typecode + bt = be_type::narrow_from_decl (node->field_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (array) - ") + ASYS_TEXT ("cannot compute tc size\n")), + -1); + } + + // note that we must add typecode size of base type + this->computed_encap_len_ = encap_len + this->computed_tc_size_; + + // revert the sub state + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN); + + return this->computed_encap_len_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_interface *node) +{ + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (interface) - " + "queue insert failed\n"), + -1); + } + } + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (interface) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + return this->computed_tc_size_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_interface *node) +{ + this->computed_encap_len_ = 4; // holds the byte order flag + + this->computed_encap_len_ += + this->repoID_encap_len (node); // for repoID + + // do the same thing for the local name + this->computed_encap_len_ += + this->name_encap_len (node); + + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_interface_fwd *) +{ + return 0; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_interface_fwd *) +{ + return 0; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_predefined_type *node) +{ + if (!ACE_OS::strcmp (node->local_name ()->get_string (), + "Object")) // not same + { + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (predefined type) - " + "queue insert failed\n"), + -1); + } + } + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (predefined objref) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + } + else + this->computed_tc_size_ = 4; + + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_predefined_type *node) +{ + if (!ACE_OS::strcmp (node->local_name ()->get_string (), + "Object")) // not same + { + this->computed_encap_len_ = 4; // holds the byte order flag + + this->computed_encap_len_ += + this->repoID_encap_len (node); // for repoID + + // do the same thing for the local name + this->computed_encap_len_ += + this->name_encap_len (node); + } + else + this->computed_encap_len_ = 0; + + return this->computed_encap_len_; +} + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_sequence *node) +{ + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (sequence) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_sequence *node) +{ + be_type *bt; // base type + + ACE_CDR::Long encap_len = 4; // holds the byte order flag + + // add the encapsulation length of our base type + bt = be_type::narrow_from_decl (node->base_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (sequence) - ") + ASYS_TEXT ("cannot compute tc size\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_tc_size_; + this->computed_encap_len_ += 4; // to hold the max size + + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_string *) +{ + this->computed_tc_size_ = 4 + 4; + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_string *) +{ + this->computed_encap_len_ = 0; + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_structure *node) +{ + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (structure) - " + "queue insert failed\n"), + -1); + } + } + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (structure) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_structure *node) +{ + ACE_CDR::Long encap_len = 4; // holds the byte order flag + + encap_len += this->repoID_encap_len (node); // repoID + + // do the same thing for the local name + encap_len += this->name_encap_len (node); + + encap_len += 4; // to hold the member count + + // save the current value of scope len and start with a fresh one for our + // scope length computation + if (this->push (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (struct) - ") + ASYS_TEXT ("push failed\n")), + -1); + } + this->computed_scope_encap_len_ = 0; + + // compute encap length for members + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (structure) - ") + ASYS_TEXT ("cannot compute scope tc size\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_; + + // pop off the previous value of computed_scope_len_ + if (this->pop (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (struct) - ") + ASYS_TEXT ("pop failed\n")), + -1); + } + + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_typedef *node) +{ + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (typedef) - " + "queue insert failed\n"), + -1); + } + } + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (array) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_typedef *node) +{ + be_type *bt; // base type + ACE_CDR::Long encap_len = 4; // holds the byte order flag + + encap_len += + this->repoID_encap_len (node); // repoID + + // do the same thing for the local name + encap_len += + this->name_encap_len (node); + + // add the encapsulation length of our base type + bt = be_type::narrow_from_decl (node->base_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (typedef) - ") + ASYS_TEXT ("cannot compute tc size\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_tc_size_; + return this->computed_encap_len_; + +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_tc_size (be_union *node) +{ + // while computing the encapsulation length we must keep in mind the typecode + // that has gotten generated until this point. Hence, we must first check the + // "tc_queue" to ensure if are already there somewhere in a previous + // encapsulation in which case we must count only the bytes for the + // indirection. If we are not already generated, we must then check if we + // have already been counted in the current computation or not by checking + // for our presence in the compute queue. In both cases, we only include the + // 8 bytes in the computation + if (this->queue_lookup (this->tc_queue_, node) || + this->queue_lookup (this->compute_queue_, node)) + { + this->computed_tc_size_ = 4 + 4; + } + else + { + if (idl_global->opt_tc () || + node->in_recursion ()) + { + if (this->queue_insert (this->compute_queue_, node, this->tc_offset_) == 0) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_typecode_defn::" + "compute_tc_size (union) - " + "queue insert failed\n"), + -1); + } + } + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAP_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_tc_size (union) - ") + ASYS_TEXT ("cannot compute encap len\n")), + -1); + } + + this->computed_tc_size_ = 4 + 4 + this->computed_encap_len_; + } + return this->computed_tc_size_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_union *node) +{ + be_type *discrim; + + ACE_CDR::Long encap_len = 4; // holds the byte order flag + + encap_len += this->repoID_encap_len (node); // for repoID + + // do the same thing for the local name + encap_len += this->name_encap_len (node); // for name + + // add encapsulation size of discriminant typecode + discrim = be_type::narrow_from_decl (node->disc_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (!discrim || discrim->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (union) - ") + ASYS_TEXT ("cannot compute tc size\n")), + -1); + } + + encap_len += this->computed_tc_size_; + + encap_len += 4; // to hold the "default used" flag + encap_len += 4; // to hold the member count + + // save the current value of scope len and start with a fresh one for our + // scope length computation + if (this->push (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (union) - ") + ASYS_TEXT ("push failed\n")), + -1); + } + this->computed_scope_encap_len_ = 0; + + // compute encap length for members + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN); + if (node->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (union) - ") + ASYS_TEXT ("cannot compute scope tc size\n")), + -1); + } + + this->computed_encap_len_ = encap_len + this->computed_scope_encap_len_; + + // pop off the previous value of computed_scope_len_ + if (this->pop (this->computed_scope_encap_len_) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (union) - ") + ASYS_TEXT ("pop failed\n")), + -1); + } + + return this->computed_encap_len_; +} + + +ACE_CDR::Long +be_visitor_typecode_defn::compute_encap_length (be_union_branch *node) +{ + be_type *bt; + + ACE_CDR::Long encap_len = 0; + + for (unsigned long i = 0; + i < node->label_list_length (); + ++i) + { + encap_len += 4; // case label; + encap_len += + this->name_encap_len (node); // for name + + bt = be_type::narrow_from_decl (node->field_type ()); + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_TC_SIZE); + if (!bt || bt->accept (this) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::compute_encap_len (union branch) - ") + ASYS_TEXT ("cannot compute tc size\n")), + -1); + } + encap_len += this->computed_tc_size_; + } + + this->computed_encap_len_ = encap_len; + + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN); + return this->computed_encap_len_; +} + +// helpers that accomplish a common task - that of generating the repository +// IDs and names in a TypeCode description + +void +be_visitor_typecode_defn::gen_repoID (be_decl *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + int flag = 0; + + // check if we want to generate optimized typecodes. In such a case, there is + // no need to generate the repoID (unless we are an object reference or an + // exception in which case it is mandatory to have the repository ID) + // generate repoID + + if (idl_global->opt_tc ()) + { + switch (node->node_type ()) + { + case AST_Decl::NT_interface: + case AST_Decl::NT_interface_fwd: + case AST_Decl::NT_except: + flag = 0; + break; + case AST_Decl::NT_pre_defined: + if (!ACE_OS::strcmp (node->local_name ()->get_string (), + "Object")) + flag = 0; + else + flag = 1; + break; + default: + flag = 1; + } + } + + // XXXASG -- there is still some doubts in my mind about whether repoID + // *must* be supplied or not as per spec 2.3a. So I am not going to allow + // optimizations here. + // flag = 0; + + if (flag) + { + // optimized case + *os << "1, 0x0,"; + *os << " // repository ID = " << node->repoID (); + // size of the repoID filed + this->tc_offset_ += (2 * sizeof (ACE_CDR::ULong)); + } + else + { + // unoptimized case + *os << (ACE_OS::strlen (node->repoID ()) + 1) << ", "; + + ACE_CDR::ULong *arr, i, arrlen; + (void) this->tc_name2long (node->repoID (), arr, arrlen); + for (i = 0; i < arrlen; i++) + { + os->print ("ACE_NTOHL (0x%x), ", arr[i]); + } + *os << " // repository ID = " << node->repoID (); + // size of the repoID field + this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong); + } + *os << "\n"; + return; +} + +void +be_visitor_typecode_defn::gen_name (be_decl *node) +{ + TAO_OutStream *os = this->ctx_->stream (); + + // generate name + if (idl_global->opt_tc ()) + { + *os << "1, 0x0,"; + *os << " // name = " << node->local_name (); + // size of the name field + this->tc_offset_ += (2 * sizeof (ACE_CDR::ULong)); + } + else + { + ACE_CDR::ULong *arr, i, arrlen; + *os << (ACE_OS::strlen (node->local_name ()->get_string ()) + 1) << ", "; + (void) this->tc_name2long (node->local_name ()->get_string (), arr, arrlen); + for (i = 0; i < arrlen; i++) + { + os->print ("ACE_NTOHL (0x%x), ", arr[i]); + } + *os << " // name = " << node->local_name (); + // size of the name field + this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong); + } + *os << "\n"; + return; +} + +// return the length in bytes to hold the repoID inside a typecode. This +// comprises 4 bytes indicating the length of the string followed by the actual +// string represented as longs. +ACE_CDR::ULong +be_visitor_typecode_defn::repoID_encap_len (be_decl *node) +{ + int flag = 0; + + // check if we want to generate optimized typecodes. In such a case, there is + // no need to generate the repoID (unless we are an object reference or an + // exception in which case it is mandatory to have the repository ID) + // generate repoID + + if (idl_global->opt_tc ()) + { + switch (node->node_type ()) + { + case AST_Decl::NT_interface: + case AST_Decl::NT_interface_fwd: + case AST_Decl::NT_except: + flag = 0; + break; + case AST_Decl::NT_pre_defined: + if (!ACE_OS::strcmp (node->local_name ()->get_string (), + "Object")) + flag = 0; + else + flag = 1; + break; + default: + flag = 1; + } + } + + // XXXASG -- there is still some doubts in my mind about whether repoID + // *must* be supplied or not as per spec 2.3a. So I am not going to allow + // optimizations here. + //flag = 0; + + if (flag) + { + return 4 + 4; + } + else + { + ACE_CDR::ULong slen = ACE_OS::strlen (node->repoID ()) + 1; + // + 1 for NULL terminating char + + // the number of bytes to hold the string must be a multiple of 4 since this + // will be represented as an array of longs + return 4 + 4 * (slen/4 + (slen%4 ? 1:0)); + } +} + +// return the length in bytes to hold the name inside a typecode. This +// comprises 4 bytes indicating the length of the string followed by the actual +// string represented as longs. +ACE_CDR::ULong +be_visitor_typecode_defn::name_encap_len (be_decl *node) +{ + if (idl_global->opt_tc ()) + { + return 4 + 4; + } + else + { + ACE_CDR::ULong slen = + ACE_OS::strlen (node->local_name ()->get_string ()) + 1; + + // the number of bytes to hold the string must be a multiple of 4 since this + // will be represented as an array of longs + return 4 + 4 * (slen/4 + (slen%4 ? 1:0)); + } +} + +// converts a string name into an array of 4 byte longs +int +be_visitor_typecode_defn::tc_name2long (const char *name, + ACE_CDR::ULong *&larr, + ACE_CDR::ULong &arrlen) +{ + const int bytes_per_word = sizeof (ACE_CDR::ULong); + static ACE_CDR::ULong buf [NAMEBUFSIZE]; + ACE_CDR::ULong i, slen; + + slen = ACE_OS::strlen (name) + 1; // 1 for NULL terminating + + // compute the number of bytes necessary to hold the name rounded to + // the next multiple of 4 (i.e., size of long) + arrlen = slen / bytes_per_word + (slen % bytes_per_word ? 1 : 0); + + ACE_OS::memset (buf, 0, sizeof (buf)); + larr = buf; + ACE_OS::memcpy (buf, name, slen); + for (i = 0; i < arrlen; i++) + larr [i] = ACE_HTONL (larr [i]); + return 0; +} + +// post processing +int +be_visitor_typecode_defn::post_process (be_decl *) +{ + if (this->ctx_->sub_state () == TAO_CodeGen::TAO_TC_DEFN_SCOPE_LEN) + { + this->computed_scope_encap_len_ += this->computed_encap_len_; + } + return 0; +} + +// scope stack routines +int +be_visitor_typecode_defn::push (ACE_CDR::Long val) +{ + if (this->index_ >= TAO_BE_VISITOR_TYPECODE_DEFN_MAX_STACK_SIZE) + return -1; + + this->scope_stack_ [++this->index_] = val; + return 0; +} + +int +be_visitor_typecode_defn::pop (ACE_CDR::Long &val) +{ + if (this->index_ < 0) + return -1; + + val = this->scope_stack_[this->index_--]; + return 0; +} + +const be_visitor_typecode_defn::QNode * +be_visitor_typecode_defn:: +queue_insert (ACE_Unbounded_Queue <be_visitor_typecode_defn::QNode *> &queue, + be_type *node, ACE_CDR::Long offset) +{ + be_visitor_typecode_defn::QNode *qnode; + + ACE_NEW_RETURN (qnode, be_visitor_typecode_defn::QNode, 0); + + qnode->node = node; + qnode->offset = offset; + + if (queue.enqueue_tail (qnode) == -1) + { + delete qnode; + ACE_ERROR_RETURN ((LM_ERROR, + ASYS_TEXT ("(%N:%l) be_visitor_typecode_defn") + ASYS_TEXT ("::queue_insert - failed\n")), + 0); + } + + return qnode; +} + +const be_visitor_typecode_defn::QNode * +be_visitor_typecode_defn:: +queue_lookup (ACE_Unbounded_Queue <be_visitor_typecode_defn::QNode *> &queue, + be_type *node) +{ + for (ACE_Unbounded_Queue_Iterator<be_visitor_typecode_defn::QNode *> + iter (queue); + !iter.done (); + iter.advance ()) + { + be_visitor_typecode_defn::QNode **addr, *item; + iter.next (addr); + item = *addr; + + if (!ACE_OS::strcmp (item->node->fullname (), + node->fullname ())) + { + // found + return item; + } + } + + return 0; +} + +void +be_visitor_typecode_defn:: +queue_reset (ACE_Unbounded_Queue <be_visitor_typecode_defn::QNode *> &queue) +{ + while (!queue.is_empty ()) + { + be_visitor_typecode_defn::QNode *qnode; + (void) queue.dequeue_head (qnode); + delete qnode; + } + return; +} diff --git a/TAO/TAO_IDL/be/be_visitor_scope.cpp b/TAO/TAO_IDL/be/be_visitor_scope.cpp index 8ee75eff8df..d7fba5c69c3 100644 --- a/TAO/TAO_IDL/be/be_visitor_scope.cpp +++ b/TAO/TAO_IDL/be/be_visitor_scope.cpp @@ -81,7 +81,7 @@ be_visitor_scope::visit_scope (be_scope *node) this->ctx_->node (bd); this->elem_number_++; - // do any pre processing using the next item info + // Do any pre processing using the next item info. if (this->pre_process (bd) == -1) { delete si; @@ -89,7 +89,9 @@ be_visitor_scope::visit_scope (be_scope *node) "(%N:%l) be_visitor_scope::visit_scope - " "pre processing failed\n"), -1); } - if (bd == 0 || bd->accept (this) == -1) + + // Send the visitor. + if (bd == 0 || bd->accept (this) == -1) { delete si; ACE_ERROR_RETURN ((LM_ERROR, @@ -97,6 +99,8 @@ be_visitor_scope::visit_scope (be_scope *node) "codegen for scope failed\n"), -1); } + + // Do any post processing using this item info. if (this->post_process (bd) == -1) { delete si; diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp index 134201bca63..90db4fab104 100644 --- a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp +++ b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_decl.cpp @@ -45,7 +45,16 @@ be_visitor_typecode_decl::visit_type (be_type *node) { TAO_OutStream *os = this->ctx_->stream (); - // Generate the typecode decl + // Generate the typecode decl. + const char *prefix = 0; + const char *postfix = 0; + + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DECL) + { + prefix = "AMI_"; + postfix = "_Handler"; + } + if (node->is_nested ()) { // we have a scoped name @@ -58,14 +67,14 @@ be_visitor_typecode_decl::visit_type (be_type *node) else *os << "static "; *os << "CORBA::TypeCode_ptr " - << node->tc_name ()->last_component () << ";\n\n"; + << node->tc_name (prefix, postfix)->last_component () << ";\n\n"; } else { // we are in the ROOT scope os->indent (); *os << "extern " << idl_global->export_macro () << " CORBA::TypeCode_ptr " - << " " << node->tc_name ()->last_component () << ";\n\n"; + << " " << node->tc_name (prefix, postfix)->last_component () << ";\n\n"; } return 0; } diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp index de32d73c314..79fd133600f 100644 --- a/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp +++ b/TAO/TAO_IDL/be/be_visitor_typecode/typecode_defn.cpp @@ -119,23 +119,33 @@ be_visitor_typecode_defn::visit_type (be_type *node) -1); } } - + os->indent (); // start from current indentation level - // generate the typecode information here - *os << "static const CORBA::Long _oc_" << node->flatname () << "[] =" - << be_nl; + // Generate the typecode information here + *os << "static const CORBA::Long _oc_"; + + // Flat name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_flatname ("AMI_", "_Handler"); + else + *os << node->flatname (); + + *os << "[] =" << be_nl; *os << "{" << be_idt << "\n"; - // add the sizeof the enum tk_* and the encap length that we do not put into - // this array but which will exist in the CDR buffer + // Add the sizeof the enum tk_* and the encap length that we do not put into + // this array but which will exist in the CDR buffer. this->tc_offset_ = 4 + 4; - - - // note that we just need the parameters here and hence we generate the - // encapsulation for the parameters - this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + + // Note that we just need the parameters here and hence we generate the + // encapsulation for the parameters. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + this->ctx_->sub_state (TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_ENCAPSULATION); + else + this->ctx_->sub_state (TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION); + if (node->accept (this) == -1) { ACE_ERROR_RETURN ((LM_ERROR, @@ -146,8 +156,17 @@ be_visitor_typecode_defn::visit_type (be_type *node) } *os << be_uidt << "};" << be_nl; - *os << "static CORBA::TypeCode _tc_TAO_tc_" << node->flatname () - << " ("; + // Type code definition. + *os << "static CORBA::TypeCode _tc_TAO_tc_"; + + // Flat name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_flatname ("AMI_", "_Handler"); + else + *os << node->flatname (); + + *os << " ("; + switch (node->node_type ()) { case AST_Decl::NT_array: @@ -178,13 +197,31 @@ be_visitor_typecode_defn::visit_type (be_type *node) return -1; // error } - *os << ", sizeof (_oc_" << node->flatname () - << "), (char *) &_oc_" << node->flatname () - << ", 0, sizeof (" << node->name () << "));" << be_nl; + *os << ", sizeof (_oc_"; + + // Flat name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_flatname ("AMI_", "_Handler"); + else + *os << node->flatname (); + + *os << "), (char *) &_oc_"; - // is our enclosing scope a module? We need this check because for + // Flat name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_flatname ("AMI_", "_Handler"); + else + *os << node->flatname (); + + // Name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << ", 0, sizeof (" << node->compute_name ("AMI_", "_Handler") << "));" << be_nl; + else + *os << ", 0, sizeof (" << node->name () << "));" << be_nl; + + // Is our enclosing scope a module? We need this check because for // platforms that support namespaces, the typecode must be declared - // extern + // extern. if (node->is_nested () && node->defined_in ()->scope_node_type () == AST_Decl::NT_module) { @@ -197,9 +234,24 @@ be_visitor_typecode_defn::visit_type (be_type *node) "Error parsing nested name\n"), -1); } - *os << "TAO_NAMESPACE_DEFINE (CORBA::TypeCode_ptr, _tc_" - << node->local_name () << ", &_tc_TAO_tc_" - << node->flatname () << ")" << be_nl; + *os << "TAO_NAMESPACE_DEFINE (CORBA::TypeCode_ptr, _tc_"; + + // Local name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << "AMI_" << node->local_name () << "_Handler"; + else + *os << node->local_name (); + + *os << ", &_tc_TAO_tc_"; + + // Flat name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_flatname ("AMI_", "_Handler"); + else + *os << node->flatname (); + + *os << ")" << be_nl; + if (this->gen_nested_namespace_end (module) == -1) { ACE_ERROR_RETURN ((LM_ERROR, @@ -211,8 +263,23 @@ be_visitor_typecode_defn::visit_type (be_type *node) else { // outermost scope. - *os << "CORBA::TypeCode_ptr " << node->tc_name () << " = &_tc_TAO_tc_" - << node->flatname () << ";\n\n"; + *os << "CORBA::TypeCode_ptr "; + + // Tc name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->tc_name ("AMI_", "_Handler"); + else + *os << node->tc_name (); + + *os << " = &_tc_TAO_tc_"; + + // Flat name generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_flatname ("AMI_", "_Handler"); + else + *os << node->flatname (); + + *os << ";\n\n"; } return 0; } @@ -226,8 +293,10 @@ be_visitor_typecode_defn::visit_array (be_array *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -254,8 +323,10 @@ be_visitor_typecode_defn::visit_enum (be_enum *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -306,8 +377,10 @@ be_visitor_typecode_defn::visit_exception (be_exception *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -354,12 +427,17 @@ be_visitor_typecode_defn::visit_interface (be_interface *node) { switch (this->ctx_->sub_state ()) { + case TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_TYPECODE: case TAO_CodeGen::TAO_TC_DEFN_TYPECODE: return this->visit_type (node); + case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + + case TAO_CodeGen::TAO_AMI_HANDLER_TC_DEFN_ENCAPSULATION: case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -395,8 +473,10 @@ be_visitor_typecode_defn::visit_predefined_type (be_predefined_type *node) break; case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -423,8 +503,10 @@ be_visitor_typecode_defn::visit_sequence (be_sequence *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -453,8 +535,10 @@ be_visitor_typecode_defn::visit_string (be_string *node) break; case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -481,8 +565,10 @@ be_visitor_typecode_defn::visit_structure (be_structure *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -512,8 +598,10 @@ be_visitor_typecode_defn::visit_typedef (be_typedef *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -540,8 +628,10 @@ be_visitor_typecode_defn::visit_union (be_union *node) return this->visit_type (node); case TAO_CodeGen::TAO_TC_DEFN_TYPECODE_NESTED: return this->gen_typecode (node); + case TAO_CodeGen::TAO_TC_DEFN_ENCAPSULATION: return this->gen_encapsulation (node); + case TAO_CodeGen::TAO_TC_DEFN_TC_SIZE: this->computed_tc_size_ = this->compute_tc_size (node); return ((this->computed_tc_size_ > 0) ? 0 : -1); @@ -1079,10 +1169,10 @@ be_visitor_typecode_defn::gen_encapsulation (be_interface *node) // aligned size is 4 bytes this->tc_offset_ += sizeof (ACE_CDR::ULong); - // generate repoID + // generate repoID. this->gen_repoID (node); - // generate name + // generate name. os->indent (); this->gen_name (node); @@ -2784,22 +2874,44 @@ be_visitor_typecode_defn::gen_repoID (be_decl *node) { // optimized case *os << "1, 0x0,"; - *os << " // repository ID = " << node->repoID (); + *os << " // repository ID = "; + + // repoID generation. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << node->compute_repoID ("AMI_", "_Handler"); + else + *os << node->repoID (); + // size of the repoID filed this->tc_offset_ += (2 * sizeof (ACE_CDR::ULong)); } else { - // unoptimized case - *os << (ACE_OS::strlen (node->repoID ()) + 1) << ", "; + // Unoptimized case. + + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << (ACE_OS::strlen (node->compute_repoID ("AMI_", "_Handler")) + 1) << ", "; + else + *os << (ACE_OS::strlen (node->repoID ()) + 1) << ", "; ACE_CDR::ULong *arr, i, arrlen; - (void) this->tc_name2long (node->repoID (), arr, arrlen); + + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + (void) this->tc_name2long (node->compute_repoID ("AMI_", "_Handler"), arr, arrlen); + else + (void) this->tc_name2long (node->repoID (), arr, arrlen); + for (i = 0; i < arrlen; i++) { os->print ("ACE_NTOHL (0x%x), ", arr[i]); } - *os << " // repository ID = " << node->repoID (); + + // Comment. + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << " // repository ID = " << node->compute_repoID ("AMI_", "_Handler"); + else + *os << " // repository ID = " << node->repoID (); + // size of the repoID field this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong); } @@ -2812,7 +2924,10 @@ be_visitor_typecode_defn::gen_name (be_decl *node) { TAO_OutStream *os = this->ctx_->stream (); - // generate name + // @@ AMI code generation should be done for this optimized + // case. (Alex). + + // Generate name. if (idl_global->opt_tc ()) { *os << "1, 0x0,"; @@ -2823,14 +2938,29 @@ be_visitor_typecode_defn::gen_name (be_decl *node) else { ACE_CDR::ULong *arr, i, arrlen; - *os << (ACE_OS::strlen (node->local_name ()->get_string ()) + 1) << ", "; - (void) this->tc_name2long (node->local_name ()->get_string (), arr, arrlen); + + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + { + *os << (ACE_OS::strlen (node->compute_local_name ("AMI_", "_Handler")->get_string ()) + 1) << ", "; + (void) this->tc_name2long (node->compute_local_name ("AMI_", "_Handler")->get_string (), arr, arrlen); + } + else + { + *os << (ACE_OS::strlen (node->local_name ()->get_string ()) + 1) << ", "; + (void) this->tc_name2long (node->local_name ()->get_string (), arr, arrlen); + } + for (i = 0; i < arrlen; i++) { os->print ("ACE_NTOHL (0x%x), ", arr[i]); } - *os << " // name = " << node->local_name (); - // size of the name field + + if (this->ctx_->state () == TAO_CodeGen::TAO_AMI_HANDLER_TYPECODE_DEFN) + *os << " // name = " << node->compute_local_name ("AMI_", "_Handler"); + else + *os << " // name = " << node->local_name (); + + // size of the name field. this->tc_offset_ += (arrlen + 1) * sizeof (ACE_CDR::ULong); } *os << "\n"; diff --git a/TAO/TAO_IDL/be_include/be_codegen.h b/TAO/TAO_IDL/be_include/be_codegen.h index 6786f1cc461..19edeafc611 100644 --- a/TAO/TAO_IDL/be_include/be_codegen.h +++ b/TAO/TAO_IDL/be_include/be_codegen.h @@ -288,19 +288,72 @@ public: // Emitting code for AMI. TAO_OPERATION_AMI_CH, // AMI stub generation. TAO_OPERATION_AMI_CS, // AMI stub generation. - TAO_OPERATION_AMI_ARGLIST, // AMI stubs in client header + TAO_OPERATION_AMI_ARGLIST_CH, // AMI stubs in client header + TAO_OPERATION_AMI_ARGLIST_CS, // AMI stubs in client cpp. TAO_OPERATION_ARG_AMI, // AMI stub. TAO_ARGUMENT_AMI, // Argument in AMI stub. - TAO_ARGUMENT_AMI_ARGLIST, // Arg list in AMI stub. + TAO_ARGUMENT_AMI_ARGLIST_CH, // Arg list in AMI stub. + TAO_ARGUMENT_AMI_ARGLIST_CS, // Arg list in AMI stub. TAO_AMI_HANDLER_FWD_CH, // FWD decl for AMI handler. TAO_AMI_HANDLER_FWD_CI, // FWD decl for AMI handler. - // @ Alex: FWD does nt make sense. - // Should rename it. - TAO_AMI_HANDLER_CH, - TAO_AMI_HANDLER_OPERATION_CH, - TAO_AMI_HANDLER_OPERATION_ARGLIST, - TAO_ARGUMENT_AMI_HANDLER_ARGLIST, + + TAO_AMI_HANDLER_SERVANT_CH, // POA_AMI_*_Handler. + TAO_AMI_HANDLER_SERVANT_CS, // POA_AMI_*_Handler. + + TAO_AMI_HANDLER_STUB_CH, // AMI_*_Handler class visitor. + + TAO_AMI_HANDLER_STUB_CS, // AMI_*_Handler class visitor. + + TAO_AMI_HANDLER_SERVANT_OPERATION_CH, // Operation in AMI_*_Handler. + TAO_AMI_HANDLER_STUB_OPERATION_CH, // Operation in POA_AMI_*_Handler. + TAO_AMI_HANDLER_OPERATION_ARGLIST_CH, + TAO_AMI_HANDLER_OPERATION_ARGLIST_CS, + TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CH, + TAO_ARGUMENT_AMI_HANDLER_ARGLIST_CS, TAO_ARGUMENT_ARGLIST_AMI_HANDLER, + TAO_AMI_HANDLER_OPERATION_RESULT_ARG, + + TAO_AMI_HANDLER_TYPECODE_DECL, // Typecode decl for the AMI_*_Handler. + + TAO_COLLOCATED_AMI_HANDLER_CH, // Collocated AMI_*_Handler class. + + TAO_COLLOCATED_AMI_HANDLER_OPERATION_CH, // Operation inside the collocated AMI handler. + +// @@ Michael TAO_AMI_HANDLER_ARGUMENT_INVOKE_CS, + +// @@ Michael TAO_AMI_HANDLER_OPERATION_ARG_INVOKE_CS, + + TAO_AMI_HANDLER_STUB_OPERATION_CS, + + TAO_AMI_HANDLER_TYPECODE_DEFN, // Typecode definition for AMI Handler class. + + TAO_AMI_OPERATION_ARG_INVOKE_CS, // Invoke arguments for AMI's sendc method. + + TAO_AMI_ARGUMENT_INVOKE_CS, + + TAO_AMI_HANDLER_SKELETON_CS, + + TAO_AMI_HANDLER_OPERATION_RETVAL_DECL_CS, // Result argument declaration. + + TAO_AMI_HANDLER_OPERATION_ARG_DECL_CS, // Argument declartion. + + TAO_AMI_HANDLER_ARGUMENT_VARDECL_CS, // State derived out of the above + + TAO_AMI_HANDLER_OPERATION_ARG_UPCALL_CS, // Argument list for the upcall + // (only out and inout arguments) + TAO_AMI_HANDLER_ARGUMENT_UPCALL_CS, // State derived out of the above + + TAO_AMI_HANDLER_OPERATION_RETVAL_MARSHAL_CS, // Marshalling the return value + + TAO_AMI_HANDLER_OPERATION_RETVAL_DEMARSHAL_CS, // Demarshalling the return value + + TAO_AMI_HANDLER_OPERATION_ARG_MARSHAL_CS, // Marshalling the inout and out arguments + + TAO_AMI_HANDLER_ARGUMENT_MARSHAL_CS, // State derived out of the above + + TAO_AMI_HANDLER_OPERATION_ARG_DEMARSHAL_CS, // Demarshalling the inout and out arguments + + TAO_AMI_HANDLER_ARGUMENT_DEMARSHAL_CS, // State derived out of the above // Emitting code for root. TAO_ROOT_CH, @@ -424,12 +477,17 @@ public: // these are for typecode generation TAO_TC_DEFN_TYPECODE, // top level typecode TAO_TC_DEFN_TYPECODE_NESTED, // nested tc + TAO_TC_DEFN_ENCAPSULATION, // encapsulation + TAO_AMI_HANDLER_TC_DEFN_ENCAPSULATION, // encapsulation + TAO_TC_DEFN_SCOPE, // scope TAO_TC_DEFN_TC_SIZE, // tc size computation TAO_TC_DEFN_ENCAP_LEN, // encap size computation TAO_TC_DEFN_SCOPE_LEN, // scope size computation + TAO_AMI_HANDLER_TC_DEFN_TYPECODE, // For AMI Handler interface. + // used to denote either error or don't care TAO_SUB_STATE_UNKNOWN }; diff --git a/TAO/TAO_IDL/be_include/be_decl.h b/TAO/TAO_IDL/be_include/be_decl.h index cea43133eda..8760544110b 100644 --- a/TAO/TAO_IDL/be_include/be_decl.h +++ b/TAO/TAO_IDL/be_include/be_decl.h @@ -66,15 +66,37 @@ public: const char *fullname (void); // return the stringified full name + const char *ami_handler_fullname (void); + // return the stringified full name of the assosciated AMI reply handler. + const char *flatname (void); - // return the flattened full scoped name + // return the flattened full scoped name. + + const char *ami_handler_flatname (void); + // return the flattened full scoped name of the assosciated AMI reply handler. + char* compute_flatname (const char *prefix, const char *suffix); + // Both the arguments should be non-null!!!. Applies prefix and + // suffix to the local name and makes a flat name. const char *repoID (void); - // retrieve the repository ID + // retrieve the repository ID. + + const char *ami_handler_repoID (void); + // retrieve the repository ID of the assosciated AMI reply handler. + + char *compute_repoID (const char *prefix, const char *suffix); + // Apply the prefix and suffix to the local name and compute the + // repoID. Both the parameters should be non-null. + + int compute_ami_handler_name (const char *name, + char *&ami_handler_name); + // Computes the name of the corresponding AMI handler out of a + // given name. The name might contain POA_ at the beginning + // and might possibly have many scope levels. const char* prefix (void); - // retrive the repository ID prefix + // retrieve the repository ID prefix virtual idl_bool is_nested (void); // determines if we are inside of a nested scope or not @@ -160,13 +182,21 @@ protected: char *fullname_; // our full scoped name + char *ami_handler_fullname_; + // our full scoped name of the associated AMI reply handler + char *flatname_; // flattened fully scoped name + char *ami_handler_flatname_; + // flattened fully scoped name of the associated AMI reply handler char *repoID_; // repository ID + char *ami_handler_repoID_; + // repository ID of the associated AMI reply handler + char *prefix_; // The repository ID prefix diff --git a/TAO/TAO_IDL/be_include/be_interface.h b/TAO/TAO_IDL/be_include/be_interface.h index 4f408ad8393..e47fece8262 100644 --- a/TAO/TAO_IDL/be_include/be_interface.h +++ b/TAO/TAO_IDL/be_include/be_interface.h @@ -90,6 +90,9 @@ public: const char *full_skel_name (void); // Retrieve the fully scoped skel class name. + const char *ami_handler_full_skel_name (void); + // Retrieve the fully scoped skel AMI handler class name + // // Each interface (to fix names "T") also defines two help classes, // the "collocated" class inherits from T, but delegates on the @@ -102,10 +105,26 @@ public: // @@ TODO currently the stub class is not implemented. // const char *full_coll_name (int); - // retrieve the fully qualified collocated class name + // Retrieve the fully qualified collocated class name + + const char *ami_handler_full_coll_name (void); + // Retrieve the fully qualified collocated AMI handler class name const char *local_coll_name (int) const; - // retrieve the fully qualified collocated class name + // Retrieve the fully qualified collocated class name. + + const char *ami_handler_local_coll_name (void); + // Retrieve the fully qualified collocated AMI handler class name. + + const char *ami_handler_local_name (void); + // Retrieve the local name of the AMI handler + + int compute_coll_names (const char *local_name, + char *&coll_local_name, + char *&coll_full_name); + // Generate collocated local and full names for the arbitrary local + // name under the scope of this interface. Usefull to generate AMI + // Handlers. virtual int traverse_inheritance_graph (tao_code_emitter gen, TAO_OutStream *os); @@ -233,14 +252,26 @@ private: char *full_skel_name_; // Fully scoped skeleton name. + char *ami_handler_full_skel_name_; + // Fully scoped AMI Handler skeleton name + int skel_count_; // Number of static skeletons in the operation table. char *full_coll_name_; - // full collocated name + // Full collocated name + + char *ami_handler_full_coll_name_; + // Full collocated name of the AMI handler char *local_coll_name_; - // local collocated name + // Local collocated name + + char *ami_handler_local_coll_name_; + // Local collocated name of the AMI handler + + char *ami_handler_local_name_; + // Local name of the AMI Handler int in_mult_inheritance_; // am I directly or indirectly involved in a multiple inheritance. If the diff --git a/TAO/TAO_IDL/be_include/be_type.h b/TAO/TAO_IDL/be_include/be_type.h index 61d10187d47..f1b16123b58 100644 --- a/TAO/TAO_IDL/be_include/be_type.h +++ b/TAO/TAO_IDL/be_include/be_type.h @@ -64,8 +64,12 @@ public: // If any one of the argument is 0, then use the name giin this // node, else use the arguments. ); - UTL_ScopedName *tc_name (void); - // return the typecode name + UTL_ScopedName *tc_name (const char *prefix = 0, + const char *suffix = 0); + // Return the typecode name. When both, the prefix and the suffix + // are non null, it computes and returns a tc name. Else, it also + // stores the result in a member variable. + virtual const char *nested_type_name (be_decl *d, const char *suffix = 0, @@ -94,6 +98,10 @@ protected: virtual void compute_tc_name (void); // computes the fully scoped typecode name + virtual UTL_ScopedName * compute_tc_name (const char *prefix, + const char *suffix); + // Compute and return the value. + UTL_ScopedName *tc_name_; // typecode name diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument.h b/TAO/TAO_IDL/be_include/be_visitor_argument.h index 0f9fdf3a6f4..78f39acb854 100644 --- a/TAO/TAO_IDL/be_include/be_visitor_argument.h +++ b/TAO/TAO_IDL/be_include/be_visitor_argument.h @@ -41,4 +41,9 @@ #include "be_visitor_argument/pre_invoke_cs.h" #include "be_visitor_argument/ami_arglist.h" #include "be_visitor_argument/ami_handler_arglist.h" +#include "be_visitor_argument/ami_handler_result_arg.h" +#include "be_visitor_argument/ami_handler_compiled_marshal_cs.h" +#include "be_visitor_argument/ami_handler_upcall_cs.h" +#include "be_visitor_argument/ami_handler_vardecl_cs.h" + #endif /* _BE_VISITOR_ARGUMENT_H */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h new file mode 100644 index 00000000000..11d8bef925f --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_compiled_marshal_cs.h @@ -0,0 +1,89 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_compiled_marshal_cs.h +// +// = DESCRIPTION +// Visitors for generation of code for Arguments for passing the arguments +// to the CDR << and >> operators +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_VISITOR_ARGUMENT_ami_handler_compiled_marshal_cs_H_ +#define _BE_VISITOR_ARGUMENT_ami_handler_compiled_marshal_cs_H_ + +// ************************************************************ +// class be_visitor_args_ami_handler_compiled_marshal_cs +// ************************************************************ +class be_visitor_args_ami_handler_compiled_marshal_cs : public be_visitor_args +{ + // + // = TITLE + // be_visitor_args_ami_handler_compiled_marshal_cs + // + // = DESCRIPTION + // Code to be generated when making the do_static_call + // +public: + be_visitor_args_ami_handler_compiled_marshal_cs (be_visitor_context *ctx); + // constructor + + virtual ~be_visitor_args_ami_handler_compiled_marshal_cs (void); + // destructor + + virtual int visit_argument (be_argument *node); + // visit the argument node + + // =visit all the nodes that can be the types for the argument + + virtual int visit_array (be_array *node); + // visit array type + + virtual int visit_enum (be_enum *node); + // visit the enum node + + virtual int visit_interface (be_interface *node); + // visit interface + + virtual int visit_interface_fwd (be_interface_fwd *node); + // visit interface forward + +#ifdef IDL_HAS_VALUETYPE + virtual int visit_valuetype (be_valuetype *node); + // visit valuetype + + virtual int visit_valuetype_fwd (be_valuetype_fwd *node); + // visit valuetype forward +#endif /* IDL_HAS_VALUETYPE */ + + virtual int visit_predefined_type (be_predefined_type *node); + // visit predefined type + + virtual int visit_sequence (be_sequence *node); + // visit sequence type + + virtual int visit_string (be_string *node); + // visit string type + + virtual int visit_structure (be_structure *node); + // visit structure type + + virtual int visit_union (be_union *node); + // visit union type + + virtual int visit_typedef (be_typedef *node); + // visit the typedef type + +}; + +#endif /* _BE_VISITOR_ARGUMENT_ami_handler_compiled_marshal_cs_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h new file mode 100644 index 00000000000..67e4d85b4a7 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_result_arg.h @@ -0,0 +1,86 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_result_arg.h +// +// = DESCRIPTION +// Visitor for generating code for IDL operations. This generates the return +// type of the operation +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_VISITOR_ARGS_AMI_HANDLER_RESULT_ARG_H_ +#define _BE_VISITOR_ARGS_AMI_HANDLER_RESULT_ARG_H_ + +// *********************************************************************** +// Operation visitor for return types in the signature of the operation +// *********************************************************************** + +class be_visitor_args_ami_handler_result_arg : public be_visitor_args +{ + // + // = TITLE + // be_visitor_args_ch + // + // = DESCRIPTION + // This is a visitor to generate operation return types + // + // +public: + be_visitor_args_ami_handler_result_arg (be_visitor_context *ctx); + // constructor + + ~be_visitor_args_ami_handler_result_arg (void); + // destructor + + int visit_array (be_array *node); + // visit an array node + + int visit_enum (be_enum *node); + // visit an enum node + + int visit_interface (be_interface *node); + // visit an interface node + + int visit_interface_fwd (be_interface_fwd *node); + // visit an interface node + + int visit_native (be_native *node); + // visit native type + + int visit_predefined_type (be_predefined_type *node); + // visit a predefined type node + + int visit_sequence (be_sequence *node); + // visit a sequence node + + int visit_string (be_string *node); + // visit a sequence node + + int visit_structure (be_structure *node); + // visit a structure node + + int visit_typedef (be_typedef *node); + // visit a typedef node + + int visit_union (be_union *node); + // visit a union node + +# ifdef IDL_HAS_VALUETYPE + int visit_valuetype (be_valuetype *node); + int visit_valuetype_fwd (be_valuetype_fwd *node); +# endif /* IDL_HAS_VALUETYPE */ + +}; + +#endif /* _BE_VISITOR_ARGS_AMI_HANDLER_RESULT_ARG_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h new file mode 100644 index 00000000000..a1da8fe0ed2 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_upcall_cs.h @@ -0,0 +1,90 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_upcall_cs.h +// +// = DESCRIPTION +// Visitors for generation of code for Arguments. This generates the +// passing of arguments to the upcall. +// +// = AUTHOR +// Aniruddha Gokhale +// Michael Kircher +// +// ============================================================================ + +#ifndef _BE_VISITOR_ARGUMENT_upcall_cs_H_ +#define _BE_VISITOR_ARGUMENT_upcall_cs_H_ + +// ************************************************************ +// class be_visitor_args_ami_handler_upcall_cs +// ************************************************************ +class be_visitor_args_ami_handler_upcall_cs : public be_visitor_args +{ + // + // = TITLE + // be_visitor_args_ami_handler_upcall_cs + // + // = DESCRIPTION + // Visitor for passing argument to the upcall + // +public: + be_visitor_args_ami_handler_upcall_cs (be_visitor_context *ctx); + // constructor + + virtual ~be_visitor_args_ami_handler_upcall_cs (void); + // destructor + + virtual int visit_argument (be_argument *node); + // visit the argument node + + // =visit all the nodes that can be the types for the argument + + virtual int visit_array (be_array *node); + // visit array type + + virtual int visit_enum (be_enum *node); + // visit the enum node + + virtual int visit_interface (be_interface *node); + // visit interface + + virtual int visit_interface_fwd (be_interface_fwd *node); + // visit interface forward + +#ifdef IDL_HAS_VALUETYPE + virtual int visit_valuetype (be_valuetype *node); + // visit valuetype + + virtual int visit_valuetype_fwd (be_valuetype_fwd *node); + // visit valuetype forward +#endif /* IDL_HAS_VALUETYPE */ + + virtual int visit_predefined_type (be_predefined_type *node); + // visit predefined type + + virtual int visit_sequence (be_sequence *node); + // visit sequence type + + virtual int visit_string (be_string *node); + // visit string type + + virtual int visit_structure (be_structure *node); + // visit structure type + + virtual int visit_union (be_union *node); + // visit union type + + virtual int visit_typedef (be_typedef *node); + // visit the typedef type + +}; + +#endif /* _BE_VISITOR_ARGUMENT_upcall_cs_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h new file mode 100644 index 00000000000..fd2d80db63f --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_argument/ami_handler_vardecl_cs.h @@ -0,0 +1,126 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_vardecl_cs.h +// +// = DESCRIPTION +// Visitors for generation of code for Arguments. This generates the +// variable declartion for the argument in the server-sde skeleton +// +// = AUTHOR +// Aniruddha Gokhale +// Michael Kircher +// +// ============================================================================ + +#ifndef _BE_VISITOR_ARGUMENT_ami_handler_vardecl_cs_H_ +#define _BE_VISITOR_ARGUMENT_ami_handler_vardecl_cs_H_ + +// ************************************************************ +// class be_visitor_args_ami_handler_vardecl_cs +// ************************************************************ +class be_visitor_args_ami_handler_vardecl_cs : public be_visitor_args +{ + // + // = TITLE + // be_visitor_args_ami_handler_vardecl_cs + // + // = DESCRIPTION + // Visitor for variable declaration for argument + // +public: + be_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx); + // constructor + + virtual ~be_visitor_args_ami_handler_vardecl_cs (void); + // destructor + + virtual int visit_argument (be_argument *node); + // visit the argument node + + // =visit all the nodes that can be the types for the argument + + virtual int visit_array (be_array *node); + // visit array type + + virtual int visit_enum (be_enum *node); + // visit the enum node + + virtual int visit_interface (be_interface *node); + // visit interface + + virtual int visit_interface_fwd (be_interface_fwd *node); + // visit interface forward + +#ifdef IDL_HAS_VALUETYPE + virtual int visit_valuetype (be_valuetype *node); + // visit valuetype + + virtual int visit_valuetype_fwd (be_valuetype_fwd *node); + // visit valuetype forward +#endif /* IDL_HAS_VALUETYPE */ + + virtual int visit_predefined_type (be_predefined_type *node); + // visit predefined type + + virtual int visit_sequence (be_sequence *node); + // visit sequence type + + virtual int visit_string (be_string *node); + // visit string type + + virtual int visit_structure (be_structure *node); + // visit structure type + + virtual int visit_union (be_union *node); + // visit union type + + virtual int visit_typedef (be_typedef *node); + // visit the typedef type + +}; + +// ************************************************************ +// class be_compiled_visitor_args_ami_handler_vardecl_cs +// ************************************************************ +class be_compiled_visitor_args_ami_handler_vardecl_cs : public be_visitor_args_ami_handler_vardecl_cs +{ + // + // = TITLE + // be_compiled_visitor_args_ami_handler_vardecl_cs + // + // = DESCRIPTION + // Visitor for variable declaration for argument for compiled marshaling + // skeletons + // +public: + be_compiled_visitor_args_ami_handler_vardecl_cs (be_visitor_context *ctx); + // constructor + + virtual ~be_compiled_visitor_args_ami_handler_vardecl_cs (void); + // destructor + + virtual int visit_interface (be_interface *node); + // visit interface + + virtual int visit_interface_fwd (be_interface_fwd *node); + // visit interface forward + +#ifdef IDL_HAS_VALUETYPE + virtual int visit_valuetype (be_valuetype *node); + // visit valuetype + + virtual int visit_valuetype_fwd (be_valuetype_fwd *node); + // visit valuetype forward +#endif /* IDL_HAS_VALUETYPE */ + +}; + +#endif /* _BE_VISITOR_ARGUMENT_ami_handler_vardecl_cs_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface.h b/TAO/TAO_IDL/be_include/be_visitor_interface.h index af9dca32cb8..e35aed8ac7b 100644 --- a/TAO/TAO_IDL/be_include/be_visitor_interface.h +++ b/TAO/TAO_IDL/be_include/be_visitor_interface.h @@ -45,5 +45,10 @@ #include "be_visitor_interface/tie_si.h" #include "be_visitor_interface/ami_handler_fwd_ch.h" #include "be_visitor_interface/ami_handler_fwd_ci.h" -#include "be_visitor_interface/ami_handler_ch.h" +#include "be_visitor_interface/ami_handler_servant_ch.h" +#include "be_visitor_interface/ami_handler_servant_cs.h" +#include "be_visitor_interface/ami_handler_stub_ch.h" +#include "be_visitor_interface/ami_handler_stub_cs.h" +#include "be_visitor_interface/collocated_ami_handler_ch.h" + #endif /* _BE_VISITOR_INTERFACE_H */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h new file mode 100644 index 00000000000..00f3472e5d2 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_cs.h @@ -0,0 +1,46 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_cs.h +// +// = DESCRIPTION +// Concrete visitor for the Interface node. +// This one provides code generation for interfaces in the client stubs. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_INTERFACE_AMI_HANDLER_CS_H_ +#define _BE_INTERFACE_AMI_HANDLER_CS_H_ + +class be_visitor_ami_handler_cs : public be_visitor_interface +{ + // + // = TITLE + // be_visitor_ami_handler_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the AMI Handler + // skeletons for interface. + // +public: + be_visitor_ami_handler_cs (be_visitor_context *ctx); + // constructor + + ~be_visitor_ami_handler_cs (void); + // destructor + + virtual int visit_interface (be_interface *node); + // set the right context and make a visitor +}; + +#endif /* _BE_INTERFACE_AMI_HANDLER_CS_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h new file mode 100644 index 00000000000..8bc8857ed4f --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_ch.h @@ -0,0 +1,47 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_servant_ch.h +// +// = DESCRIPTION +// Concrete visitor for the Interface node. +// This provides for code generation in the server header +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#ifndef _BE_INTERFACE_AMI_HANDLER_SERVANT_CH_H_ +#define _BE_INTERFACE_AMI_HANDLER_SERVANT_CH_H_ + +class be_visitor_interface_ami_handler_servant_ch : public be_visitor_interface +{ + // + // = TITLE + // be_visitor_interface_ami_handler_servant_ch + // + // = DESCRIPTION + // This is a concrete visitor to generate the server header for interface + // + // +public: + be_visitor_interface_ami_handler_servant_ch (be_visitor_context *ctx); + // constructor + + ~be_visitor_interface_ami_handler_servant_ch (void); + // destructor + + virtual int visit_interface (be_interface *node); + // set the right context and make a visitor +}; + +#endif /* _BE_INTERFACE_AMI_HANDLER_SERVANT_CH_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h new file mode 100644 index 00000000000..71a082763e4 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_servant_cs.h @@ -0,0 +1,46 @@ +// $Id$ +// +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_servant_cs.h +// +// = DESCRIPTION +// Concrete visitor for the Interface node. +// This provides for code generation in the server skeleton +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_INTERFACE_INTERFACE_AMI_HANDLER_SERVANT_CS_H_ +#define _BE_INTERFACE_INTERFACE_AMI_HANDLER_SERVANT_CS_H_ + +class be_visitor_interface_ami_handler_servant_cs : public be_visitor_interface +{ + // + // = TITLE + // be_visitor_interface_ami_handler_servant_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the server skeletons for interface + // + // +public: + be_visitor_interface_ami_handler_servant_cs (be_visitor_context *ctx); + // constructor + + ~be_visitor_interface_ami_handler_servant_cs (void); + // destructor + + virtual int visit_interface (be_interface *node); + // set the right context and make a visitor +}; + +#endif /* _BE_INTERFACE_INTERFACE_AMI_HANDLER_SERVANT_CS_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h new file mode 100644 index 00000000000..149201d00db --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_ch.h @@ -0,0 +1,50 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_stub_ch.h +// +// = DESCRIPTION +// Concrete visitor for the Interface node. +// This one provides code generation for interfaces in the client header. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#ifndef _BE_INTERFACE_AMI_HANDLER_STUB_CH_H_ +#define _BE_INTERFACE_AMI_HANDLER_STUB_CH_H_ + +// we need derived interface visitors for the client and server header files. For +// the others, they use the default interface visitor + +class be_visitor_interface_ami_handler_stub_ch : public be_visitor_interface +{ + // + // = TITLE + // be_visitor_ami_handler_stub_ch + // + // = DESCRIPTION + // This is a concrete visitor to generate the client header for + // interface. + // +public: + be_visitor_interface_ami_handler_stub_ch (be_visitor_context *ctx); + // constructor + + ~be_visitor_interface_ami_handler_stub_ch (void); + // destructor + + virtual int visit_interface (be_interface *node); + // set the right context and make a visitor +}; + +#endif /* _BE_INTERFACE_AMI_HANDLER_STUB_CH_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h new file mode 100644 index 00000000000..3af5f1a4720 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_interface/ami_handler_stub_cs.h @@ -0,0 +1,46 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_cs.h +// +// = DESCRIPTION +// Concrete visitor for the Interface node. +// This one provides code generation for interfaces in the client stubs. +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_INTERFACE_AMI_HANDLER_CS_H_ +#define _BE_INTERFACE_AMI_HANDLER_CS_H_ + +class be_visitor_interface_ami_handler_stub_cs : public be_visitor_interface +{ + // + // = TITLE + // be_visitor_interface_ami_handler_stub_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the AMI Handler + // skeletons for interface. + // +public: + be_visitor_interface_ami_handler_stub_cs (be_visitor_context *ctx); + // constructor + + ~be_visitor_interface_ami_handler_stub_cs (void); + // destructor + + virtual int visit_interface (be_interface *node); + // set the right context and make a visitor +}; + +#endif /* _BE_INTERFACE_AMI_HANDLER_CS_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h b/TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h new file mode 100644 index 00000000000..d20938a046c --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_interface/collocated_ami_handler_ch.h @@ -0,0 +1,42 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// collocated_ami_handler_ch.h +// +// = DESCRIPTION +// Concrete visitor for the Interface node. +// This provides code generation for collocated classes in server header +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_INTERFACE_COLLOCATED_AMI_HANDLER_CH_H_ +#define _BE_INTERFACE_COLLOCATED_AMI_HANDLER_CH_H_ + +class be_visitor_interface_collocated_ami_handler_ch : public be_visitor_interface +{ + // = TITLE + // Generate the "collocated" class declaration. + +public: + be_visitor_interface_collocated_ami_handler_ch (be_visitor_context *ctx); + // constructor + + virtual ~be_visitor_interface_collocated_ami_handler_ch (void); + // destructor + + virtual int visit_interface (be_interface *node); + // visit an interface + +}; + +#endif /* _BE_INTERFACE_COLLOCATED_AMI_HANDLER_CH_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation.h b/TAO/TAO_IDL/be_include/be_visitor_operation.h index e195f96d8a0..e19952ca92d 100644 --- a/TAO/TAO_IDL/be_include/be_visitor_operation.h +++ b/TAO/TAO_IDL/be_include/be_visitor_operation.h @@ -60,4 +60,7 @@ #include "be_visitor_operation/ami_arglist.h" #include "be_visitor_operation/ami_handler_operation_ch.h" #include "be_visitor_operation/ami_handler_arglist.h" +#include "be_visitor_operation/ami_handler_operation_cs.h" +#include "be_visitor_operation/ami_handler_skeleton_cs.h" +#include "be_visitor_operation/ami_handler_argument_marshal.h" #endif // TAO_BE_VISITOR_OPERATION_H diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h index c3bbc7aaedc..9e0ceb2c62d 100644 --- a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h +++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_arglist.h @@ -43,6 +43,14 @@ public: ~be_visitor_operation_ami_handler_arglist (void); // destructor + virtual int visit_scope (be_scope *node); + // Visit the scope and its elements. + // This implementation is the same as + // <be_visitor_scope::visit_scope>. The variation is that it calls the + // <post_process> only if the return value of the <accept> is 1. We + // need to do this since we have to differentiate between an argument + // that was printed and an argument that was skipped in the signature. + virtual int visit_operation (be_operation *node); // visit the operation diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h new file mode 100644 index 00000000000..1697ff6cdd0 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_argument_marshal.h @@ -0,0 +1,67 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_argument_marshal.h +// +// = DESCRIPTION +// Visitor for generating code for IDL operations. This is a visitor for +// passing arguments to the CDR operators in a compiled marshaling +// stub/skeleton +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_VISITOR_OPERATION_ami_handler_argument_marshal_H_ +#define _BE_VISITOR_OPERATION_ami_handler_argument_marshal_H_ + +// ************************************************************ +// generic operation visitor for docall, upcall, pre/post +// ************************************************************ + +class be_compiled_visitor_operation_ami_handler_argument_marshal + : public be_visitor_operation_argument +{ + // + // = TITLE + // be_compiled_visitor_operation_ami_handler_argument_marshal + // + // = DESCRIPTION + // This is a visitor to generate a variable declaration of an operation + // return type + // +public: + be_compiled_visitor_operation_ami_handler_argument_marshal (be_visitor_context *ctx); + // constructor + + ~be_compiled_visitor_operation_ami_handler_argument_marshal (void); + // destructor + + virtual int pre_process (be_decl *bd); + // stuff to o/p before each element of the scope is handled + + virtual int post_process (be_decl *bd); + // stuff to o/p after each element of the scope is handled + + enum LAST_ARG_PRINTED + { + TAO_ARG_NONE, + TAO_ARG_IN, + TAO_ARG_INOUT, + TAO_ARG_OUT + }; + +private: + LAST_ARG_PRINTED last_arg_printed_; +}; + + +#endif /* _BE_VISITOR_OPERATION_ami_handler_argument_marshal_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h new file mode 100644 index 00000000000..cb7640b40b0 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation.h @@ -0,0 +1,52 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_operation_ch.h +// +// = DESCRIPTION +// Visitor for generating code for AMI Handler call back operations +// in client header. +// +// = AUTHOR +// Aniruddha Gokhale and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#ifndef _BE_VISITOR_OPERATION_AMI_HANDLER_OPERATION_CH_H_ +#define _BE_VISITOR_OPERATION_AMI_HANDLER_OPERATION_CH_H_ + +// ************************************************************ +// Operation visitor for server header +// ************************************************************ + +class be_visitor_operation_ami_handler_operation_ch : public be_visitor_operation +{ + // + // = TITLE + // be_visitor_ami_handler_operation_ch + // + // = DESCRIPTION + // This is a concrete visitor to generate the server header for operation + // + // +public: + be_visitor_operation_ami_handler_operation_ch (be_visitor_context *ctx); + // constructor + + ~be_visitor_operation_ami_handler_operation_ch (void); + // destructor + + virtual int visit_operation (be_operation *node); + // visit operation. + +}; + +#endif /* _BE_VISITOR_OPERATION_AMI_HANDLER_OPERATION_CH_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h new file mode 100644 index 00000000000..139cc1ecd37 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_operation_cs.h @@ -0,0 +1,126 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// operation_ami_handler_operation_cs.h +// +// = DESCRIPTION +// Visitor for generating code for IDL operations in client stubs +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_OPERATION_CS_H_ +#define _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_OPERATION_CS_H_ + +// ************************************************************ +// Operation visitor for client stubs +// ************************************************************ + +class be_visitor_operation_ami_handler_operation_cs : public be_visitor_operation +{ + // + // = TITLE + // be_visitor_operation_ami_handler_operation_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the client stubs for operation + // + // +public: + be_visitor_operation_ami_handler_operation_cs (be_visitor_context *ctx); + // constructor + + ~be_visitor_operation_ami_handler_operation_cs (void); + // destructor + + virtual int visit_operation (be_operation *node); + // visit operation. + + virtual int visit_argument (be_argument *node); + // visit argument to generate ParamData entries + + // = template methods + virtual int gen_pre_stub_info (be_operation *, be_type *) = 0; + // generate any info before the actual code for the stub is generated + + virtual int gen_marshal_and_invoke (be_operation *, be_type *) = 0; + // generate code that marshals the arguments and transmits them + + // =helper + virtual int post_process (be_decl *); + // stuff to output after every member of the scope is handled + + virtual int gen_raise_exception (be_type *, + const char * excep, + const char * status); + // helper that generates code for raising an exception + + virtual int gen_check_exception (be_type *); + // helper that generates code for checking for an exception + +}; + +// specialized visitors + +class be_interpretive_visitor_operation_ami_handler_operation_cs : public be_visitor_operation_ami_handler_operation_cs +{ + // + // = TITLE + // be_interpretive_visitor_operation_ami_handler_operation_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the client stubs for operation + // using interpretive marshaling. + // + // +public: + be_interpretive_visitor_operation_ami_handler_operation_cs (be_visitor_context *); + // ctor + + ~be_interpretive_visitor_operation_ami_handler_operation_cs (void); + // dtor + + virtual int gen_pre_stub_info (be_operation *, be_type *); + // generate any info before the actual code for the stub is generated + + virtual int gen_marshal_and_invoke (be_operation *, be_type *); + // generate code that marshals the arguments and transmits them + +}; + +class be_compiled_visitor_operation_ami_handler_operation_cs : public be_visitor_operation_ami_handler_operation_cs +{ + // + // = TITLE + // be_compiled_visitor_operation_ami_handler_operation_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the client stubs for operation + // using compiled marshaling. + // + // +public: + be_compiled_visitor_operation_ami_handler_operation_cs (be_visitor_context *); + // ctor + + ~be_compiled_visitor_operation_ami_handler_operation_cs (void); + // dtor + + virtual int gen_pre_stub_info (be_operation *, be_type *); + // generate any info before the actual code for the stub is generated + + virtual int gen_marshal_and_invoke (be_operation *, be_type *); + // generate code that marshals the arguments and transmits them + +}; + +#endif /* _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_OPERATION_CS_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h new file mode 100644 index 00000000000..4405174311f --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_result_arg.h @@ -0,0 +1,86 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// ami_handler_result_arg.h +// +// = DESCRIPTION +// Visitor for generating code for IDL operations. This generates the return +// type of the operation +// +// = AUTHOR +// Aniruddha Gokhale +// +// ============================================================================ + +#ifndef _BE_VISITOR_OPERATION_AMI_HANDLER_RESULT_ARG_H_ +#define _BE_VISITOR_OPERATION_AMI_HANDLER_RESULT_ARG_H_ + +// *********************************************************************** +// Operation visitor for return types in the signature of the operation +// *********************************************************************** + +class be_visitor_operation_ami_handler_result_arg : public be_visitor_decl +{ + // + // = TITLE + // be_visitor_operation_ch + // + // = DESCRIPTION + // This is a visitor to generate operation return types + // + // +public: + be_visitor_operation_ami_handler_result_arg (be_visitor_context *ctx); + // constructor + + ~be_visitor_operation_ami_handler_result_arg (void); + // destructor + + int visit_array (be_array *node); + // visit an array node + + int visit_enum (be_enum *node); + // visit an enum node + + int visit_interface (be_interface *node); + // visit an interface node + + int visit_interface_fwd (be_interface_fwd *node); + // visit an interface node + + int visit_native (be_native *node); + // visit native type + + int visit_predefined_type (be_predefined_type *node); + // visit a predefined type node + + int visit_sequence (be_sequence *node); + // visit a sequence node + + int visit_string (be_string *node); + // visit a sequence node + + int visit_structure (be_structure *node); + // visit a structure node + + int visit_typedef (be_typedef *node); + // visit a typedef node + + int visit_union (be_union *node); + // visit a union node + +# ifdef IDL_HAS_VALUETYPE + int visit_valuetype (be_valuetype *node); + int visit_valuetype_fwd (be_valuetype_fwd *node); +# endif /* IDL_HAS_VALUETYPE */ + +}; + +#endif /* _BE_VISITOR_OPERATION_AMI_HANDLER_RESULT_ARG_H_ */ diff --git a/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h new file mode 100644 index 00000000000..ee6fe758b53 --- /dev/null +++ b/TAO/TAO_IDL/be_include/be_visitor_operation/ami_handler_skeleton_cs.h @@ -0,0 +1,129 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// operation_ami_handler_skeleton_cs.h +// +// = DESCRIPTION +// Visitor for generating code skelton code for IDL operations +// of AMI Reply Handlers. +// +// = AUTHOR +// Michael Kircher +// +// ============================================================================ + +#ifndef _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_SKELETON_CS_H_ +#define _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_SKELETON_CS_H_ + +// ************************************************************ +// Operation visitor for client stubs +// ************************************************************ + +class be_visitor_operation_ami_handler_skeleton_cs : public be_visitor_operation +{ + // + // = TITLE + // be_visitor_operation_ami_handler_operation_cs + // + // = DESCRIPTION + // Visitor for generating code skelton code for IDL operations + // of AMI Reply Handlers. + // + // +public: + be_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *ctx); + // constructor + + ~be_visitor_operation_ami_handler_skeleton_cs (void); + // destructor + + virtual int visit_operation (be_operation *node); + // visit operation. + + virtual int visit_argument (be_argument *node); + // visit argument to generate ParamData entries + + // = template methods + virtual int gen_pre_stub_info (be_operation *, be_type *) = 0; + // generate any info before the actual code for the stub is generated + + virtual int gen_marshal_and_invoke (be_operation *, be_type *) = 0; + // generate code that marshals the arguments and transmits them + + // =helper + virtual int post_process (be_decl *); + // stuff to output after every member of the scope is handled + + virtual int gen_raise_exception (be_type *, + const char * excep, + const char * status); + // helper that generates code for raising an exception + + virtual int gen_check_exception (be_type *); + // helper that generates code for checking for an exception + +}; + +// specialized visitors + +class be_interpretive_visitor_operation_ami_handler_skeleton_cs : public be_visitor_operation_ami_handler_skeleton_cs +{ + // + // = TITLE + // be_interpretive_visitor_operation_ami_skeleton_operation_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the client skeletons + // for AMI reply handlers of IDL operations using interpretive marshaling. + // + // +public: + be_interpretive_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *); + // ctor + + ~be_interpretive_visitor_operation_ami_handler_skeleton_cs (void); + // dtor + + virtual int gen_pre_stub_info (be_operation *, be_type *); + // generate any info before the actual code for the stub is generated + + virtual int gen_marshal_and_invoke (be_operation *, be_type *); + // generate code that marshals the arguments and transmits them + +}; + +class be_compiled_visitor_operation_ami_handler_skeleton_cs : public be_visitor_operation_ami_handler_skeleton_cs +{ + // + // = TITLE + // be_compiled_visitor_operation_ami_handler_skeleton_cs + // + // = DESCRIPTION + // This is a concrete visitor to generate the client skeletons + // for AMI reply handlers of IDL operations using compiled marshaling. + // + // +public: + be_compiled_visitor_operation_ami_handler_skeleton_cs (be_visitor_context *); + // ctor + + ~be_compiled_visitor_operation_ami_handler_skeleton_cs (void); + // dtor + + virtual int gen_pre_stub_info (be_operation *, be_type *); + // generate any info before the actual code for the stub is generated + + virtual int gen_marshal_and_invoke (be_operation *, be_type *); + // generate code that marshals the arguments and transmits them + +}; + + +#endif /* _BE_VISITOR_OPERATION_OPERATION_AMI_HANDLER_SKELETON_CS_H_ */ diff --git a/TAO/TAO_IDL/include/ast_decl.h b/TAO/TAO_IDL/include/ast_decl.h index 69f48e0ff58..a455914f445 100644 --- a/TAO/TAO_IDL/include/ast_decl.h +++ b/TAO/TAO_IDL/include/ast_decl.h @@ -148,11 +148,20 @@ public: void set_line(long l); UTL_String *file_name(); void set_file_name(UTL_String *s); + UTL_ScopedName *name(); + + UTL_ScopedName *compute_name (const char *prefix, const char *suffix); + // Variation of the <name>. Computes scoped name string, applying + // prefix and suffix to the local name component. + void set_name(UTL_ScopedName *n); Identifier *local_name (); + Identifier *compute_local_name (const char *prefix, const char *sufix); + // Apply prefix and suffix to the local name and return. + // // If there is _cxx_ in the beginning, we will remove that and keep // a copy of the original name. TAO IDL's front end adds _cxx_ diff --git a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl index 119fae91a0a..c168a256343 100755 --- a/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl +++ b/TAO/performance-tests/Cubit/TAO/IDL_Cubit/run_test.pl @@ -98,7 +98,7 @@ if (ACE::waitforfile_timed ($iorfile, 10) == -1) { $CL = Process::Create ($exepref . "client".$EXE_EXT, " $clflags $clnsflags -x"); -$client = $CL->TimedWait (60); +$client = $CL->TimedWait (120); if ($client == -1) { print STDERR "ERROR: client timedout\n"; $CL->Kill (); $CL->TimedWait (1); diff --git a/TAO/tao/Asynch_Invocation.cpp b/TAO/tao/Asynch_Invocation.cpp new file mode 100644 index 00000000000..204805dd43e --- /dev/null +++ b/TAO/tao/Asynch_Invocation.cpp @@ -0,0 +1,129 @@ +// $Id$ + +#include "tao/Asynch_Invocation.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) + +#include "tao/Timeprobe.h" +#include "tao/Stub.h" +#include "tao/Principal.h" +#include "tao/Object_KeyC.h" +#include "tao/debug.h" + +#if !defined (__ACE_INLINE__) +# include "tao/Asynch_Invocation.i" +#endif /* ! __ACE_INLINE__ */ + +ACE_RCSID(tao, Asynch_Invocation, "$Id$") + +#if defined (ACE_ENABLE_TIMEPROBES) + +static const char *TAO_Asynch_Invocation_Timeprobe_Description[] = + { + "GIOP_Asynch_Invocation::invoke - start", + "GIOP_Asynch_Invocation::invoke - end", + + "GIOP_Asynch_Invocation::start - enter", + "GIOP_Asynch_Invocation::start - leave", + "GIOP_Asynch_Invocation::start - connect", + "GIOP_Asynch_Invocation::start - start_msg", + "GIOP_Asynch_Invocation::start - request_hdr" + }; + +enum + { + TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START = 1000, + TAO_GIOP_ASYNCH_INVOCATION_INVOKE_END, + + TAO_GIOP_ASYNCH_INVOCATION_START_ENTER, + TAO_GIOP_ASYNCH_INVOCATION_START_LEAVE, + TAO_GIOP_ASYNCH_INVOCATION_START_CONNECT, + TAO_GIOP_ASYNCH_INVOCATION_START_START_MSG, + TAO_GIOP_ASYNCH_INVOCATION_START_REQUEST_HDR + }; + + +// Setup Timeprobes +ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_Asynch_Invocation_Timeprobe_Description, + TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START); + +#endif /* ACE_ENABLE_TIMEPROBES */ + +void +TAO_GIOP_Twoway_Asynch_Invocation::start (CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->TAO_GIOP_Invocation::start (ACE_TRY_ENV); + ACE_CHECK; + + this->transport_->start_request (this->orb_core_, + this->profile_, + this->opname_, + this->request_id_, + 1, + this->out_stream_, + ACE_TRY_ENV); +} + +int +TAO_GIOP_Twoway_Asynch_Invocation::invoke (CORBA::ExceptionList &exceptions, + CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException)) +{ + TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START); + + int retval = this->invoke_i (ACE_TRY_ENV); + ACE_CHECK_RETURN (retval); + + return retval; +} + +int +TAO_GIOP_Twoway_Asynch_Invocation::invoke (TAO_Exception_Data *excepts, + CORBA::ULong except_count, + CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::Exception)) +{ + TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_ASYNCH_INVOCATION_INVOKE_START); + + int retval = this->invoke_i (ACE_TRY_ENV); + ACE_CHECK_RETURN (retval); + + return retval; +} + +int +TAO_GIOP_Twoway_Asynch_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + // Register a reply dispatcher for this Asynch_Invocation. Use the + // heap allocated reply dispatcher. + + int retval = this->transport_->bind_reply_dispatcher (this->request_id_, + this->rd_); + if (retval == -1) + { + // @@ What is the right way to handle this error? + this->close_connection (); + ACE_THROW_RETURN (CORBA::INTERNAL (TAO_DEFAULT_MINOR_CODE, + CORBA::COMPLETED_NO), + TAO_INVOKE_EXCEPTION); + } + + // Just send the request, without trying to wait for the reply. + retval = TAO_GIOP_Invocation::invoke (1, ACE_TRY_ENV); + ACE_CHECK_RETURN (retval); + + if (retval != TAO_INVOKE_OK) + return retval; + + // We do not wait for the reply. Let us return. + + return TAO_INVOKE_OK; +} + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ diff --git a/TAO/tao/Asynch_Invocation.h b/TAO/tao/Asynch_Invocation.h new file mode 100644 index 00000000000..6ec6a1f5518 --- /dev/null +++ b/TAO/tao/Asynch_Invocation.h @@ -0,0 +1,93 @@ +// This may look like C, but it's really -*- C++ -*- +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO +// +// = FILENAME +// Asynch_Invocation.h +// +// = DESCRIPTION +// Encapsulate the logic for remote Asynchronous Invocations. +// +// = AUTHOR +// Carlos O'Ryan <coryan@cs.wustl.edu> and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> +// +// ============================================================================ + +#ifndef TAO_ASYNCH_INVOCATION_H +#define TAO_ASYNCH_INVOCATION_H + +#include "tao/Invocation.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) +#include "tao/MessagingC.h" + +class TAO_Export TAO_GIOP_Twoway_Asynch_Invocation : public TAO_GIOP_Invocation +{ + // = TITLE + // Sends a two-way request does not expect the reply. + // + // = DESCRIPTION + // This class connects (or lookups a connection from the cache) to + // the remote server, builds the CDR stream for the Request, send + // the CDR stream and returns. + // +public: + TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *data, + const char *operation, + TAO_ORB_Core* orb_core, + const TAO_Reply_Handler_Skeleton &reply_handler_skel, + Messaging::ReplyHandler_ptr reply_handler_ptr); + // Constructor. + + void start (CORBA_Environment &TAO_IN_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::SystemException)); + // Calls TAO_GIOP_Asynch_Invocation::start. + + int invoke (CORBA::ExceptionList &exceptions, + CORBA_Environment &TAO_IN_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException)); + // Send request, block until any reply comes back, and unmarshal + // reply parameters as appropriate. + + int invoke (TAO_Exception_Data *excepts, + CORBA::ULong except_count, + CORBA_Environment &TAO_IN_ENV = + TAO_default_environment ()) + ACE_THROW_SPEC ((CORBA::Exception)); + // Special purpose invoke method used by the interpretive stubs. This + // accomplishes the same task as the normal invoke except that + // Exceptions are allocated and decoded here. This reduces the + // footprint of the generated stubs. + + // TAO_InputCDR &inp_stream (void); + // // Return the underlying input stream. + // + // void get_value (CORBA::TypeCode_ptr tc, + // void *value, + // CORBA_Environment &TAO_IN_ENV = + // TAO_default_environment ()); + // // No CORBA::Context support (deprecated). + +private: + int invoke_i (CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)); + // Implementation of the invoke() methods, handles the basic + // send/reply code and the system exceptions. + +private: + TAO_Asynch_Reply_Dispatcher *rd_; + // Reply dispatcher for the current synchronous Asynch_Invocation. +}; + +#if defined (__ACE_INLINE__) +# include "tao/Asynch_Invocation.i" +#endif /* __ACE_INLINE__ */ +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ +#endif /* TAO_ASYNCH_INVOCATION_H */ diff --git a/TAO/tao/Asynch_Invocation.i b/TAO/tao/Asynch_Invocation.i new file mode 100644 index 00000000000..800b5f14595 --- /dev/null +++ b/TAO/tao/Asynch_Invocation.i @@ -0,0 +1,34 @@ +// This may look like C, but it's really -*- C++ -*- +// +// $Id$ +// + +ACE_INLINE +TAO_GIOP_Twoway_Asynch_Invocation:: +TAO_GIOP_Twoway_Asynch_Invocation (TAO_Stub *stub, + const char *operation, + TAO_ORB_Core *orb_core, + const TAO_Reply_Handler_Skeleton &reply_handler_skel, + Messaging::ReplyHandler_ptr reply_handler_ptr) + : TAO_GIOP_Invocation (stub, operation, orb_core), + rd_ (0) +{ + // New Reply Dispatcher. + ACE_NEW (rd_, + TAO_Asynch_Reply_Dispatcher (reply_handler_skel, + reply_handler_ptr)); +} + +// ACE_INLINE TAO_InputCDR & +// TAO_GIOP_Twoway_Asynch_Invocation::inp_stream (void) +// { +// return this->message_state_->cdr; +// } +// +// ACE_INLINE void +// TAO_GIOP_Twoway_Asynch_Invocation::get_value (CORBA::TypeCode_ptr tc, +// void *value, +// CORBA::Environment &ACE_TRY_ENV) +// { +// (void) this->inp_stream ().decode (tc, value, 0, ACE_TRY_ENV); +// } diff --git a/TAO/tao/Client_Strategy_Factory.cpp b/TAO/tao/Client_Strategy_Factory.cpp index 7502cd20f1a..967582af54a 100644 --- a/TAO/tao/Client_Strategy_Factory.cpp +++ b/TAO/tao/Client_Strategy_Factory.cpp @@ -19,7 +19,7 @@ TAO_Client_Strategy_Factory::create_profile_lock (void) } TAO_Transport_Mux_Strategy * -TAO_Client_Strategy_Factory::create_transport_mux_strategy (void) +TAO_Client_Strategy_Factory::create_transport_mux_strategy (TAO_ORB_Core *) { return 0; } diff --git a/TAO/tao/Client_Strategy_Factory.h b/TAO/tao/Client_Strategy_Factory.h index 6b1ed050876..6d3a1ec668b 100644 --- a/TAO/tao/Client_Strategy_Factory.h +++ b/TAO/tao/Client_Strategy_Factory.h @@ -25,6 +25,7 @@ class ACE_Lock; class TAO_Transport_Mux_Strategy; class TAO_Wait_Strategy; class TAO_Transport; +class TAO_ORB_Core; class TAO_Export TAO_Client_Strategy_Factory : public ACE_Service_Object { @@ -44,7 +45,7 @@ public: // <TAO_GIOP_Invocation::location_forward> and the // <TAO_GIOP_Invocation::start>. - virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (void); + virtual TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_ORB_Core *orb_core); // Create the correct client request muxing strategy. virtual TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport); diff --git a/TAO/tao/DynAnyC.cpp b/TAO/tao/DynAnyC.cpp index 4cbfd0a118f..451e29e307e 100644 --- a/TAO/tao/DynAnyC.cpp +++ b/TAO/tao/DynAnyC.cpp @@ -1356,6 +1356,7 @@ CORBA::TypeCode_ptr _tc_CORBA_DynArray = #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + template class TAO_Object_Manager<CORBA_DynAny,CORBA_DynAny_var>; template class TAO_Object_Field_T<CORBA_DynAny,CORBA_DynAny_var>; template class TAO_Object_Field_T<CORBA_DynEnum,CORBA_DynEnum_var>; template class TAO_Object_Field_T<CORBA_DynStruct,CORBA_DynStruct_var>; @@ -1369,6 +1370,7 @@ CORBA::TypeCode_ptr _tc_CORBA_DynArray = template class TAO_Object_Manager<CORBA_DynSequence,CORBA_DynSequence_var>; template class TAO_Object_Manager<CORBA_DynArray,CORBA_DynArray_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +# pragma instantiate TAO_Object_Manager<CORBA_DynAny,CORBA_DynAny_var> # pragma instantiate TAO_Object_Field_T<CORBA_DynAny,CORBA_DynAny_var> # pragma instantiate TAO_Object_Field_T<CORBA_DynEnum,CORBA_DynEnum_var> # pragma instantiate TAO_Object_Field_T<CORBA_DynStruct,CORBA_DynStruct_var> diff --git a/TAO/tao/GIOP.cpp b/TAO/tao/GIOP.cpp index 9b884d2a746..6711c61156d 100644 --- a/TAO/tao/GIOP.cpp +++ b/TAO/tao/GIOP.cpp @@ -233,7 +233,7 @@ TAO_GIOP::dump_msg (const char *label, message_name = names [slot]; int byte_order = ptr[TAO_GIOP_MESSAGE_FLAGS_OFFSET] & 0x01; ACE_DEBUG ((LM_DEBUG, - "%s GIOP v%c.%c msg, %d data bytes, %s endian, %s", + "(%P | %t):%s GIOP v%c.%c msg, %d data bytes, %s endian, %s", label, digits[ptr[TAO_GIOP_VERSION_MAJOR_OFFSET]], digits[ptr[TAO_GIOP_VERSION_MINOR_OFFSET]], diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp index 8b5fb5ea2c4..25c67efd134 100644 --- a/TAO/tao/IIOP_Transport.cpp +++ b/TAO/tao/IIOP_Transport.cpp @@ -209,10 +209,13 @@ TAO_IIOP_Client_Transport::send_request (TAO_ORB_Core *orb_core, two_way) == -1) return -1; - return TAO_GIOP::send_message (this, - stream, - orb_core, - max_wait_time); + if (TAO_GIOP::send_message (this, + stream, + orb_core, + max_wait_time) == -1) + return -1; + + return this->idle_after_send (); } // Return 0, when the reply is not read fully, 1 if it is read fully. @@ -233,21 +236,8 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */, // Use an "factory" to obtain the CDR stream, in the Muxed case the // factory simply allocates a new one, in the Exclusive case the // factory returns a pointer to the pre-allocated CDR. - // - // @@ Alex: I thought some more about this, and here is how i would - // like to do it: this class keeps a CDR stream for the "current" - // message beign received. Initially the CDR is 0, when the - // handle_client_input() is called the first time then we go to - // the muxer to obtain the CDR stream. - // - The exclusive Muxer returns the CDR stream pre-allocated by - // the invocation. - // - The shared Muxer returns a new CDR stream. - // Once all the data has been received the reply handler takes - // charge of the CDR stream, or actually of its message block, - // which is referenced counted and thus can be efficiently - // removed. - // Do I make any sense? + // Get the message state from the Transport Mux Strategy. TAO_GIOP_Message_State* message_state = this->tms_->get_message_state (); @@ -259,7 +249,7 @@ TAO_IIOP_Client_Transport::handle_client_input (int /* block */, " nil message state\n")); return -1; } - + int result = TAO_GIOP::handle_input (this, this->orb_core_, *message_state, diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp index 182a3b70b85..168d18f93e9 100644 --- a/TAO/tao/Invocation.cpp +++ b/TAO/tao/Invocation.cpp @@ -87,7 +87,7 @@ TAO_GIOP_Invocation::TAO_GIOP_Invocation (TAO_Stub *stub, TAO_GIOP_Invocation::~TAO_GIOP_Invocation (void) { if (this->transport_ != 0) - this->transport_->idle (); + this->transport_->idle_after_reply (); } // The public API involves creating an invocation, starting it, filling @@ -283,8 +283,6 @@ TAO_GIOP_Invocation::invoke (CORBA::Boolean is_roundtrip, return TAO_INVOKE_OK; } -// **************************************************************** - int TAO_GIOP_Invocation::close_connection (void) { @@ -406,10 +404,6 @@ TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV) this->TAO_GIOP_Invocation::start (ACE_TRY_ENV); ACE_CHECK; - // If there was a previous reply, cleanup its state first. - if (this->message_state_.message_size != 0) - this->message_state_.reset (); - this->transport_->start_request (this->orb_core_, this->profile_, this->opname_, @@ -422,9 +416,9 @@ TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV) int TAO_GIOP_Twoway_Invocation::invoke (CORBA::ExceptionList &exceptions, CORBA::Environment &ACE_TRY_ENV) - ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException)) + ACE_THROW_SPEC ((CORBA::SystemException,CORBA::UnknownUserException)) { - TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_INVOCATION_INVOKE_START); + TAO_FUNCTION_PP_TIMEPROBE (TAO_GIOP_Invocation_INVOKE_START); int retval = this->invoke_i (ACE_TRY_ENV); ACE_CHECK_RETURN (retval); @@ -646,8 +640,23 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV) "TAO (%P|%t) Timeout on recv is <%u>\n", msecs)); } + int reply_error = this->transport_->wait_for_reply (this->max_wait_time_); + + // Do the wait loop till we receive the reply for this invocation. + // while (reply_error != -1 && + // this->transport_->reply_received (this->request_id_) != 1) + // { + // // @@ Hack to init the Leader-Follower state, so that we can + // // wait again. (Alex). + // // this->transport_->wait_strategy ()->sending_request (this->orb_core_, + // // 1); + // + // // Wait for reply. + // reply_error = this->transport_->wait_for_reply (); + // } + if (TAO_debug_level > 0 && this->max_wait_time_ != 0) { CORBA::ULong msecs = @@ -657,6 +666,8 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV) msecs, reply_error)); } + // Check the reply error. + if (reply_error == -1) { if (errno == ETIME) @@ -778,8 +789,7 @@ TAO_GIOP_Oneway_Invocation::start (CORBA::Environment &ACE_TRY_ENV) // **************************************************************** -// Send request, block until any reply comes back - +// Send request, block until any reply comes back. void TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) @@ -787,10 +797,6 @@ TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV) this->TAO_GIOP_Invocation::start (ACE_TRY_ENV); ACE_CHECK; - // If there was a previous reply, cleanup its state first. - if (this->message_state_.message_size != 0) - this->message_state_.reset (); - this->transport_->start_locate (this->orb_core_, this->profile_, this->request_id_, @@ -860,6 +866,14 @@ TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV) int reply_error = this->transport_->wait_for_reply (this->max_wait_time_); + // // Do the wait loop, till we receive the reply for this invocation. + // while (reply_error != -1 && + // this->transport_->reply_received (this->request_id_) != 1) + // { + // reply_error = this->transport_->wait_for_reply (); + // } + + // Check the reply error. if (reply_error == -1) { if (errno == ETIME) diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h index 90816bd6fc0..66ab1b5ebd5 100644 --- a/TAO/tao/Invocation.h +++ b/TAO/tao/Invocation.h @@ -10,7 +10,8 @@ // Invocation.h // // = DESCRIPTION -// Encapsulate the logic for remote invocations, oneways or twoways. +// Encapsulate the logic for remote invocations, oneways or +// twoways. // // THREADING NOTE: Threads should never manipulate another // thread's invocations. In this implementation, all data @@ -20,7 +21,8 @@ // GIOP code is reentrant. // // = AUTHOR -// Carlos O'Ryan <coryan@cs.wustl.edu> +// Carlos O'Ryan <coryan@cs.wustl.edu> and Alexander Babu Arulanthu +// <alex@cs.wustl.edu> // // ============================================================================ @@ -49,34 +51,38 @@ enum TAO_Invoke_Status // An exception was raised. }; +// **************************************************************** + class TAO_Export TAO_GIOP_Invocation { // = TITLE - // Encapsulates common behavior for both oneway and twoway - // invocations. + // Encapsulates common behavior for both oneway and twoway + // invocations. // // = DESCRIPTION - // This class connects (or lookups a connection from the cache) to - // the remote server, builds the CDR stream for the Request, send - // the CDR stream and expects the response and interprets the - // incoming CDR stream. - // + // This class connects (or lookups a connection from the cache) + // to the remote server, builds the CDR stream for the Request, + // send the CDR stream and expects the response and interprets + // the incoming CDR stream. + public: - // = Initialization and termination methods. TAO_GIOP_Invocation (TAO_Stub *data, const char *operation, TAO_ORB_Core* orb_core); + // Constructor. + ~TAO_GIOP_Invocation (void); + // Destructor. void put_param (CORBA::TypeCode_ptr tc, void *value, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()); // Encodes the value into the undelying CDR stream based on the - // TypeCode parameter + // TypeCode parameter. TAO_OutputCDR &out_stream (void); - // return the underlying output stream + // Return the underlying output stream. protected: void start (CORBA_Environment &ACE_TRY_ENV = @@ -147,6 +153,8 @@ protected: // start() and updated as required. }; +// **************************************************************** + class TAO_Export TAO_GIOP_Twoway_Invocation : public TAO_GIOP_Invocation { // = TITLE @@ -159,12 +167,12 @@ class TAO_Export TAO_GIOP_Twoway_Invocation : public TAO_GIOP_Invocation // incoming CDR stream. // public: - // = Initialization and termination methods. TAO_GIOP_Twoway_Invocation (TAO_Stub *data, const char *operation, TAO_ORB_Core* orb_core); - - void start (CORBA_Environment &ACE_TRY_ENV = + // Constructor. + + void start (CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()) ACE_THROW_SPEC ((CORBA::SystemException)); // Calls TAO_GIOP_Invocation::start. @@ -202,25 +210,27 @@ private: // send/reply code and the system exceptions. private: - TAO_GIOP_Message_State message_state_; + // TAO_GIOP_Message_State message_state_; // Stream into which the reply is placed. TAO_Synch_Reply_Dispatcher rd_; // Reply dispatcher for the current synchronous invocation. }; +// **************************************************************** + class TAO_Export TAO_GIOP_Oneway_Invocation : public TAO_GIOP_Invocation { // = TITLE // Sends a oneway request. // public: - // = Initialization and termination methods. TAO_GIOP_Oneway_Invocation (TAO_Stub *data, const char *operation, TAO_ORB_Core* orb_core); + // Constructor. - void start (CORBA_Environment &ACE_TRY_ENV = + void start (CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()) ACE_THROW_SPEC ((CORBA::SystemException)); // Call TAO_GIOP_Invocation::start() @@ -231,6 +241,7 @@ public: // Send request, without blocking for any response. }; +// **************************************************************** class TAO_Export TAO_GIOP_Locate_Request_Invocation : public TAO_GIOP_Invocation { @@ -238,11 +249,11 @@ class TAO_Export TAO_GIOP_Locate_Request_Invocation : public TAO_GIOP_Invocation // Sends a locate request. // public: - // = Initialization and termination methods. TAO_GIOP_Locate_Request_Invocation (TAO_Stub *data, TAO_ORB_Core* orb_core); + // Constructor. - void start (CORBA_Environment &ACE_TRY_ENV = + void start (CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()) ACE_THROW_SPEC ((CORBA::SystemException)); // Calls TAO_GIOP_Invocation::start. @@ -256,7 +267,7 @@ public: // return the underlying input stream private: - TAO_GIOP_Message_State message_state_; + // TAO_GIOP_Message_State message_state_; // Stream into which the request is placed. TAO_Synch_Reply_Dispatcher rd_; diff --git a/TAO/tao/Invocation.i b/TAO/tao/Invocation.i index d4dad8ee56f..e832e474c27 100644 --- a/TAO/tao/Invocation.i +++ b/TAO/tao/Invocation.i @@ -25,15 +25,14 @@ TAO_GIOP_Twoway_Invocation (TAO_Stub *stub, const char *operation, TAO_ORB_Core *orb_core) : TAO_GIOP_Invocation (stub, operation, orb_core), - message_state_ (orb_core), - rd_ (&message_state_) + rd_ (orb_core) { } ACE_INLINE TAO_InputCDR & TAO_GIOP_Twoway_Invocation::inp_stream (void) { - return this->message_state_.cdr; + return this->rd_.reply_cdr (); } ACE_INLINE void @@ -69,13 +68,12 @@ TAO_GIOP_Locate_Request_Invocation:: TAO_GIOP_Locate_Request_Invocation (TAO_Stub *stub, TAO_ORB_Core *orb_core) : TAO_GIOP_Invocation (stub, 0, orb_core), - message_state_ (orb_core), - rd_ (&message_state_) + rd_ (orb_core) { } ACE_INLINE TAO_InputCDR & TAO_GIOP_Locate_Request_Invocation::inp_stream (void) { - return this->message_state_.cdr; + return this->rd_. reply_cdr (); } diff --git a/TAO/tao/Makefile b/TAO/tao/Makefile index db7bf753b64..20f9efc8efe 100644 --- a/TAO/tao/Makefile +++ b/TAO/tao/Makefile @@ -26,6 +26,7 @@ PUB_HDRS = \ UIOP_Connect \ GIOP \ Invocation \ + Asynch_Invocation \ Params \ Marshal \ Debug \ @@ -124,6 +125,7 @@ ORB_CORE_FILES = \ GIOP \ GIOP_Server_Request \ Invocation \ + Asynch_Invocation \ ORB_Core \ params \ Resource_Factory \ @@ -137,6 +139,8 @@ ORB_CORE_FILES = \ Reply_Dispatcher \ IOPC \ IOPS \ + PollableC \ + PollableS \ CONV_FRAMEC \ CONV_FRAMES \ Tagged_Components @@ -301,6 +305,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -424,6 +430,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -474,6 +483,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -527,6 +537,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -650,16 +662,20 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/POAC.i \ $(TAO_ROOT)/tao/Key_Adapters.i -.obj/POA.o .obj/POA.so .shobj/POA.o .shobj/POA.so: POA.cpp \ - $(ACE_ROOT)/ace/Auto_Ptr.h \ +.obj/POA.o .obj/POA.so .shobj/POA.o .shobj/POA.so: POA.cpp $(ACE_ROOT)/ace/Auto_Ptr.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -791,6 +807,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -840,6 +859,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -891,6 +911,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -966,6 +988,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -1063,6 +1088,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -1120,6 +1146,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1195,6 +1223,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -1268,6 +1299,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -1317,6 +1349,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1392,6 +1426,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -1482,6 +1519,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1605,6 +1644,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -1625,6 +1667,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1704,6 +1748,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -1771,6 +1818,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -1851,6 +1899,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -1934,6 +1984,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -1991,6 +2044,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2058,6 +2113,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -2097,8 +2157,6 @@ realclean: $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -2134,6 +2192,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -2191,6 +2250,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2273,6 +2334,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -2331,6 +2395,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -2386,6 +2451,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2453,6 +2520,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -2520,8 +2592,6 @@ realclean: $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -2555,6 +2625,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -2582,6 +2653,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2698,6 +2771,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -2717,6 +2795,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -2833,6 +2913,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -2893,8 +2978,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -2929,6 +3012,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -2958,6 +3042,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3055,10 +3141,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -3171,6 +3260,7 @@ realclean: $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -3223,6 +3313,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3290,6 +3382,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -3392,8 +3489,6 @@ realclean: $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -3422,26 +3517,27 @@ realclean: $(ACE_ROOT)/ace/Timeprobe.h \ $(TAO_ROOT)/tao/Transport_Mux_Strategy.h \ $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/Reply_Dispatcher.i \ $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/DynAnyC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/DynAnyC.i \ $(TAO_ROOT)/tao/DomainC.h \ $(TAO_ROOT)/tao/DomainC.i \ $(TAO_ROOT)/tao/MessagingS.h \ $(TAO_ROOT)/tao/TimeBaseS.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/TimeBaseC.i \ $(TAO_ROOT)/tao/TimeBaseS_T.h \ $(TAO_ROOT)/tao/TimeBaseS_T.i \ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ - $(TAO_ROOT)/tao/MessagingC.h \ - $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ $(TAO_ROOT)/tao/Resource_Factory.h \ @@ -3464,6 +3560,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3618,6 +3716,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -3642,8 +3745,6 @@ realclean: $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -3687,6 +3788,7 @@ realclean: $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -3707,6 +3809,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -3774,6 +3878,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -3880,8 +3989,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -3916,6 +4023,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -3949,6 +4057,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4104,6 +4214,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -4123,8 +4238,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -4159,6 +4272,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -4180,6 +4294,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4296,6 +4412,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -4364,8 +4485,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -4400,6 +4519,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -4430,6 +4550,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4497,6 +4619,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -4618,8 +4745,6 @@ realclean: $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/IORC.i \ @@ -4651,6 +4776,7 @@ realclean: $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -4703,6 +4829,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -4770,6 +4898,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -4888,21 +5021,24 @@ realclean: $(ACE_ROOT)/ace/Timeprobe.h \ $(TAO_ROOT)/tao/Transport_Mux_Strategy.h \ $(TAO_ROOT)/tao/Reply_Dispatcher.h \ - $(TAO_ROOT)/tao/Reply_Dispatcher.i \ - $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Policy_Manager.h \ - $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ - $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/DynAnyC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ $(TAO_ROOT)/tao/Services.h \ @@ -4922,14 +5058,10 @@ realclean: $(TAO_ROOT)/tao/DomainC.i \ $(TAO_ROOT)/tao/MessagingS.h \ $(TAO_ROOT)/tao/TimeBaseS.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/TimeBaseC.i \ $(TAO_ROOT)/tao/TimeBaseS_T.h \ $(TAO_ROOT)/tao/TimeBaseS_T.i \ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ - $(TAO_ROOT)/tao/MessagingC.h \ - $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ $(TAO_ROOT)/tao/Resource_Factory.h \ @@ -4952,6 +5084,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5114,6 +5248,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -5151,8 +5290,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -5185,6 +5322,7 @@ realclean: $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -5204,6 +5342,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5363,6 +5503,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -5385,8 +5530,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -5421,6 +5564,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -5453,6 +5597,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5616,6 +5762,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -5635,8 +5786,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -5671,6 +5820,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -5688,6 +5838,8 @@ realclean: $(TAO_ROOT)/tao/IORC.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -5769,6 +5921,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/IORC.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/Servant_Base.h \ @@ -5835,6 +5990,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -5853,9 +6009,6 @@ realclean: $(TAO_ROOT)/tao/GIOP.h \ $(TAO_ROOT)/tao/GIOP.i \ $(TAO_ROOT)/tao/Server_Request.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Marshal.h \ $(TAO_ROOT)/tao/Marshal.i \ $(TAO_ROOT)/tao/singletons.h \ @@ -5945,6 +6098,8 @@ realclean: $(TAO_ROOT)/tao/IORC.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6026,6 +6181,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/IORC.i \ $(TAO_ROOT)/tao/Servant_Base.h \ $(TAO_ROOT)/tao/POAC.h \ @@ -6034,8 +6192,7 @@ realclean: $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/POAC.i \ - $(TAO_ROOT)/tao/Servant_Base.i \ - IORS.i + $(TAO_ROOT)/tao/Servant_Base.i IORS.i .obj/IORManipulation.o .obj/IORManipulation.so .shobj/IORManipulation.o .shobj/IORManipulation.so: IORManipulation.cpp \ $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/Object.h \ @@ -6045,6 +6202,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6123,6 +6282,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/IORC.i \ $(TAO_ROOT)/tao/Servant_Base.h \ $(TAO_ROOT)/tao/POAC.h \ @@ -6181,9 +6343,6 @@ realclean: $(TAO_ROOT)/tao/GIOP.h \ $(TAO_ROOT)/tao/GIOP.i \ $(TAO_ROOT)/tao/Server_Request.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Marshal.h \ $(TAO_ROOT)/tao/Marshal.i \ $(TAO_ROOT)/tao/singletons.h \ @@ -6243,6 +6402,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -6304,6 +6464,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6405,6 +6567,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -6447,6 +6612,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -6499,6 +6665,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6599,6 +6767,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -6641,6 +6812,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -6690,6 +6862,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6785,6 +6959,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -6828,8 +7007,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -6864,6 +7041,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -6895,13 +7073,158 @@ realclean: $(ACE_ROOT)/ace/Timer_Heap_T.cpp \ $(ACE_ROOT)/ace/Select_Reactor_T.i \ $(ACE_ROOT)/ace/Select_Reactor.i \ - $(ACE_ROOT)/ace/XtReactor.h \ $(ACE_ROOT)/ace/FlReactor.h \ $(ACE_ROOT)/ace/Msg_WFMO_Reactor.h \ $(ACE_ROOT)/ace/Msg_WFMO_Reactor.i \ $(ACE_ROOT)/ace/TP_Reactor.h \ $(ACE_ROOT)/ace/TP_Reactor.i \ $(ACE_ROOT)/ace/Arg_Shifter.h +.obj/xt_resource.o .obj/xt_resource.so .shobj/xt_resource.o .shobj/xt_resource.so: xt_resource.cpp \ + $(TAO_ROOT)/tao/xt_resource.h \ + $(TAO_ROOT)/tao/default_resource.h \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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/Shared_Object.i \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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.h \ + $(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_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Malloc_Base.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.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 \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.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/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/GIOP.i \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/default_resource.i .obj/append.o .obj/append.so .shobj/append.o .shobj/append.so: append.cpp \ $(TAO_ROOT)/tao/Marshal.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -6910,6 +7233,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -6982,14 +7307,17 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -7047,6 +7375,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7119,14 +7449,17 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -7196,12 +7529,10 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Union.h \ $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/Policy_Manager.h \ @@ -7248,6 +7579,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7320,14 +7653,17 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -7395,12 +7731,10 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Union.h .obj/encode.o .obj/encode.so .shobj/encode.o .shobj/encode.so: encode.cpp \ $(TAO_ROOT)/tao/Marshal.h \ @@ -7410,6 +7744,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7482,14 +7818,17 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -7557,12 +7896,10 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Union.h .obj/CDR_Interpreter.o .obj/CDR_Interpreter.so .shobj/CDR_Interpreter.o .shobj/CDR_Interpreter.so: CDR_Interpreter.cpp \ $(TAO_ROOT)/tao/Sequence.h \ @@ -7572,6 +7909,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7638,6 +7977,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/CDR_Interpreter.h \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -7648,12 +7992,7 @@ realclean: $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Union.h .obj/Marshal.o .obj/Marshal.so .shobj/Marshal.o .shobj/Marshal.so: Marshal.cpp \ $(TAO_ROOT)/tao/Marshal.h \ @@ -7663,6 +8002,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7735,14 +8076,17 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -7801,6 +8145,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -7873,14 +8219,17 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -7938,6 +8287,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8035,10 +8386,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -8066,6 +8420,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8131,6 +8487,8 @@ realclean: $(ACE_ROOT)/ace/Hash_Map_Manager.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8237,10 +8595,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -8260,8 +8621,7 @@ realclean: $(TAO_ROOT)/tao/Servant_Base.i \ $(TAO_ROOT)/tao/IORS.i \ $(TAO_ROOT)/tao/ORB.i -.obj/Any.o .obj/Any.so .shobj/Any.o .shobj/Any.so: Any.cpp \ - $(TAO_ROOT)/tao/Any.h \ +.obj/Any.o .obj/Any.so .shobj/Any.o .shobj/Any.so: Any.cpp $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ @@ -8269,6 +8629,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8348,6 +8710,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/IOR_LookupTable.h \ @@ -8412,6 +8777,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -8462,6 +8828,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8533,6 +8901,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -8604,6 +8975,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i @@ -8616,6 +8988,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8723,6 +9097,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -8760,6 +9137,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8836,6 +9215,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8909,6 +9290,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -8991,6 +9374,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -9049,6 +9435,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -9098,6 +9485,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9168,6 +9557,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -9241,6 +9633,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -9250,9 +9643,6 @@ realclean: $(TAO_ROOT)/tao/Context.h \ $(TAO_ROOT)/tao/Context.i \ $(TAO_ROOT)/tao/Request.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/GIOP.h \ $(TAO_ROOT)/tao/GIOP.i \ $(TAO_ROOT)/tao/ORB_Core.h \ @@ -9300,14 +9690,15 @@ realclean: $(ACE_ROOT)/ace/Auto_Ptr.h \ $(ACE_ROOT)/ace/Auto_Ptr.i \ $(ACE_ROOT)/ace/Auto_Ptr.cpp -.obj/ORB.o .obj/ORB.so .shobj/ORB.o .shobj/ORB.so: ORB.cpp \ - $(TAO_ROOT)/tao/ORB.h \ +.obj/ORB.o .obj/ORB.so .shobj/ORB.o .shobj/ORB.so: ORB.cpp $(TAO_ROOT)/tao/ORB.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9405,10 +9796,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -9510,6 +9904,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -9576,6 +9971,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9646,6 +10043,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9721,6 +10120,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Stub.h \ $(TAO_ROOT)/tao/Pluggable.h \ @@ -9787,6 +10189,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -9843,6 +10246,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -9918,6 +10323,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Operation_Table.h \ $(ACE_ROOT)/ace/Hash_Map_Manager.h \ @@ -9986,6 +10394,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10064,6 +10474,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -10129,6 +10542,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -10174,10 +10588,7 @@ realclean: $(ACE_ROOT)/ace/Dynamic_Service.cpp \ $(TAO_ROOT)/tao/Reply_Dispatcher.h \ $(TAO_ROOT)/tao/Reply_Dispatcher.i \ - $(TAO_ROOT)/tao/Invocation.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp + $(TAO_ROOT)/tao/Invocation.i .obj/DomainS.o .obj/DomainS.so .shobj/DomainS.o .shobj/DomainS.so: DomainS.cpp DomainC.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ @@ -10185,6 +10596,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10263,12 +10676,14 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/Any.i \ - DomainC.i \ + $(TAO_ROOT)/tao/Any.i DomainC.i \ $(TAO_ROOT)/tao/Operation_Table.h \ $(ACE_ROOT)/ace/Hash_Map_Manager.h \ $(ACE_ROOT)/ace/Functor.h \ @@ -10332,6 +10747,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10401,9 +10818,8 @@ realclean: $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i \ - TimeBaseC.i TimeBaseS.h TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp \ - TimeBaseS.i + $(TAO_ROOT)/tao/Any.i TimeBaseC.i \ + TimeBaseS.h TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i .obj/TimeBaseS.o .obj/TimeBaseS.so .shobj/TimeBaseS.o .shobj/TimeBaseS.so: TimeBaseS.cpp TimeBaseS.h TimeBaseC.h \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -10413,6 +10829,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10482,8 +10900,8 @@ realclean: $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i \ - TimeBaseC.i TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i + $(TAO_ROOT)/tao/Any.i TimeBaseC.i \ + TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i .obj/Principal.o .obj/Principal.so .shobj/Principal.o .shobj/Principal.so: Principal.cpp \ $(TAO_ROOT)/tao/Principal.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -10492,6 +10910,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10559,6 +10979,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/Typecode.h \ @@ -10574,6 +10999,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10639,7 +11066,12 @@ realclean: $(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/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp .obj/Server_Request.o .obj/Server_Request.so .shobj/Server_Request.o .shobj/Server_Request.so: Server_Request.cpp \ $(TAO_ROOT)/tao/Server_Request.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -10648,6 +11080,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10716,6 +11150,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Object_KeyC.i \ $(TAO_ROOT)/tao/GIOP.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -10725,8 +11164,6 @@ realclean: $(TAO_ROOT)/tao/Typecode.i \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/GIOP.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Server_Request.i \ $(TAO_ROOT)/tao/POAC.h \ $(TAO_ROOT)/tao/PolicyC.h \ @@ -10798,6 +11235,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -10847,6 +11285,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10915,6 +11355,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -10932,6 +11377,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -10999,6 +11446,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -11037,8 +11489,6 @@ realclean: $(TAO_ROOT)/tao/Services.h \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -11074,6 +11524,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -11134,6 +11585,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11216,6 +11669,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Principal.i \ $(TAO_ROOT)/tao/debug.h .obj/ValueBase.o .obj/ValueBase.so .shobj/ValueBase.o .shobj/ValueBase.so: ValueBase.cpp \ @@ -11226,6 +11682,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11327,10 +11785,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -11366,6 +11827,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -11417,6 +11879,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11483,6 +11947,8 @@ realclean: $(ACE_ROOT)/ace/Hash_Map_Manager.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11590,10 +12056,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -11618,6 +12087,8 @@ realclean: $(ACE_ROOT)/ace/Timeprobe.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11705,6 +12176,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -11763,6 +12237,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -11816,6 +12291,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11889,6 +12366,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -11957,6 +12436,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12024,6 +12505,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Object_KeyC.i \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ @@ -12037,6 +12523,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12104,6 +12592,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ @@ -12117,8 +12610,6 @@ realclean: $(TAO_ROOT)/tao/Server_Request.h \ $(TAO_ROOT)/tao/Object_KeyC.h \ $(TAO_ROOT)/tao/Object_KeyC.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Server_Request.i \ $(TAO_ROOT)/tao/Principal.h \ $(TAO_ROOT)/tao/Principal.i \ @@ -12192,6 +12683,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -12266,6 +12758,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12335,6 +12829,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Object_KeyC.i \ $(TAO_ROOT)/tao/GIOP.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -12344,8 +12843,6 @@ realclean: $(TAO_ROOT)/tao/Typecode.i \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/GIOP.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Server_Request.i \ $(TAO_ROOT)/tao/Principal.h \ $(TAO_ROOT)/tao/Principal.i \ @@ -12418,6 +12915,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -12468,6 +12966,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12550,6 +13050,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -12608,6 +13111,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -12663,6 +13167,206 @@ realclean: $(TAO_ROOT)/tao/Object_KeyC.h \ $(TAO_ROOT)/tao/Object_KeyC.i \ $(TAO_ROOT)/tao/Connector_Registry.h +.obj/Asynch_Invocation.o .obj/Asynch_Invocation.so .shobj/Asynch_Invocation.o .shobj/Asynch_Invocation.so: Asynch_Invocation.cpp \ + $(TAO_ROOT)/tao/Asynch_Invocation.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.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 \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i .obj/ORB_Core.o .obj/ORB_Core.so .shobj/ORB_Core.o .shobj/ORB_Core.so: ORB_Core.cpp \ $(TAO_ROOT)/tao/ORB_Core.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -12671,6 +13375,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -12753,6 +13459,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -12811,6 +13520,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -12911,6 +13621,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13006,6 +13718,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13101,6 +13815,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -13140,8 +13859,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/PolicyC.i \ @@ -13176,6 +13893,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -13197,6 +13915,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13269,6 +13989,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13375,6 +14097,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -13414,6 +14141,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13515,10 +14244,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ @@ -13557,6 +14289,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13645,14 +14379,15 @@ realclean: $(ACE_ROOT)/ace/CORBA_macros.h \ $(TAO_ROOT)/tao/corbafwd.i \ $(TAO_ROOT)/tao/debug.h -.obj/TAO.o .obj/TAO.so .shobj/TAO.o .shobj/TAO.so: TAO.cpp \ - $(TAO_ROOT)/tao/TAO.h \ +.obj/TAO.o .obj/TAO.so .shobj/TAO.o .shobj/TAO.so: TAO.cpp $(TAO_ROOT)/tao/TAO.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13732,6 +14467,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ @@ -13782,6 +14520,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -13850,6 +14590,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ $(TAO_ROOT)/tao/Exception.i \ @@ -13861,8 +14606,6 @@ realclean: $(TAO_ROOT)/tao/Policy_Manager.h \ $(TAO_ROOT)/tao/POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -13925,6 +14668,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -13974,6 +14718,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14041,6 +14787,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ @@ -14048,9 +14799,52 @@ realclean: $(TAO_ROOT)/tao/Typecode.i \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/GIOP.i \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/Reply_Dispatcher.i \ - $(TAO_ROOT)/tao/debug.h + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i .obj/Reply_Dispatcher.o .obj/Reply_Dispatcher.so .shobj/Reply_Dispatcher.o .shobj/Reply_Dispatcher.so: Reply_Dispatcher.cpp \ $(TAO_ROOT)/tao/Reply_Dispatcher.h \ $(TAO_ROOT)/tao/GIOP.h \ @@ -14060,6 +14854,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14127,6 +14923,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/Typecode.h \ $(TAO_ROOT)/tao/Exception.h \ @@ -14134,7 +14935,114 @@ realclean: $(TAO_ROOT)/tao/Typecode.i \ $(TAO_ROOT)/tao/CDR.i \ $(TAO_ROOT)/tao/GIOP.i \ - $(TAO_ROOT)/tao/Reply_Dispatcher.i + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp .obj/IOPC.o .obj/IOPC.so .shobj/IOPC.o .shobj/IOPC.so: IOPC.cpp \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -14144,6 +15052,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14216,12 +15126,15 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/IOPC.i \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i .obj/IOPS.o .obj/IOPS.so .shobj/IOPS.o .shobj/IOPS.so: IOPS.cpp IOPS.h IOPC.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -14231,6 +15144,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14303,8 +15218,154 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/IOPC.i \ - IOPS_T.h IOPS_T.i IOPS_T.cpp IOPS.i + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/IOPC.i IOPS_T.h \ + IOPS_T.i IOPS_T.cpp IOPS.i +.obj/PollableC.o .obj/PollableC.so .shobj/PollableC.o .shobj/PollableC.so: PollableC.cpp \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.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 \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i +.obj/PollableS.o .obj/PollableS.so .shobj/PollableS.o .shobj/PollableS.so: PollableS.cpp \ + $(TAO_ROOT)/tao/PollableS.h \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.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 \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i .obj/CONV_FRAMEC.o .obj/CONV_FRAMEC.so .shobj/CONV_FRAMEC.o .shobj/CONV_FRAMEC.so: CONV_FRAMEC.cpp CONV_FRAMEC.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -14313,6 +15374,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14385,12 +15448,14 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - CONV_FRAMEC.i \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/Environment.h \ - $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + CONV_FRAMEC.i $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Any.i .obj/CONV_FRAMES.o .obj/CONV_FRAMES.so .shobj/CONV_FRAMES.o .shobj/CONV_FRAMES.so: CONV_FRAMES.cpp CONV_FRAMES.h CONV_FRAMEC.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -14400,6 +15465,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14472,6 +15539,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ CONV_FRAMEC.i CONV_FRAMES_T.h CONV_FRAMES_T.i CONV_FRAMES_T.cpp \ CONV_FRAMES.i .obj/Tagged_Components.o .obj/Tagged_Components.so .shobj/Tagged_Components.o .shobj/Tagged_Components.so: Tagged_Components.cpp \ @@ -14484,6 +15556,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14556,6 +15630,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/IOPC.i \ $(TAO_ROOT)/tao/CONV_FRAMEC.h \ $(TAO_ROOT)/tao/CONV_FRAMEC.i \ @@ -14568,6 +15647,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14679,6 +15760,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ @@ -14699,6 +15783,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14785,6 +15871,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Request.i \ $(TAO_ROOT)/tao/Stub.h \ $(TAO_ROOT)/tao/Pluggable.h \ @@ -14851,6 +15940,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i @@ -14863,6 +15953,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -14929,6 +16021,11 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/Typecode.h \ @@ -14939,14 +16036,14 @@ realclean: $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i .obj/NVList.o .obj/NVList.so .shobj/NVList.o .shobj/NVList.so: NVList.cpp \ $(TAO_ROOT)/tao/NVList.h \ $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -15059,6 +16156,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ @@ -15078,6 +16178,8 @@ realclean: $(TAO_ROOT)/tao/corba.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -15182,10 +16284,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -15219,9 +16324,6 @@ realclean: $(TAO_ROOT)/tao/GIOP.h \ $(TAO_ROOT)/tao/GIOP.i \ $(TAO_ROOT)/tao/Server_Request.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Marshal.h \ $(TAO_ROOT)/tao/Marshal.i \ $(TAO_ROOT)/tao/singletons.h \ @@ -15281,6 +16383,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Stub.i \ @@ -15336,6 +16439,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -15423,9 +16528,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.h \ $(TAO_ROOT)/tao/TimeBaseS.h \ @@ -15532,6 +16641,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -15626,6 +16737,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/ORB.h \ @@ -15674,6 +16788,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Operation_Table.h \ @@ -15690,6 +16805,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -15773,6 +16890,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -15833,6 +16953,7 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ $(TAO_ROOT)/tao/Policy_Manager.i \ @@ -15880,6 +17001,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -15890,9 +17013,8 @@ realclean: $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/ACE.i \ $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - TimeBaseS.h TimeBaseC.h \ - $(TAO_ROOT)/tao/Any.h \ + $(ACE_ROOT)/ace/Log_Record.i TimeBaseS.h \ + TimeBaseC.h $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ @@ -15955,9 +17077,8 @@ realclean: $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i \ - TimeBaseC.i TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i \ - POA_CORBA.h \ + $(TAO_ROOT)/tao/Any.i TimeBaseC.i \ + TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ @@ -15968,6 +17089,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/ORB.h \ @@ -16017,6 +17141,7 @@ realclean: $(TAO_ROOT)/tao/TimeBaseC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ MessagingC.i MessagingS.i \ $(TAO_ROOT)/tao/Messaging_Policy_i.i \ $(ACE_ROOT)/ace/Auto_Ptr.h \ @@ -16027,6 +17152,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16138,6 +17265,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ @@ -16173,17 +17303,17 @@ realclean: $(TAO_ROOT)/tao/MessagingC.h \ $(TAO_ROOT)/tao/IOPC.h \ $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PollableC.h \ $(TAO_ROOT)/tao/MessagingC.i \ $(TAO_ROOT)/tao/MessagingS.i \ - $(TAO_ROOT)/tao/Stub.i \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp + $(TAO_ROOT)/tao/Stub.i .obj/DynAnyS.o .obj/DynAnyS.so .shobj/DynAnyS.o .shobj/DynAnyS.so: DynAnyS.cpp \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16295,6 +17425,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/Services.i \ $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ @@ -16319,6 +17452,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16401,6 +17536,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -16466,6 +17604,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16548,6 +17688,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -16604,6 +17747,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16686,6 +17831,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -16742,6 +17890,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16824,6 +17974,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -16880,6 +18033,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -16962,6 +18117,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -17018,6 +18176,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -17100,6 +18260,9 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ $(TAO_ROOT)/tao/PolicyC.i \ $(TAO_ROOT)/tao/DynAnyC.h \ $(TAO_ROOT)/tao/Any.h \ @@ -17158,6 +18321,8 @@ realclean: $(TAO_ROOT)/tao/orbconf.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/config-sunos5.6.h \ + $(ACE_ROOT)/ace/config-sunos5.5.h \ $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Basic_Types.h \ $(ACE_ROOT)/ace/Basic_Types.i \ @@ -17259,10 +18424,13 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/varout.h \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ $(TAO_ROOT)/tao/IORS.h \ $(TAO_ROOT)/tao/IORC.h \ $(TAO_ROOT)/tao/Environment.h \ diff --git a/TAO/tao/MessagingC.h b/TAO/tao/MessagingC.h index 84dd0d8b2dc..39a431192d8 100644 --- a/TAO/tao/MessagingC.h +++ b/TAO/tao/MessagingC.h @@ -36,6 +36,8 @@ #include "tao/TimeBaseC.h" #include "tao/PolicyC.h" #include "tao/IOPC.h" +#include "tao/PollableC.h" +#include "tao/varout.h" #if defined (TAO_EXPORT_MACRO) #undef TAO_EXPORT_MACRO @@ -1637,7 +1639,7 @@ TAO_NAMESPACE Messaging class ReplyHandler; typedef ReplyHandler *ReplyHandler_ptr; - + class TAO_Export ReplyHandler_var { public: @@ -1837,10 +1839,23 @@ TAO_NAMESPACE Messaging }; TAO_NAMESPACE_STORAGE_CLASS CORBA::TypeCode_ptr _tc_Poller; -#endif /* 0 */ +#endif /* TAO_POLLER */ }; // module Messaging +// Typedef for the Reply Handler Skeleton. +// This is handcrafted not generated by the IDL compiler. + +class TAO_InputCDR; + +#if defined (TAO_POLLER) +typedef void (*TAO_Reply_Handler_Skeleton)( + TAO_InputCDR &, + Messaging::ReplyHandler *, + CORBA::Environment & + ); +#endif /* TAO_POLLER */ + void TAO_Export operator<<= (CORBA::Any &, Messaging::PriorityRange*); // noncopying version CORBA::Boolean TAO_Export operator>>= (const CORBA::Any &, Messaging::PriorityRange *&); diff --git a/TAO/tao/MessagingS.cpp b/TAO/tao/MessagingS.cpp index e8df7334f55..920a0795a66 100644 --- a/TAO/tao/MessagingS.cpp +++ b/TAO/tao/MessagingS.cpp @@ -1728,7 +1728,7 @@ void* POA_Messaging::Poller::_downcast ( return 0; } -void POA_Messaging::Poller::_dispatch (CORBA::ServerRequest & /* req */, void * /* context */, CORBA::Environment &ACE_TRY_ENV) +void POA_Messaging::Poller::_dispatch (CORBA::ServerRequest &req, void * context, CORBA::Environment &ACE_TRY_ENV) { TAO_Skeleton skel; // pointer to skeleton for operation const char *opname = req.operation (); // retrieve operation name diff --git a/TAO/tao/Pluggable.cpp b/TAO/tao/Pluggable.cpp index 4f8f0f97628..52c82100e1a 100644 --- a/TAO/tao/Pluggable.cpp +++ b/TAO/tao/Pluggable.cpp @@ -161,7 +161,7 @@ TAO_Transport::TAO_Transport (CORBA::ULong tag, this->ws_ = orb_core->client_factory ()->create_wait_strategy (this); // Create TMS now. - this->tms_ = orb_core->client_factory ()->create_transport_mux_strategy (); + this->tms_ = orb_core->client_factory ()->create_transport_mux_strategy (orb_core); } TAO_Transport::~TAO_Transport (void) @@ -214,6 +214,12 @@ TAO_Transport::bind_reply_dispatcher (CORBA::ULong request_id, rd); } +int +TAO_Transport::wait_for_reply (ACE_Time_Value *max_wait_time) +{ + return this->ws_->wait (max_wait_time); +} + // Read and handle the reply. Returns 0 when there is Short Read on // the connection. Returns 1 when the full reply is read and // handled. Returns -1 on errors. @@ -233,9 +239,21 @@ TAO_Transport::register_handler (void) } int -TAO_Transport::wait_for_reply (ACE_Time_Value *max_wait_time) +TAO_Transport::idle_after_send (void) { - return this->ws_->wait (max_wait_time); + return this->tms ()->idle_after_send (this); +} + +int +TAO_Transport::idle_after_reply (void) +{ + return this->tms ()->idle_after_reply (this); +} + +int +TAO_Transport::reply_received (const CORBA::ULong request_id) +{ + return this->tms ()->reply_received (request_id); } void diff --git a/TAO/tao/Pluggable.h b/TAO/tao/Pluggable.h index 400141ed4d9..caed29651b1 100644 --- a/TAO/tao/Pluggable.h +++ b/TAO/tao/Pluggable.h @@ -182,6 +182,22 @@ public: // Strategy if Reactor is used for that strategy. Default // implementation out here returns -1 setting <errno> to ENOTSUP. + // = Setting the Transport object in Idle state. Theese methods are + // routed the TMS object. The TMS starategies implement the + // methods accordingly. + + virtual int idle_after_send (void); + // Request has been just sent, but the reply is not received. Idle + // the transport now. + + virtual int idle_after_reply (void); + // Request is sent and the reply is received. Idle the transport + // now. + + virtual int reply_received (const CORBA::ULong request_id); + // Check with the TMS whether the reply has been receieved for the + // request with <request_id>. + protected: CORBA::ULong tag_; // IOP protocol tag. diff --git a/TAO/tao/PollableC.cpp b/TAO/tao/PollableC.cpp index 862761f65c3..0a27a5f3bd2 100644 --- a/TAO/tao/PollableC.cpp +++ b/TAO/tao/PollableC.cpp @@ -18,6 +18,9 @@ // ================================================================ #include "tao/PollableC.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) + #include "tao/POA_CORBA.h" #include "tao/Stub.h" #include "tao/Invocation.h" @@ -1104,3 +1107,5 @@ operator>> ( ACE_ENDTRY; return 0; } + +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ diff --git a/TAO/tao/PollableC.h b/TAO/tao/PollableC.h index ace8b397b10..28562d59e52 100644 --- a/TAO/tao/PollableC.h +++ b/TAO/tao/PollableC.h @@ -21,6 +21,9 @@ #define TAO_IDL_POLLABLEC_H #include "tao/corbafwd.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) + #include "tao/Object.h" #include "tao/Exception.h" #include "tao/CDR.h" @@ -434,4 +437,6 @@ CORBA::Boolean TAO_Export operator>> (TAO_InputCDR &, CORBA_PollableSet::Unknown #pragma warning(default:4250) #endif /* _MSC_VER */ +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ + #endif /* TAO_IDL_POLLABLEC_H */ diff --git a/TAO/tao/PollableS.cpp b/TAO/tao/PollableS.cpp index 77d7952323f..7471731932d 100644 --- a/TAO/tao/PollableS.cpp +++ b/TAO/tao/PollableS.cpp @@ -18,6 +18,9 @@ // ================================================================ #include "tao/PollableS.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) + #include "tao/Operation_Table.h" #include "tao/Server_Request.h" @@ -271,7 +274,7 @@ POA_CORBA::_tao_collocated_Pollable::_tao_collocated_Pollable ( POA_CORBA::Pollable_ptr servant, TAO_Stub *stub ) - : ACE_NESTED_CLASS (CORBA,Pollable) (), + : ACE_CORBA_1 (Pollable) (), CORBA_Object (stub, servant, 1), servant_ (servant) { @@ -516,7 +519,7 @@ POA_CORBA::_tao_collocated_DIIPollable::_tao_collocated_DIIPollable ( POA_CORBA::DIIPollable_ptr servant, TAO_Stub *stub ) - : ACE_NESTED_CLASS (CORBA,DIIPollable) (), + : ACE_CORBA_1 (DIIPollable) (), ACE_NESTED_CLASS (POA_CORBA,_tao_collocated_Pollable) (servant, stub), CORBA_Object (stub, servant, 1), servant_ (servant) @@ -863,7 +866,7 @@ POA_CORBA::_tao_collocated_PollableSet::_tao_collocated_PollableSet ( POA_CORBA::PollableSet_ptr servant, TAO_Stub *stub ) - : ACE_NESTED_CLASS (CORBA,PollableSet) (), + : ACE_CORBA_1 (PollableSet) (), CORBA_Object (stub, servant, 1), servant_ (servant) { @@ -944,3 +947,4 @@ POA_CORBA::PollableSet::_this (CORBA_Environment &ACE_TRY_ENV) ACE_CHECK_RETURN (0); return new POA_CORBA::_tao_collocated_PollableSet (this, stub); } +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ diff --git a/TAO/tao/PollableS.h b/TAO/tao/PollableS.h index 12543d0c754..6c977edd778 100644 --- a/TAO/tao/PollableS.h +++ b/TAO/tao/PollableS.h @@ -21,6 +21,9 @@ #define TAO_IDL_POLLABLES_H #include "tao/PollableC.h" + +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) + #include "tao/POA_CORBA.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) @@ -229,4 +232,6 @@ private: #pragma warning(default:4250) #endif /* _MSC_VER */ +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ + #endif /* ifndef */ diff --git a/TAO/tao/Reply_Dispatcher.cpp b/TAO/tao/Reply_Dispatcher.cpp index e819776faab..372cc7e3061 100644 --- a/TAO/tao/Reply_Dispatcher.cpp +++ b/TAO/tao/Reply_Dispatcher.cpp @@ -1,6 +1,8 @@ // $Id$ #include "tao/Reply_Dispatcher.h" +#include "tao/debug.h" +#include "tao/ORB_Core.h" #if !defined (__ACE_INLINE__) #include "tao/Reply_Dispatcher.i" @@ -8,6 +10,7 @@ // Constructor. TAO_Reply_Dispatcher::TAO_Reply_Dispatcher (void) + // : reply_received_ (0) { } @@ -22,12 +25,20 @@ TAO_Reply_Dispatcher::message_state (void) const return 0; } +// int +// TAO_Reply_Dispatcher::reply_received (void) const +// { +// return reply_received_; +// } + // ********************************************************************* // Constructor. -TAO_Synch_Reply_Dispatcher:: - TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state) - : message_state_ (message_state) +TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core) + : message_state_ (0), + reply_cdr_ (orb_core->create_input_cdr_data_block (ACE_CDR::DEFAULT_BUFSIZE), + TAO_ENCAP_BYTE_ORDER, + orb_core) { } @@ -39,22 +50,15 @@ TAO_Synch_Reply_Dispatcher::~TAO_Synch_Reply_Dispatcher (void) // Dispatch the reply. int TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status, - const TAO_GIOP_Version& version, - TAO_GIOP_ServiceContextList& reply_ctx, - TAO_GIOP_Message_State* message_state) + const TAO_GIOP_Version &version, + TAO_GIOP_ServiceContextList &reply_ctx, + TAO_GIOP_Message_State *message_state) { -# if defined (ACE_NDEBUG) - ACE_UNUSED_ARG (message_state); -# endif /* ACE_NDEBUG */ - - ACE_ASSERT (message_state == this->message_state_); - // @@ Notice that the message is ignored because we assume that - // the message_state is the same we are giving down to the ORB to - // use.... I.E. this class cannot be used with Muxed stream, but - // chances are that the way to implement that will change several - // times in the next few weeks. + // this->reply_received_ = 1; + this->reply_status_ = reply_status; this->version_ = version; + this->message_state_ = message_state; // Steal the buffer, that way we don't do any unnecesary copies of // this data. @@ -63,6 +67,9 @@ TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status, TAO_GIOP_ServiceContext* context_list = reply_ctx.get_buffer (1); this->reply_ctx_.replace (max, len, context_list, 1); + // Steal the buffer so that no copying is done. + this->reply_cdr_.reset (message_state->cdr.steal_contents (), + message_state->cdr.byte_order ()); return 1; } @@ -71,3 +78,72 @@ TAO_Synch_Reply_Dispatcher::message_state (void) const { return this->message_state_; } + +TAO_InputCDR & +TAO_Synch_Reply_Dispatcher::reply_cdr (void) +{ + return this->reply_cdr_; +} + + +// ********************************************************************* +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) +// Constructor. +TAO_Asynch_Reply_Dispatcher::TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel, + Messaging::ReplyHandler_ptr reply_handler_ptr) + : reply_handler_skel_ (reply_handler_skel), + reply_handler_ (reply_handler_ptr) +{ +} + +// Destructor. +TAO_Asynch_Reply_Dispatcher::~TAO_Asynch_Reply_Dispatcher (void) +{ +} + +// Dispatch the reply. +int +TAO_Asynch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status, + const TAO_GIOP_Version &version, + TAO_GIOP_ServiceContextList &reply_ctx, + TAO_GIOP_Message_State *message_state) +{ + // this->reply_received_ = 1; + + this->reply_status_ = reply_status; + this->version_ = version; + this->message_state_ = message_state; + + // Steal the buffer, that way we don't do any unnecesary copies of + // this data. + CORBA::ULong max = reply_ctx.maximum (); + CORBA::ULong len = reply_ctx.length (); + TAO_GIOP_ServiceContext* context_list = reply_ctx.get_buffer (1); + this->reply_ctx_.replace (max, len, context_list, 1); + + if (TAO_debug_level >= 4) + { + ACE_DEBUG ((LM_DEBUG, + "(%P | %t):TAO_Asynch_Reply_Dispatcher::dispatch_reply:\n")); + } + + ACE_DECLARE_NEW_CORBA_ENV; + + // Call the Reply Handler's skeleton. + reply_handler_skel_ (message_state_->cdr, + reply_handler_, + ACE_TRY_ENV); + + // This was dynamically allocated. Now the job is done. Commit + // suicide here. + delete this; + + return 1; +} + +TAO_GIOP_Message_State * +TAO_Asynch_Reply_Dispatcher::message_state (void) const +{ + return this->message_state_; +} +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ diff --git a/TAO/tao/Reply_Dispatcher.h b/TAO/tao/Reply_Dispatcher.h index 90132289124..78f1812d06e 100644 --- a/TAO/tao/Reply_Dispatcher.h +++ b/TAO/tao/Reply_Dispatcher.h @@ -1,3 +1,4 @@ +// This may look like C, but it's really -*- C++ -*- // $Id$ // ============================================================================ @@ -20,6 +21,7 @@ #define TAO_REPLY_DISPATCHER_H #include "tao/GIOP.h" +#include "tao/MessagingC.h" // Forward Declarations. @@ -44,15 +46,21 @@ public: const TAO_GIOP_Version& version, TAO_GIOP_ServiceContextList& reply_ctx, TAO_GIOP_Message_State* message_state) = 0; - // Dispatch the reply. + // Dispatch the reply. Return 1 on sucess, -1 on error. virtual TAO_GIOP_Message_State *message_state (void) const; - // Get the Message State - // By default it returns <0> but if the request can pre-allocate one - // for us then we can return it and pass it along for non-Muxed - // transports. + // Get the Message State into which the reply has been read. + + // virtual int reply_received (void) const; + // Return the reply received flag. + + // protected: + // int reply_received_; + // Reply received flag. }; +// ********************************************************************* + class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher { // = TITLE @@ -63,7 +71,7 @@ class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher // public: - TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state); + TAO_Synch_Reply_Dispatcher (TAO_ORB_Core *orb_core); // Constructor. virtual ~TAO_Synch_Reply_Dispatcher (void); @@ -73,6 +81,68 @@ public: // Get the reply status. const TAO_GIOP_Version& version (void) const; + // Get the GIOP version. + + TAO_GIOP_ServiceContextList& reply_ctx (void); + // Get the reply context + + virtual int dispatch_reply (CORBA::ULong reply_status, + const TAO_GIOP_Version& version, + TAO_GIOP_ServiceContextList& reply_ctx, + TAO_GIOP_Message_State* message_state); + // Dispatch the reply. Copy the buffers and return. Since the + // invocation is synchronous demarshalling will take place on the + // stack. + // Return 1 on sucess, -1 on error. + + virtual TAO_GIOP_Message_State *message_state (void) const; + // Return the message state of this invocation. + + virtual TAO_InputCDR &reply_cdr (void); + // Return the reply CDR. + +private: + CORBA::ULong reply_status_; + // Reply or LocateReply status. + + TAO_GIOP_Version version_; + // The version + + TAO_GIOP_ServiceContextList reply_ctx_; + // The service context list + + TAO_GIOP_Message_State *message_state_; + // CDR stream for reading the input. + // @@ Carlos : message_state should go away. All we need is the reply + // cdr. Is that rite? (Alex). + + TAO_InputCDR reply_cdr_; + // CDR where the reply message is placed. +}; + +// ********************************************************************* +#if defined (TAO_HAS_CORBA_MESSAGING) && defined (TAO_POLLER) +class TAO_Export TAO_Asynch_Reply_Dispatcher : public TAO_Reply_Dispatcher +{ + // = TITLE + // + // Reply dispatcher for Asynchoronous Method Invocation (AMI)s. + // + // = DESCRIPTION + // + +public: + TAO_Asynch_Reply_Dispatcher (const TAO_Reply_Handler_Skeleton &reply_handler_skel, + Messaging::ReplyHandler_ptr reply_handler_ptr); + // Constructor. + + virtual ~TAO_Asynch_Reply_Dispatcher (void); + // Destructor. + + CORBA::ULong reply_status (void) const; + // Get the reply status. + + const TAO_GIOP_Version& version (void) const; // Get the GIOP version TAO_GIOP_ServiceContextList& reply_ctx (void); @@ -82,7 +152,13 @@ public: const TAO_GIOP_Version& version, TAO_GIOP_ServiceContextList& reply_ctx, TAO_GIOP_Message_State* message_state); + // Dispatch the reply. This involves demarshalling the reply and + // calling the appropriate call back hook method on the reply + // handler. + // Return 1 on sucess, -1 on error. + virtual TAO_GIOP_Message_State *message_state (void) const; + // Return the message state. private: CORBA::ULong reply_status_; @@ -96,7 +172,17 @@ private: TAO_GIOP_Message_State *message_state_; // CDR stream for reading the input. + // @@ Carlos : message_state should go away. All we need is the reply + // cdr. Is that rite? (Alex). + + const TAO_Reply_Handler_Skeleton reply_handler_skel_; + // Skeleton for the call back method in the Reply Handler. + + Messaging::ReplyHandler_ptr reply_handler_; + // Reply Handler passed in the Asynchronous Invocation. }; +#endif /* TAO_HAS_CORBA_MESSAGING && TAO_POLLER */ +// ********************************************************************* #if defined (__ACE_INLINE__) #include "tao/Reply_Dispatcher.i" diff --git a/TAO/tao/Transport_Mux_Strategy.cpp b/TAO/tao/Transport_Mux_Strategy.cpp index 647cef53e67..b18471fb17a 100644 --- a/TAO/tao/Transport_Mux_Strategy.cpp +++ b/TAO/tao/Transport_Mux_Strategy.cpp @@ -3,14 +3,7 @@ #include "tao/Transport_Mux_Strategy.h" #include "tao/Reply_Dispatcher.h" #include "tao/debug.h" - -// @@ Alex: there is another aspect that is controlled by this -// strategy: the demuxed version must idle() the transport -// right after the request is sent, otherwise nobody else will be -// able to use it. -// The exclusive version must idle it after the reply is received, -// to guarantee that nobody else is using it. -// We may need to add a couple of methods to implement that. +#include "tao/Pluggable.h" TAO_Transport_Mux_Strategy::TAO_Transport_Mux_Strategy (void) { @@ -22,110 +15,213 @@ TAO_Transport_Mux_Strategy::~TAO_Transport_Mux_Strategy (void) // ********************************************************************* -TAO_Muxed_TMS::TAO_Muxed_TMS (void) +TAO_Exclusive_TMS::TAO_Exclusive_TMS (TAO_ORB_Core *orb_core) + : request_id_generator_ (0), + request_id_ (0), + rd_ (0), + message_state_ (orb_core) { } -TAO_Muxed_TMS::~TAO_Muxed_TMS (void) +TAO_Exclusive_TMS::~TAO_Exclusive_TMS (void) { - // @@ delete ??? } // Generate and return an unique request id for the current -// invocation. +// invocation. We can actually return a predecided ULong, since we +// allow only one invocation over this connection at a time. CORBA::ULong -TAO_Muxed_TMS::request_id (void) +TAO_Exclusive_TMS::request_id (void) { - // @@ - return 0; + return this->request_id_generator_++; } -// Bind the dispatcher with the request id. +// Bind the handler with the request id. int -TAO_Muxed_TMS::bind_dispatcher (CORBA::ULong, - TAO_Reply_Dispatcher *) +TAO_Exclusive_TMS::bind_dispatcher (CORBA::ULong request_id, + TAO_Reply_Dispatcher *rd) { - // @@ + this->request_id_ = request_id; + this->rd_ = rd; + + // @@ Carlos: This method marks the <start> of an invocation. This + // should be the correct place to <reset> the message state. Do I + // make sense? (Alex). + + // If there was a previous reply, cleanup its state first. + if (this->message_state_.message_size != 0) + this->message_state_.reset (); + return 0; } int -TAO_Muxed_TMS::dispatch_reply (CORBA::ULong /* request_id */, - CORBA::ULong /* reply_status */, - const TAO_GIOP_Version&, - TAO_GIOP_ServiceContextList& /* reply_ctx */, - TAO_GIOP_Message_State*) +TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id, + CORBA::ULong reply_status, + const TAO_GIOP_Version& version, + TAO_GIOP_ServiceContextList& reply_ctx, + TAO_GIOP_Message_State* message_state) { - // @@ - return -1; + // There can be only one message state possible. Just do a sanity + // check here. + ACE_ASSERT (message_state == &(this->message_state_)); + + // Check the ids. + if (this->request_id_ != request_id) + { + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "TAO_Exclusive_TMS::dispatch_reply - <%d != %d>\n", + this->request_id_, request_id)); + return -1; + } + + TAO_Reply_Dispatcher *rd = this->rd_; + this->request_id_ = 0xdeadbeef; // @@ What is a good value??? + this->rd_ = 0; + + return rd->dispatch_reply (reply_status, + version, + reply_ctx, + message_state); } TAO_GIOP_Message_State * -TAO_Muxed_TMS::get_message_state (void) +TAO_Exclusive_TMS::get_message_state (void) { - return 0; + if (this->rd_ == 0) + return 0; + + return &(this->message_state_); } void -TAO_Muxed_TMS::destroy_message_state (TAO_GIOP_Message_State *) +TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *) +{ + // No Op. +} + +int +TAO_Exclusive_TMS::idle_after_send (TAO_Transport *) { - // @@ Implement. - // delete message_state; - // message_state = 0; + // No op. + return 0; } + +int +TAO_Exclusive_TMS::idle_after_reply (TAO_Transport *transport) +{ + if (transport != 0) + return transport->idle (); + return 0; +} + +int +TAO_Exclusive_TMS::reply_received (const CORBA::ULong request_id) +{ + if (this->rd_ == 0) + { + // Reply should have been dispatched already. + return 1; + } + else if (this->request_id_ == request_id) + { + // Reply dispatcher is still here. + return 0; + } + else + { + // Error. Request id is not matching. + + if (TAO_debug_level > 0) + { + ACE_DEBUG ((LM_DEBUG, + "(%P | %t):TAO_Exclusive_TMS::reply_received:" + "Invalid request_id \n")); + } + return -1; + } +} + // ********************************************************************* -TAO_Exclusive_TMS::TAO_Exclusive_TMS (void) +TAO_Muxed_TMS::TAO_Muxed_TMS (TAO_ORB_Core *orb_core) : request_id_generator_ (0), - request_id_ (0), - rd_ (0) + orb_core_ (orb_core), + message_state_ (0) { } -TAO_Exclusive_TMS::~TAO_Exclusive_TMS (void) +TAO_Muxed_TMS::~TAO_Muxed_TMS (void) { } // Generate and return an unique request id for the current -// invocation. We can actually return a predecided ULong, since we -// allow only one invocation over this connection at a time. +// invocation. CORBA::ULong -TAO_Exclusive_TMS::request_id (void) +TAO_Muxed_TMS::request_id (void) { + // @@ What is a good error return value? + ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon, + this->request_id_lock_, 0); return this->request_id_generator_++; } -// Bind the handler with the request id. +// Bind the dispatcher with the request id. int -TAO_Exclusive_TMS::bind_dispatcher (CORBA::ULong request_id, - TAO_Reply_Dispatcher *rd) +TAO_Muxed_TMS::bind_dispatcher (CORBA::ULong request_id, + TAO_Reply_Dispatcher *rd) { - this->request_id_ = request_id; - this->rd_ = rd; + int result = this->dispatcher_table_.bind (request_id, rd); + + if (result != 0) + { + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "(%P | %t):TAO_Muxed_TMS::bind_dispatcher: " + "bind dispatcher failed: result = %d\n", + result)); + + return -1; + } return 0; } int -TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id, - CORBA::ULong reply_status, - const TAO_GIOP_Version& version, - TAO_GIOP_ServiceContextList& reply_ctx, - TAO_GIOP_Message_State* message_state) +TAO_Muxed_TMS::dispatch_reply (CORBA::ULong request_id, + CORBA::ULong reply_status, + const TAO_GIOP_Version &version, + TAO_GIOP_ServiceContextList &reply_ctx, + TAO_GIOP_Message_State *message_state) { - if (this->request_id_ != request_id) + // This message state should be the same as the one we have here, + // which we gave to the Transport to read the message. Just a sanity + // check here. + ACE_ASSERT (message_state == this->message_state_); + + int result = 0; + TAO_Reply_Dispatcher *rd = 0; + + // Grab the reply dispatcher for this id. + result = this->dispatcher_table_.unbind (request_id, rd); + + if (result != 0) { if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, - "TAO_Exclusive_TMS::dispatch_reply - <%d != %d>\n", - this->request_id_, request_id)); - return 0; + "(%P | %t):TAO_Muxed_TMS::dispatch_reply: " + "unbind dispatcher failed: result = %d\n", + result)); + + return -1; } - TAO_Reply_Dispatcher *rd = this->rd_; - this->request_id_ = 0xdeadbeef; // @@ What is a good value??? - this->rd_ = 0; + // @@ Carlos : We could save the <messagee_state> somehow and then + // signal some other thread to go ahead read the incoming message + // if any. Is this what you were telling me before? (Alex). + // Dispatch the reply. return rd->dispatch_reply (reply_status, version, reply_ctx, @@ -133,16 +229,113 @@ TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id, } TAO_GIOP_Message_State * -TAO_Exclusive_TMS::get_message_state (void) +TAO_Muxed_TMS::get_message_state (void) { - if (this->rd_ == 0) - return 0; - - return this->rd_->message_state (); + if (this->message_state_ == 0) + { + // Create the next message state. + ACE_NEW_RETURN (this->message_state_, + TAO_GIOP_Message_State (this->orb_core_), + 0); + } + + return this->message_state_; } -// NOOP function. void -TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *) +TAO_Muxed_TMS::destroy_message_state (TAO_GIOP_Message_State *) +{ + delete this->message_state_; + this->message_state_ = 0; +} + +int +TAO_Muxed_TMS::idle_after_send (TAO_Transport *transport) +{ + if (transport != 0) + return transport->idle (); + + return 0; +} + +int +TAO_Muxed_TMS::idle_after_reply (TAO_Transport *) +{ + return 0; +} + +int +TAO_Muxed_TMS::reply_received (const CORBA::ULong request_id) { + if (this->dispatcher_table_.find (request_id) == -1) + { + // Reply should have been dispatched already. + return 1; + } + else + { + // Reply dispatcher is still here. + return 0; + } } + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class ACE_Hash_Map_Manager_Ex <CORBA::ULong, + TAO_Reply_Dispatcher *, + ACE_Hash <CORBA::ULong>, + ACE_Equal_To <CORBA::ULong>, + ACE_SYNCH_MUTEX>; + +template class ACE_Hash_Map_Entry<CORBA::ULong, + TAO_Reply_Dispatcher *>; + +template class ACE_Hash_Map_Iterator_Base_Ex<CORBA::ULong, + TAO_Reply_Dispatcher *, + ACE_Hash<unsigned int>, + ACE_Equal_To<unsigned int>, + ACE_SYNCH_MUTEX>; + +template class ACE_Hash_Map_Iterator_Ex<CORBA::ULong, + TAO_Reply_Dispatcher*, + ACE_Hash<CORBA::ULong>, + ACE_Equal_To<CORBA::ULong>, + ACE_SYNCH_MUTEX>; + +template class ACE_Hash_Map_Reverse_Iterator_Ex<CORBA::ULong, + TAO_Reply_Dispatcher*, + ACE_Hash<CORBA::ULong>, + ACE_Equal_To<CORBA::ULong>, + ACE_SYNCH_MUTEX>; +template class ACE_Equal_To <CORBA::ULong>; + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate ACE_Hash_Map_Manager_Ex <CORBA::ULong, + TAO_Reply_Dispatcher *, + ACE_Hash <CORBA::ULong>, + ACE_Equal_To <CORBA::ULong>, + ACE_SYNCH_MUTEX> + +#pragma instantiate ACE_Hash_Map_Entry<CORBA::ULong, + TAO_Reply_Dispatcher *> + +#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<unsigned int, + TAO_Reply_Dispatcher *, + ACE_Hash<unsigned int>, + ACE_Equal_To<unsigned int>, + ACE_SYNCH_MUTEX> + +#pragma instantiate ACE_Hash_Map_Iterator_Ex<CORBA::ULong, + TAO_Reply_Dispatcher*, + ACE_Hash<CORBA::ULong>, + ACE_Equal_To<CORBA::ULong>, + ACE_SYNCH_MUTEX> + +#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<CORBA::ULong, + TAO_Reply_Dispatcher*, + ACE_Hash<CORBA::ULong>, + ACE_Equal_To<CORBA::ULong>, + ACE_SYNCH_MUTEX> + +#pragma instantiate ACE_Equal_To <CORBA::ULong> + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Transport_Mux_Strategy.h b/TAO/tao/Transport_Mux_Strategy.h index 8cdb605aec9..6c13a03e73d 100644 --- a/TAO/tao/Transport_Mux_Strategy.h +++ b/TAO/tao/Transport_Mux_Strategy.h @@ -1,3 +1,4 @@ +// This may look like C, but it's really -*- C++ -*- // $Id$ // ============================================================================ @@ -25,6 +26,9 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ +#include "ace/Functor.h" +#include "ace/Hash_Map_Manager.h" + class TAO_Reply_Dispatcher; class TAO_Export TAO_Transport_Mux_Strategy @@ -37,7 +41,7 @@ class TAO_Export TAO_Transport_Mux_Strategy // // = DESCRIPTION // - + public: TAO_Transport_Mux_Strategy (void); // Base class constructor. @@ -50,13 +54,12 @@ public: // invocation. // = Bind and Find methods for the <Request ID, ReplyDispatcher> - // pairs. The ReplyDispatcher is not the CORBA ReplyDispatcher of - // the AMI's. + // pairs. virtual int bind_dispatcher (CORBA::ULong request_id, - TAO_Reply_Dispatcher *rh) = 0; + TAO_Reply_Dispatcher *rd) = 0; // Bind the dispatcher with the request id. - + virtual int dispatch_reply (CORBA::ULong request_id, CORBA::ULong reply_status, const TAO_GIOP_Version& version, @@ -74,78 +77,170 @@ public: virtual void destroy_message_state (TAO_GIOP_Message_State *) = 0; // Destroy a CDR stream. + + virtual int idle_after_send (TAO_Transport *) = 0; + // Request has been just sent, but the reply is not received. Idle + // the transport now. + + virtual int idle_after_reply (TAO_Transport *) = 0; + // Request is sent and the reply is received. Idle the transport + // now. + + virtual int reply_received (const CORBA::ULong request_id) = 0; + // Check whether the reply has been receieved for the request with + // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id + // is invalid or there are some errors. }; -class TAO_Export TAO_Muxed_TMS : public TAO_Transport_Mux_Strategy +// ********************************************************************* + +class TAO_Export TAO_Exclusive_TMS : public TAO_Transport_Mux_Strategy { // = TITLE // - // Connection is multiplexed for many requests. + // Connection exclusive for the request. // // = DESCRIPTION // public: - TAO_Muxed_TMS (void); + TAO_Exclusive_TMS (TAO_ORB_Core *orb_core); // Constructor. - virtual ~TAO_Muxed_TMS (void); + virtual ~TAO_Exclusive_TMS (void); // Destructor. - // = The TAO Request Strategy methods... virtual CORBA::ULong request_id (void); + // Generate and return an unique request id for the current + // invocation. + virtual int bind_dispatcher (CORBA::ULong request_id, TAO_Reply_Dispatcher *rh); + // Bind the dispatcher with the request id. + virtual int dispatch_reply (CORBA::ULong request_id, CORBA::ULong reply_status, const TAO_GIOP_Version& version, TAO_GIOP_ServiceContextList& reply_ctx, TAO_GIOP_Message_State* message_state); + // Dispatch the reply for <request_id>, cleanup any resources + // allocated for that request. + virtual TAO_GIOP_Message_State *get_message_state (void); + // Return the pre-allocated message state. + virtual void destroy_message_state (TAO_GIOP_Message_State *); + // No op in this strategy. + + virtual int idle_after_send (TAO_Transport *transport); + // Request has been just sent, but the reply is not received. Idle + // the transport now. + + virtual int idle_after_reply (TAO_Transport *transport); + // Request is sent and the reply is received. Idle the transport + // now. + + virtual int reply_received (const CORBA::ULong request_id); + // Check whether the reply has been receieved for the request with + // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id + // is invalid or there are errors. protected: - // @@ HASH TABLE??? + CORBA::ULong request_id_generator_; + // Used to generate a different request_id on each call to + // request_id(). + + CORBA::ULong request_id_; + // Request id for the current request. + + TAO_Reply_Dispatcher *rd_; + // Reply Dispatcher corresponding to the request. + + TAO_GIOP_Message_State message_state_; + // Message state to read the incoming message. }; -class TAO_Export TAO_Exclusive_TMS : public TAO_Transport_Mux_Strategy +// ********************************************************************* + +class TAO_Export TAO_Muxed_TMS : public TAO_Transport_Mux_Strategy { // = TITLE // - // Connection exclusive for the request. + // Connection is multiplexed for many requests. // // = DESCRIPTION // public: - TAO_Exclusive_TMS (void); + TAO_Muxed_TMS (TAO_ORB_Core *orb_core); // Constructor. - virtual ~TAO_Exclusive_TMS (void); + virtual ~TAO_Muxed_TMS (void); // Destructor. - // = The TAO Request Strategy methods... virtual CORBA::ULong request_id (void); + // Generate and return an unique request id for the current + // invocation. + virtual int bind_dispatcher (CORBA::ULong request_id, TAO_Reply_Dispatcher *rh); + // Bind the dispatcher with the request id. + virtual int dispatch_reply (CORBA::ULong request_id, CORBA::ULong reply_status, const TAO_GIOP_Version& version, TAO_GIOP_ServiceContextList& reply_ctx, TAO_GIOP_Message_State* message_state); + // Dispatch the reply for <request_id>, cleanup any resources + // allocated for that request. + virtual TAO_GIOP_Message_State *get_message_state (void); + // Return the message state. + virtual void destroy_message_state (TAO_GIOP_Message_State *); + // No op in this strategy. + + virtual int idle_after_send (TAO_Transport *transport); + // Request has been just sent, but the reply is not received. Idle + // the transport now. + + virtual int idle_after_reply (TAO_Transport *transport); + // Request is sent and the reply is received. Idle the transport + // now. + + virtual int reply_received (const CORBA::ULong request_id); + // Check whether the reply has been receieved for the request with + // <request_id>. Return 0 if no, 1 on yes and -1 if the request_id + // is invalid or there are errors. protected: CORBA::ULong request_id_generator_; // Used to generate a different request_id on each call to - // request_id() + // request_id(). - CORBA::ULong request_id_; - // Request id for the current request. + ACE_SYNCH_MUTEX request_id_lock_; + // Lock to protect the state of the request id generator. - TAO_Reply_Dispatcher *rd_; - // Reply Dispatcher corresponding to the request. + typedef ACE_Hash_Map_Manager_Ex <CORBA::ULong, + TAO_Reply_Dispatcher *, + ACE_Hash <CORBA::ULong>, + ACE_Equal_To <CORBA::ULong>, + ACE_SYNCH_MUTEX> REQUEST_DISPATCHER_TABLE; + + REQUEST_DISPATCHER_TABLE dispatcher_table_; + // Table of <Request ID, Reply Dispatcher> pairs. + + TAO_ORB_Core *orb_core_; + // Keep track of the orb core pointer. We need to this to create the + // Reply Dispatchers. + + TAO_GIOP_Message_State *message_state_; + // Message state where the current input message is being read. This + // is created at start of each incoming message. When that message + // is read, the message is processed and for the next message a new + // message state is created. }; +// ********************************************************************* + #endif /* TRANSPORT_MUX_STRATEGY_H */ diff --git a/TAO/tao/Wait_Strategy.cpp b/TAO/tao/Wait_Strategy.cpp index 5f65b308063..6fcd47d5026 100644 --- a/TAO/tao/Wait_Strategy.cpp +++ b/TAO/tao/Wait_Strategy.cpp @@ -46,17 +46,9 @@ TAO_Wait_On_Reactor::wait (ACE_Time_Value *max_wait_time) ACE_Reactor* reactor = this->transport_->orb_core ()->reactor (); - // @@ Carlos: Can we rely on <reply_received> flag in the AMI case? - // It depends on whether we are expecting replies or not, right? - // So, I think we can simply return from this loop, when some - // event occurs, and the invocation guy can call us again, if it - // wants to. (AMI will call, if it is expecting replies, SMI will - // call if the reply is not arrived) (Alex). - // @@ Alex: I think you are right, let's fix it later.... - - // Do the event loop, till we received the reply. - - int result = 1; + // Do the event loop, till we fully receive a reply. + + int result = 1; // So the first iteration works... this->reply_received_ = 0; while (this->reply_received_ == 0 && result > 0) { @@ -153,23 +145,12 @@ TAO_Wait_On_Leader_Follower::sending_request (TAO_ORB_Core *orb_core, //if (TAO_debug_level > 0) //ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - sending request for <%x>\n", //this->transport_)); - } - // @@ Should we do here that checking for the difference in the - // Reactor used??? (Alex). - // Register the handler. this->transport_->register_handler (); - // @@ Carlos: We do this only if the reactor is different right? - // (Alex) - // @@ Alex: that is taken care of in - // IIOP_Transport::register_handler, but maybe we shouldn't do - // this checking everytime, I recall that there was a problem - // (sometime ago) about using the wrong ORB core, but that may - // have been fixed... - - // Send the request + + // Send the request. int result = this->TAO_Wait_Strategy::sending_request (orb_core, two_way); @@ -232,9 +213,11 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time) if (leader_follower.add_follower (cond) == -1) ACE_ERROR ((LM_ERROR, "TAO (%P|%t) TAO_Wait_On_Leader_Follower::wait - " - "add_follower failed for <%x>\n", cond)); + "add_follower failed for <%x>\n", + cond)); - while (!this->reply_received_ && leader_follower.leader_available ()) + while (!this->reply_received_ && + leader_follower.leader_available ()) { if (max_wait_time == 0) { @@ -264,7 +247,8 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time) // our input. We are already removed from the follower queue. if (this->reply_received_ == 1) { - // But first reset our state in case we are invoked again... + // But first reset our state in case we are invoked + // again... this->reply_received_ = 0; this->expecting_response_ = 0; this->calling_thread_ = ACE_OS::NULL_thread; @@ -273,7 +257,8 @@ TAO_Wait_On_Leader_Follower::wait (ACE_Time_Value *max_wait_time) } else if (this->reply_received_ == -1) { - // But first reset our state in case we are invoked again... + // But first reset our state in case we are invoked + // again... this->reply_received_ = 0; this->expecting_response_ = 0; this->calling_thread_ = ACE_OS::NULL_thread; @@ -377,7 +362,8 @@ TAO_Wait_On_Leader_Follower::handle_input (void) // Obtain the lock. ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, ace_mon, - orb_core->leader_follower ().lock (), -1); + orb_core->leader_follower ().lock (), + -1); // ACE_DEBUG ((LM_DEBUG, "TAO (%P|%t) - reading reply <%x>\n", // this->transport_)); @@ -399,7 +385,6 @@ TAO_Wait_On_Leader_Follower::handle_input (void) // Receive any data that is available, without blocking... int result = this->transport_->handle_client_input (0); - // Data was read, but there the reply has not been completely // received... if (result == 0) @@ -494,12 +479,12 @@ TAO_Wait_On_Read::~TAO_Wait_On_Read (void) int TAO_Wait_On_Read::wait (ACE_Time_Value * max_wait_time) { - int received_reply = 0; - while (received_reply != 1) + int reply_complete = 0; + while (reply_complete != 1) { - received_reply = + reply_complete = this->transport_->handle_client_input (1, max_wait_time); - if (received_reply == -1) + if (reply_complete == -1) return -1; } diff --git a/TAO/tao/Wait_Strategy.h b/TAO/tao/Wait_Strategy.h index b436903f605..1433b5bd5cf 100644 --- a/TAO/tao/Wait_Strategy.h +++ b/TAO/tao/Wait_Strategy.h @@ -1,3 +1,4 @@ +// This may look like C, but it's really -*- C++ -*- // $Id$ // ============================================================================ diff --git a/TAO/tao/default_client.cpp b/TAO/tao/default_client.cpp index 18e327e16aa..3325ac7a5c2 100644 --- a/TAO/tao/default_client.cpp +++ b/TAO/tao/default_client.cpp @@ -157,20 +157,18 @@ TAO_Default_Client_Strategy_Factory::create_profile_lock (void) // Create the correct client transport muxing strategy. TAO_Transport_Mux_Strategy * -TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (void) +TAO_Default_Client_Strategy_Factory::create_transport_mux_strategy (TAO_ORB_Core *orb_core) { TAO_Transport_Mux_Strategy *tms = 0; - //if (this->transport_mux_strategy_ == TAO_MUXED_TMS) - //ACE_NEW_RETURN (tms, - // TAO_Muxed_TMS, - // 0); - //else - - // @@ Alex: Always creating Exclusive TMS. (Alex). - ACE_NEW_RETURN (tms, - TAO_Exclusive_TMS, - 0); + if (this->transport_mux_strategy_ == TAO_MUXED_TMS) + ACE_NEW_RETURN (tms, + TAO_Muxed_TMS (orb_core), + 0); + else + ACE_NEW_RETURN (tms, + TAO_Exclusive_TMS (orb_core), + 0); return tms; } diff --git a/TAO/tao/default_client.h b/TAO/tao/default_client.h index 6afeec2803d..0261dfca0f8 100644 --- a/TAO/tao/default_client.h +++ b/TAO/tao/default_client.h @@ -47,7 +47,7 @@ public: // the TAO_GIOP_Invocation::location_forward and the // TAO_GIOP_Invocation::start - TAO_Transport_Mux_Strategy *create_transport_mux_strategy (void); + TAO_Transport_Mux_Strategy *create_transport_mux_strategy (TAO_ORB_Core *orb_core); // Create the correct client request muxing strategy. TAO_Wait_Strategy *create_wait_strategy (TAO_Transport *transport); diff --git a/TAO/tests/AMI/Makefile b/TAO/tests/AMI/Makefile new file mode 100644 index 00000000000..86ac3a83c4b --- /dev/null +++ b/TAO/tests/AMI/Makefile @@ -0,0 +1,1899 @@ +#---------------------------------------------------------------------------- +# +# $Id$ +# +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# Local macros +#---------------------------------------------------------------------------- + +ifndef TAO_ROOT + TAO_ROOT = $(ACE_ROOT)/TAO +endif # ! TAO_ROOT + +LDLIBS = -lTAO + +IDLFILES = testC testS +BIN = server simple-client client + +SRC = $(addsuffix .cpp, $(BIN) $(IDLFILES) test_i) + +CLIENT_OBJS = client.o $(addsuffix .o, $(IDLFILES)) +SIMPLE_CLIENT_OBJS = simple-client.o $(addsuffix .o, $(IDLFILES)) +ORB_CREATION_OBJS = orb_creation.o $(addsuffix .o, $(IDLFILES)) +SERVER_OBJS = server.o test_i.o $(addsuffix .o, $(IDLFILES)) + +BUILD = $(BIN) +VLDLIBS = $(LDLIBS:%=%$(VAR)) +VBIN = $(BIN:%=%$(VAR)) + +#---------------------------------------------------------------------------- +# Include macros and targets +#---------------------------------------------------------------------------- + +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.local.GNU +include $(TAO_ROOT)/taoconfig.mk + +#---------------------------------------------------------------------------- +# Local targets +#---------------------------------------------------------------------------- + +override TAO_IDLFLAGS += -GC + +.PRECIOUS: $(foreach ext, $(IDL_EXT), test$(ext)) + +server: $(addprefix $(VDIR),$(SERVER_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +client: $(addprefix $(VDIR),$(CLIENT_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +orb_creation: $(addprefix $(VDIR),$(ORB_CREATION_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +simple-client: $(addprefix $(VDIR),$(SIMPLE_CLIENT_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +realclean: clean + -$(RM) $(foreach ext, $(IDL_EXT), test$(ext)) + +# DO NOT DELETE THIS LINE -- g++dep uses it. +# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. + +.obj/client.o .obj/client.so .shobj/client.o .shobj/client.so: client.cpp \ + $(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/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.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.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Malloc_Base.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.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/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/Thread_Manager.i \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.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/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(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/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(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/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(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 \ + testC.h $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i +.obj/server.o .obj/server.so .shobj/server.o .shobj/server.so: server.cpp \ + $(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/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 test_i.h \ + testS.h testC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(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/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.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i testS_T.h testS_T.i testS_T.cpp testS.i test_i.i +.obj/orb_creation.o .obj/orb_creation.so .shobj/orb_creation.o .shobj/orb_creation.so: orb_creation.cpp \ + $(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/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.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.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Malloc_Base.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.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/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/Thread_Manager.i \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.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/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(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/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(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/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(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 \ + testC.h $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i +.obj/simple-client.o .obj/simple-client.so .shobj/simple-client.o .shobj/simple-client.so: simple-client.cpp \ + $(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/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 \ + $(ACE_ROOT)/ace/Task.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.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.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Malloc_Base.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.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/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/Thread_Manager.i \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.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/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(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/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(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/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(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 \ + testC.h $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i +.obj/testC.o .obj/testC.so .shobj/testC.o .shobj/testC.so: testC.cpp testC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(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/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.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i \ + $(TAO_ROOT)/tao/Asynch_Invocation.h \ + $(TAO_ROOT)/tao/Asynch_Invocation.i +.obj/testS.o .obj/testS.so .shobj/testS.o .shobj/testS.so: testS.cpp testS.h testC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(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/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.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i testS_T.h testS_T.i testS_T.cpp testS.i +.obj/test_i.o .obj/test_i.so .shobj/test_i.o .shobj/test_i.so: test_i.cpp test_i.h testS.h testC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(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 \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(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/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.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.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/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/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/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/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/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.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/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 \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(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/Services.i \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.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/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/PollableC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/MessagingS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/MessagingS.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies.i \ + $(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/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 \ + $(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/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + testC.i testS_T.h testS_T.i testS_T.cpp testS.i test_i.i + +# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/tests/AMI/README b/TAO/tests/AMI/README new file mode 100644 index 00000000000..4c1d0b89859 --- /dev/null +++ b/TAO/tests/AMI/README @@ -0,0 +1,14 @@ +# $Id$ + +Description: + + This is a simple test for AMI callback model. Right now the +IDL compiler does not generate all the code. Therefore, you need to +copy test-handC.cpp onto testC.cpp. + + This is still in a development phase. It is not at all +complete. + +$ server -o test.ior +$ client -k file://test.ior -n 4 -i 1000 +$ simple_client -k file://test_ior diff --git a/TAO/tests/AMI/client.conf b/TAO/tests/AMI/client.conf new file mode 100644 index 00000000000..5276fe68900 --- /dev/null +++ b/TAO/tests/AMI/client.conf @@ -0,0 +1,2 @@ + +static Client_Strategy_Factory "-ORBiiopprofilelock null -ORBclientconnectionhandler RW" diff --git a/TAO/tests/AMI/client.cpp b/TAO/tests/AMI/client.cpp new file mode 100644 index 00000000000..31527aa0e42 --- /dev/null +++ b/TAO/tests/AMI/client.cpp @@ -0,0 +1,199 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/Task.h" +#include "testC.h" + +ACE_RCSID(MT_Client, client, "$Id$") + +const char *ior = "file://test.ior"; +int nthreads = 5; +int niterations = 5; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "k:n:i:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.optarg; + break; + case 'n': + nthreads = ACE_OS::atoi (get_opts.optarg); + break; + case 'i': + niterations = ACE_OS::atoi (get_opts.optarg); + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "-n <nthreads> " + "-i <niterations> " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +class Client : public ACE_Task_Base +{ + // = TITLE + // Run the client thread + // + // = DESCRIPTION + // Use the ACE_Task_Base class to run the client threads. + // +public: + Client (Simple_Server_ptr server, int niterations); + // ctor + + virtual int svc (void); + // The thread entry point. + +private: + Simple_Server_var server_; + // The server. + + int niterations_; + // The number of iterations on each client thread. +}; + +class Handler : public POA_AMI_Simple_Server_Handler +{ +public: + Handler (void) {}; + + ~Handler (void) {}; +}; + +int +main (int argc, char *argv[]) +{ + ACE_TRY_NEW_ENV + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var object = + orb->string_to_object (ior, ACE_TRY_ENV); + ACE_TRY_CHECK; + + Simple_Server_var server = + Simple_Server::_narrow (object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Object reference <%s> is nil\n", + ior), + 1); + } + + // Activate POA to handle the call back. + + CORBA::Object_var poa_object = + orb->resolve_initial_references("RootPOA"); + if (CORBA::is_nil (poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the POA.\n"), + 1); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + + poa_manager->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + + Client client (server.in (), niterations); + if (client.activate (THR_NEW_LWP | THR_JOINABLE, + nthreads) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot activate client threads\n"), + 1); + + client.thr_mgr ()->wait (); + + ACE_DEBUG ((LM_DEBUG, "threads finished\n")); + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Catched exception:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} + +// **************************************************************** + +Client::Client (Simple_Server_ptr server, + int niterations) + : server_ (Simple_Server::_duplicate (server)), + niterations_ (niterations) +{ +} + +int +Client::svc (void) +{ + ACE_TRY_NEW_ENV + { +#if 0 + // If we are using a global ORB this is a nop, otherwise it + // initializes the ORB resources for this thread. + int argc = 0; + char* argv[] = { "" }; + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; +#endif + + Handler handler; + AMI_Simple_Server_Handler_var the_handler = + handler._this (ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Long number = 0; + + for (int i = 0; i < this->niterations_; ++i) + { + server_->sendc_get_number (the_handler.in (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (TAO_debug_level > 0 && i % 100 == 0) + ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i)); + } + + number = server_->get_number (ACE_TRY_ENV); + + ACE_DEBUG ((LM_DEBUG, "(%P | %t) get_number = %d\n", number)); + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "MT_Client: exception raised"); + } + ACE_ENDTRY; + return 0; +} diff --git a/TAO/tests/AMI/client.dsp b/TAO/tests/AMI/client.dsp new file mode 100644 index 00000000000..cce3974642f --- /dev/null +++ b/TAO/tests/AMI/client.dsp @@ -0,0 +1,205 @@ +# Microsoft Developer Studio Project File - Name="MT_Client Client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=MT_Client Client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "client.mak" CFG="MT_Client Client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MT_Client Client - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "MT_Client Client - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MT_Client Client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "MT_Client Client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "MT_Client Client - Win32 Release"
+# Name "MT_Client Client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\client.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "MT_Client Client - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "MT_Client Client - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/client.global.conf b/TAO/tests/AMI/client.global.conf new file mode 100644 index 00000000000..4883a8b375b --- /dev/null +++ b/TAO/tests/AMI/client.global.conf @@ -0,0 +1,3 @@ +# $Id$ +# +static Resource_Factory "-ORBresources global" diff --git a/TAO/tests/AMI/client.muxed.conf b/TAO/tests/AMI/client.muxed.conf new file mode 100644 index 00000000000..e41aabecf7a --- /dev/null +++ b/TAO/tests/AMI/client.muxed.conf @@ -0,0 +1,2 @@ + +static Client_Strategy_Factory "-ORBTransportMuxStrategy MUXED -ORBiiopprofilelock null -ORBclientconnectionhandler MT" diff --git a/TAO/tests/AMI/client.tss.conf b/TAO/tests/AMI/client.tss.conf new file mode 100644 index 00000000000..d1a2308e80f --- /dev/null +++ b/TAO/tests/AMI/client.tss.conf @@ -0,0 +1,3 @@ +# $Id$ +# +static Resource_Factory "-ORBresources tss" diff --git a/TAO/tests/AMI/orb_creation.cpp b/TAO/tests/AMI/orb_creation.cpp new file mode 100644 index 00000000000..f3212b0f17b --- /dev/null +++ b/TAO/tests/AMI/orb_creation.cpp @@ -0,0 +1,176 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/Task.h" +#include "testC.h" + +ACE_RCSID(MT_Client, orb_creation, "$Id$") + +const char *ior = "file://test.ior"; +int nthreads = 5; +int niterations = 5; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "k:n:i:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.optarg; + break; + case 'n': + nthreads = ACE_OS::atoi (get_opts.optarg); + break; + case 'i': + niterations = ACE_OS::atoi (get_opts.optarg); + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "-n <nthreads> " + "-i <niterations> " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +class Client : public ACE_Task_Base +{ + // = TITLE + // Run the client thread + // + // = DESCRIPTION + // Use the ACE_Task_Base class to run the client threads. + // +public: + Client (int niterations, + const char* ior); + // ctor + + virtual int svc (void); + // The thread entry point. + +private: + int niterations_; + // The number of iterations on each client thread. + + const char* ior_; + // The IOR that we should use. +}; + +int +main (int argc, char *argv[]) +{ + ACE_TRY_NEW_ENV + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, ""); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var object = + orb->string_to_object (ior, ACE_TRY_ENV); + ACE_TRY_CHECK; + + Simple_Server_var server = + Simple_Server::_narrow (object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Object reference <%s> is nil\n", + ior), + 1); + } + + Client client (niterations, ior); + if (client.activate (THR_NEW_LWP | THR_JOINABLE, + nthreads) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot activate client threads\n"), + 1); + + client.thr_mgr ()->wait (); + + ACE_DEBUG ((LM_DEBUG, "threads finished\n")); + + server->shutdown (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Catched exception:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} + +// **************************************************************** + +Client::Client (int niterations, + const char* ior) + : niterations_ (niterations), + ior_ (ior) +{ +} + +int +Client::svc (void) +{ + ACE_TRY_NEW_ENV + { + for (int i = 0; i < this->niterations_; ++i) + { + // If we are using a global ORB this is a nop, otherwise it + // initializes the ORB resources for this thread. + int argc = 0; + const char* argv[] = { "" }; + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Object_var object = + orb->string_to_object (this->ior_, ACE_TRY_ENV); + ACE_TRY_CHECK; + + Simple_Server_var server = + Simple_Server::_narrow (object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%P|%t) Object reference <%s> is nil\n", + ior), + 1); + } + + server->test_method (ACE_TRY_ENV); + ACE_TRY_CHECK; + if (TAO_debug_level > 0 && i % 100 == 0) + ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i)); + } + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "MT_Client: exception raised"); + } + ACE_ENDTRY; + return 0; +} diff --git a/TAO/tests/AMI/orb_creation.dsp b/TAO/tests/AMI/orb_creation.dsp new file mode 100644 index 00000000000..b0003f4536c --- /dev/null +++ b/TAO/tests/AMI/orb_creation.dsp @@ -0,0 +1,206 @@ +# Microsoft Developer Studio Project File - Name="MT_Client ORB Creation" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=MT_Client ORB Creation - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "orb_creation.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "orb_creation.mak" CFG="MT_Client ORB Creation - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MT_Client ORB Creation - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "MT_Client ORB Creation - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MT_Client ORB Creation - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "MT_Client ORB Creation - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "MT_Client ORB Creation - Win32 Release"
+# Name "MT_Client ORB Creation - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\orb_creation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "MT_Client ORB Creation - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "MT_Client ORB Creation - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/run_test.pl b/TAO/tests/AMI/run_test.pl new file mode 100755 index 00000000000..2c6a97e729e --- /dev/null +++ b/TAO/tests/AMI/run_test.pl @@ -0,0 +1,63 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +unshift @INC, '../../../bin'; +require ACEutils; + +$client_conf="client.global.conf"; +$client_process="client"; +$debug_level='5'; +$threads='2'; +$iterations='1'; + +foreach $i (@ARGV) { + if ($i eq '-tss') { + $client_conf = "client.tss.conf"; + } elsif ($i eq '-debug') { + $debug_level = '1'; + } elsif ($i eq '-creation') { + $client_process = 'orb_creation'; + $threads='2'; + } +} + +$iorfile = "server.ior"; +$SV = Process::Create ($EXEPREFIX."server$EXE_EXT ", + " -ORBsvcconf server.conf -ORBdebuglevel $debug_level" + . " -o $iorfile"); + +if (ACE::waitforfile_timed ($iorfile, 5) == -1) { + print STDERR "ERROR: cannot find file <$iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +$CL = Process::Create ($EXEPREFIX."$client_process$EXE_EXT ", + " -ORBsvcconf $client_conf " + . "-ORBdebuglevel $debug_level" + . " -k file://$iorfile " + . " -n $threads -i $iterations"); + +$client = $CL->TimedWait (60); +if ($client == -1) { + print STDERR "ERROR: client timedout\n"; + $CL->Kill (); $CL->TimedWait (1); +} + +$server = $SV->TimedWait (5); +if ($server == -1) { + print STDERR "ERROR: server timedout\n"; + $SV->Kill (); $SV->TimedWait (1); +} + +unlink $iorfile; + +if ($server != 0 || $client != 0) { + exit 1; +} + +exit 0; diff --git a/TAO/tests/AMI/server.conf b/TAO/tests/AMI/server.conf new file mode 100644 index 00000000000..faf9c6c874b --- /dev/null +++ b/TAO/tests/AMI/server.conf @@ -0,0 +1,3 @@ +# $Id$ +# +static Server_Strategy_Factory "-ORBconcurrency thread-per-connection" diff --git a/TAO/tests/AMI/server.cpp b/TAO/tests/AMI/server.cpp new file mode 100644 index 00000000000..9a2dfa93eb3 --- /dev/null +++ b/TAO/tests/AMI/server.cpp @@ -0,0 +1,110 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "test_i.h" + +ACE_RCSID(MT_Client, server, "$Id$") + +const char *ior_output_file = 0; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "o:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + ior_output_file = get_opts.optarg; + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-o <iorfile>" + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +int +main (int argc, char *argv[]) +{ + ACE_TRY_NEW_ENV + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Object_var poa_object = + orb->resolve_initial_references("RootPOA"); + if (CORBA::is_nil (poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the POA.\n"), + 1); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return 1; + + Simple_Server_i server_impl (orb.in ()); + + Simple_Server_var server = + server_impl._this (ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::String_var ior = + orb->object_to_string (server.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "Activated as <%s>\n", ior.in ())); + + // If the ior_output_file exists, output the ior to it + if (ior_output_file != 0) + { + FILE *output_file= ACE_OS::fopen (ior_output_file, "w"); + if (output_file == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Cannot open output file for writing IOR: %s", + ior_output_file), + 1); + ACE_OS::fprintf (output_file, "%s", ior.in ()); + ACE_OS::fclose (output_file); + } + + poa_manager->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Long number = 0; + + number = server->get_number (ACE_TRY_ENV); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "get_number = %d\n", number)); + + if (orb->run () == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "orb->run"), -1); + ACE_DEBUG ((LM_DEBUG, "event loop finished\n")); + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Catched exception:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} diff --git a/TAO/tests/AMI/server.dsp b/TAO/tests/AMI/server.dsp new file mode 100644 index 00000000000..b7c07f7179b --- /dev/null +++ b/TAO/tests/AMI/server.dsp @@ -0,0 +1,219 @@ +# Microsoft Developer Studio Project File - Name="MT_Client Server" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=MT_Client Server - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "server.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "server.mak" CFG="MT_Client Server - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MT_Client Server - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "MT_Client Server - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MT_Client Server - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 tao.lib ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ELSEIF "$(CFG)" == "MT_Client Server - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+
+!ENDIF
+
+# Begin Target
+
+# Name "MT_Client Server - Win32 Release"
+# Name "MT_Client Server - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\server.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\test_i.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ".h"
+# Begin Source File
+
+SOURCE=.\test_i.h
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ".idl"
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "MT_Client Server - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "MT_Client Server - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ".i"
+# Begin Source File
+
+SOURCE=.\test_i.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/simple-client.conf b/TAO/tests/AMI/simple-client.conf new file mode 100644 index 00000000000..97bca811c1b --- /dev/null +++ b/TAO/tests/AMI/simple-client.conf @@ -0,0 +1,2 @@ + +static Client_Strategy_Factory "-ORBTransportMuxStrategy MUXED -ORBiiopprofilelock null -ORBclientconnectionhandler ST" diff --git a/TAO/tests/AMI/simple-client.cpp b/TAO/tests/AMI/simple-client.cpp new file mode 100644 index 00000000000..9c821f72d1b --- /dev/null +++ b/TAO/tests/AMI/simple-client.cpp @@ -0,0 +1,125 @@ +// $Id$ + +#include "ace/Get_Opt.h" +#include "ace/Task.h" +#include "testC.h" + +ACE_RCSID(MT_Client, client, "$Id$") + +const char *ior = "file://test.ior"; +int niterations = 5; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "k:i:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.optarg; + break; + case 'i': + niterations = ACE_OS::atoi (get_opts.optarg); + break; + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "-i <niterations> " + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} + +class Handler : public POA_AMI_Simple_Server_Handler +{ +public: + Handler (void) {}; + + ~Handler (void) {}; +}; + +int +main (int argc, char *argv[]) +{ + + ACE_DECLARE_NEW_CORBA_ENV; + + ACE_TRY + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Object_var object = + orb->resolve_initial_references ("RootPOA", ACE_TRY_ENV); + ACE_TRY_CHECK; + + PortableServer::POA_var poa = + PortableServer::POA::_narrow (object, ACE_TRY_ENV); + ACE_TRY_CHECK; + + PortableServer::POAManager_var poa_manager = + poa->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + + poa_manager->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return 1; + + object = orb->string_to_object (ior, ACE_TRY_ENV); + ACE_TRY_CHECK; + + Simple_Server_var server = + Simple_Server::_narrow (object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + { + ACE_ERROR_RETURN ((LM_ERROR, + "Object reference <%s> is nil\n", + ior), + 1); + } + + Handler handler; + AMI_Simple_Server_Handler_var the_handler = + handler._this (ACE_TRY_ENV); + ACE_TRY_CHECK; + + CORBA::Long number = 0; + + for (ssize_t ni = 0; ni < niterations; ni++) + { + + server->sendc_get_number (the_handler.in (), + ACE_TRY_ENV); + ACE_TRY_CHECK; + } + + number = server->get_number (ACE_TRY_ENV); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, + "get_number = %d\n", + number)); + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Catched exception:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} diff --git a/TAO/tests/AMI/simple_client.dsp b/TAO/tests/AMI/simple_client.dsp new file mode 100644 index 00000000000..6d02789130d --- /dev/null +++ b/TAO/tests/AMI/simple_client.dsp @@ -0,0 +1,215 @@ +# Microsoft Developer Studio Project File - Name="simple_client" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=simple_client - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "simple_client.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "simple_client.mak" CFG="simple_client - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "simple_client - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "simple_client - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "simple_client - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "simple_client - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "simple_c"
+# PROP BASE Intermediate_Dir "simple_c"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 taod.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace" /libpath:"..\..\tao"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "simple_client - Win32 Release"
+# Name "simple_client - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=".\simple-client.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.cpp
+# End Source File
+# End Group
+# Begin Group "Inline Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test_i.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testC.i
+# End Source File
+# Begin Source File
+
+SOURCE=.\testS.i
+# End Source File
+# End Group
+# Begin Group "IDL Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test.idl
+
+!IF "$(CFG)" == "simple_client - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+USERDEP__TEST_="..\..\..\bin\Release\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\Release\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "simple_client - Win32 Debug"
+
+USERDEP__TEST_="..\..\..\bin\tao_idl.exe"
+# Begin Custom Build - Invoking TAO_IDL Compiler
+InputPath=.\test.idl
+InputName=test
+
+BuildCmds= \
+ ..\..\..\bin\tao_idl -Ge 1 $(InputName).idl
+
+"$(InputName)C.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)C.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.i" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+
+"$(InputName)S_T.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ $(BuildCmds)
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\test_i.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/TAO/tests/AMI/test-handC.cpp b/TAO/tests/AMI/test-handC.cpp new file mode 100644 index 00000000000..b0bda5a45b0 --- /dev/null +++ b/TAO/tests/AMI/test-handC.cpp @@ -0,0 +1,645 @@ +// $Id$ +/* -*- C++ -*- */ + +// ****** Code generated by the The ACE ORB (TAO) IDL Compiler ******* +// TAO and the TAO IDL Compiler have been developed by the Center for +// Distributed Object Computing at Washington University, St. Louis. +// +// Information about TAO is available at: +// http://www.cs.wustl.edu/~schmidt/TAO.html + +#include "testC.h" + +#if !defined (__ACE_INLINE__) +#include "testC.i" +#endif /* !defined INLINE */ + +Simple_Server_ptr Simple_Server::_narrow ( + CORBA::Object_ptr obj, + CORBA::Environment &env + ) +{ + if (CORBA::is_nil (obj)) + return Simple_Server::_nil (); + if (!obj->_is_a ("IDL:Simple_Server:1.0", env)) + return Simple_Server::_nil (); + return Simple_Server::_unchecked_narrow (obj, env); +} + +Simple_Server_ptr Simple_Server::_unchecked_narrow ( + CORBA::Object_ptr obj, + CORBA::Environment &ACE_TRY_ENV + ) +{ + ACE_UNUSED_ARG (ACE_TRY_ENV); + if (CORBA::is_nil (obj)) + return Simple_Server::_nil (); + TAO_Stub* stub = obj->_stubobj (); + stub->_incr_refcnt (); + void* servant = 0; + if (obj->_is_collocated () && obj->_servant() != 0) + servant = obj->_servant()->_downcast ("IDL:omg.org/CORBA/Object:1.0"); + if (servant != 0) + { + Simple_Server_ptr retv = ACE_reinterpret_cast ( + Simple_Server_ptr, + ACE_reinterpret_cast ( + PortableServer::Servant, + servant + ) + ->_create_collocated_objref ( + "IDL:Simple_Server:1.0", + TAO_ORB_Core::ORB_CONTROL, + stub + ) + ); + if (retv != 0) + return retv; + } + return new Simple_Server(stub); +} + +Simple_Server_ptr +Simple_Server::_duplicate (Simple_Server_ptr obj) +{ + if (!CORBA::is_nil (obj)) + obj->_incr_refcnt (); + return obj; +} + +CORBA::Long Simple_Server::get_number ( + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )) +{ + + CORBA::Long _tao_retval = 0; + + TAO_Stub *istub = this->_stubobj (); + if (istub == 0) + ACE_THROW_RETURN (CORBA::INTERNAL (), _tao_retval); + + + TAO_GIOP_Twoway_Invocation _tao_call ( + istub, + "get_number", + istub->orb_core () + ); + + + for (;;) + { + ACE_TRY_ENV.clear (); + _tao_call.start (ACE_TRY_ENV); + ACE_CHECK_RETURN (_tao_retval); + + int _invoke_status = + _tao_call.invoke (0, 0, ACE_TRY_ENV); + ACE_CHECK_RETURN (_tao_retval); + + if (_invoke_status == TAO_INVOKE_RESTART) + continue; + // if (_invoke_status == TAO_INVOKE_EXCEPTION) + // cannot happen + if (_invoke_status != TAO_INVOKE_OK) + { + ACE_THROW_RETURN (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES), _tao_retval); + + } + break; + + } + TAO_InputCDR &_tao_in = _tao_call.inp_stream (); + if (!( + (_tao_in >> _tao_retval) + )) + ACE_THROW_RETURN (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES), _tao_retval); + return _tao_retval; +} + +void +Simple_Server::sendc_get_number ( + AMI_Simple_Server_Handler_ptr _tao_ami_handler, + CORBA::Environment &ACE_TRY_ENV + ) +{ + + TAO_Stub *istub = this->_stubobj (); + if (istub == 0) + ACE_THROW (CORBA::INV_OBJREF ()); + + + TAO_GIOP_Twoway_Asynch_Invocation _tao_call ( + istub, + "get_number", + istub->orb_core (), + &AMI_Simple_Server_Handler::get_number_skel, + _tao_ami_handler + ); + + + for (;;) + { + ACE_TRY_ENV.clear (); + _tao_call.start (ACE_TRY_ENV); + ACE_CHECK; + int _invoke_status = + _tao_call.invoke (0, 0, ACE_TRY_ENV); + ACE_CHECK; + + if (_invoke_status == TAO_INVOKE_RESTART) + continue; + // if (_invoke_status == TAO_INVOKE_EXCEPTION) + // cannot happen + if (_invoke_status != TAO_INVOKE_OK) + { + ACE_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES)); + + } + break; + + } + return; +} + +CORBA::Boolean Simple_Server::_is_a (const CORBA::Char *value, CORBA::Environment &env) +{ + if ( + (!ACE_OS::strcmp ((char *)value, "IDL:Simple_Server:1.0")) || + (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env)))) + return 1; // success using local knowledge + else + return this->CORBA_Object::_is_a (value, env); +} + +const char* Simple_Server::_interface_repository_id (void) const +{ + return "IDL:Simple_Server:1.0"; +} + +static const CORBA::Long _oc_Simple_Server[] = +{ + TAO_ENCAP_BYTE_ORDER, // byte order + 22, ACE_NTOHL (0x49444c3a), ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x723a312e), ACE_NTOHL (0x30000000), // repository ID = IDL:Simple_Server:1.0 + 14, ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x72000000), // name = Simple_Server +}; +static CORBA::TypeCode _tc_TAO_tc_Simple_Server (CORBA::tk_objref, sizeof (_oc_Simple_Server), (char *) &_oc_Simple_Server, 0, sizeof (Simple_Server)); +CORBA::TypeCode_ptr _tc_Simple_Server = &_tc_TAO_tc_Simple_Server; + +AMI_Simple_Server_Handler_ptr AMI_Simple_Server_Handler::_narrow ( + CORBA::Object_ptr obj, + CORBA::Environment &env + ) +{ + if (CORBA::is_nil (obj)) + return AMI_Simple_Server_Handler::_nil (); + if (!obj->_is_a ("IDL:AMI_Simple_Server_Handler:1.0", env)) + return AMI_Simple_Server_Handler::_nil (); + return AMI_Simple_Server_Handler::_unchecked_narrow (obj, env); +} + +AMI_Simple_Server_Handler_ptr AMI_Simple_Server_Handler::_unchecked_narrow ( + CORBA::Object_ptr obj, + CORBA::Environment &ACE_TRY_ENV + ) +{ + ACE_UNUSED_ARG (ACE_TRY_ENV); + if (CORBA::is_nil (obj)) + return AMI_Simple_Server_Handler::_nil (); + TAO_Stub* stub = obj->_stubobj (); + stub->_incr_refcnt (); + void* servant = 0; + if (obj->_is_collocated () && obj->_servant() != 0) + servant = obj->_servant()->_downcast ("IDL:omg.org/CORBA/Object:1.0"); + if (servant != 0) + { + AMI_Simple_Server_Handler_ptr retv = ACE_reinterpret_cast ( + AMI_Simple_Server_Handler_ptr, + ACE_reinterpret_cast ( + PortableServer::Servant, + servant + ) + ->_create_collocated_objref ( + "IDL:AMI_Simple_Server_Handler:1.0", + TAO_ORB_Core::ORB_CONTROL, + stub + ) + ); + if (retv != 0) + return retv; + } + return new AMI_Simple_Server_Handler(stub); +} + +AMI_Simple_Server_Handler_ptr +AMI_Simple_Server_Handler::_duplicate (AMI_Simple_Server_Handler_ptr obj) +{ + if (!CORBA::is_nil (obj)) + obj->_incr_refcnt (); + return obj; +} + +void +AMI_Simple_Server_Handler::get_number ( + CORBA::Long _tao_ami_result, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + + + TAO_Stub *istub = this->_stubobj (); + if (istub == 0) + ACE_THROW (CORBA::INTERNAL ()); + + TAO_GIOP_Twoway_Invocation _tao_call ( + istub, + "get_number", + istub->orb_core () + ); + + + for (;;) + { + ACE_TRY_ENV.clear (); + _tao_call.start (ACE_TRY_ENV); +ACE_CHECK; + TAO_OutputCDR &_tao_out = _tao_call.out_stream (); + if (!( +(_tao_out << _tao_ami_result) + + )) + ACE_THROW (CORBA::MARSHAL ()); + int _invoke_status = + _tao_call.invoke (0, 0, ACE_TRY_ENV); + ACE_CHECK; + if (_invoke_status == TAO_INVOKE_RESTART) + continue; + // if (_invoke_status == TAO_INVOKE_EXCEPTION) + // cannot happen + if (_invoke_status != TAO_INVOKE_OK) + { + ACE_THROW (CORBA::UNKNOWN (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES)); + } + break; + + } + + } + +void +AMI_Simple_Server_Handler::get_number_skel (TAO_InputCDR &_tao_reply_cdr, + Messaging::ReplyHandler_ptr _tao_reply_handler, + CORBA::Environment &ACE_TRY_ENV) +{ + // Retrive Reply Handler object. + AMI_Simple_Server_Handler_var _tao_reply_handler_object = + AMI_Simple_Server_Handler::_narrow (_tao_reply_handler, + ACE_TRY_ENV); + ACE_CHECK; + + // @@ Error handling. + + // Demarshall all the arguments. + CORBA::Long l; + _tao_reply_cdr >> l; + + // Invoke the call back method. + _tao_reply_handler_object->get_number (l, ACE_TRY_ENV); +} + + CORBA::Boolean AMI_Simple_Server_Handler::_is_a (const CORBA::Char *value, CORBA::Environment &env) + { + if ( +(!ACE_OS::strcmp ((char *)value, "IDL:AMI_Simple_Server_Handler:1.0")) || + (!ACE_OS::strcmp ((char *)value, "IDL:omg.org/Messaging/ReplyHandler:1.0")) || + (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (env)))) + return 1; // success using local knowledge + else + return this->CORBA_Object::_is_a (value, env); + } + + const char* AMI_Simple_Server_Handler::_interface_repository_id (void) const + { + return "IDL:AMI_Simple_Server_Handler:1.0"; + } + + static const CORBA::Long _oc_AMI_Simple_Server_Handler[] = + { + TAO_ENCAP_BYTE_ORDER, // byte order + 34, ACE_NTOHL (0x49444c3a), ACE_NTOHL (0x414d495f), ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x725f4861), ACE_NTOHL (0x6e646c65), ACE_NTOHL (0x723a312e), ACE_NTOHL (0x30000000), // repository ID = IDL:AMI_Simple_Server_Handler:1.0 + 26, ACE_NTOHL (0x414d495f), ACE_NTOHL (0x53696d70), ACE_NTOHL (0x6c655f53), ACE_NTOHL (0x65727665), ACE_NTOHL (0x725f4861), ACE_NTOHL (0x6e646c65), ACE_NTOHL (0x72000000), // name = AMI_Simple_Server_Handler +}; + static CORBA::TypeCode _tc_TAO_tc_AMI_Simple_Server_Handler (CORBA::tk_objref, sizeof (_oc_AMI_Simple_Server_Handler), (char *) &_oc_AMI_Simple_Server_Handler, 0, sizeof (AMI_Simple_Server_Handler)); + CORBA::TypeCode_ptr _tc_AMI_Simple_Server_Handler = &_tc_TAO_tc_AMI_Simple_Server_Handler; + + void operator<<= (CORBA::Any &_tao_any, Simple_Server_ptr _tao_elem) + { + CORBA::Object_ptr *_tao_obj_ptr = 0; + ACE_TRY_NEW_ENV + { + ACE_NEW (_tao_obj_ptr, CORBA::Object_ptr); + *_tao_obj_ptr = Simple_Server::_duplicate (_tao_elem); + _tao_any.replace (_tc_Simple_Server, _tao_obj_ptr, 1, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + delete _tao_obj_ptr; + } + ACE_ENDTRY; + } + + CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, Simple_Server_ptr &_tao_elem) + { + CORBA::Object_ptr *tmp = 0; + ACE_TRY_NEW_ENV + { + _tao_elem = Simple_Server::_nil (); + CORBA::TypeCode_var type = _tao_any.type (); + if (!type->equal (_tc_Simple_Server, ACE_TRY_ENV)) return 0; // not equal + ACE_TRY_CHECK; + TAO_InputCDR stream (_tao_any._tao_get_cdr ()); + CORBA::Object_var _tao_obj_var; + ACE_NEW_RETURN (tmp, CORBA::Object_ptr, 0); + if (stream.decode (_tc_Simple_Server, &_tao_obj_var.out (), 0, ACE_TRY_ENV) + == CORBA::TypeCode::TRAVERSE_CONTINUE) + { + _tao_elem = Simple_Server::_narrow (_tao_obj_var.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + *tmp = (CORBA::Object_ptr) _tao_elem; // any owns the object + ((CORBA::Any *)&_tao_any)->replace (_tc_Simple_Server, tmp, 1, ACE_TRY_ENV); + ACE_TRY_CHECK; + return 1; + } + // failure + } + ACE_CATCHANY + { + delete tmp; + return 0; + } + ACE_ENDTRY; + return 0; + } + +// skeleton constructor +POA_AMI_Simple_Server_Handler::POA_AMI_Simple_Server_Handler (void) +{ +} + +// copy ctor +POA_AMI_Simple_Server_Handler::POA_AMI_Simple_Server_Handler (const POA_AMI_Simple_Server_Handler& rhs) + : TAO_ServantBase (rhs) +{} + +// skeleton destructor +POA_AMI_Simple_Server_Handler::~POA_AMI_Simple_Server_Handler (void) +{ +} + +void POA_AMI_Simple_Server_Handler::_is_a_skel ( + CORBA::ServerRequest &_tao_server_request, + void * _tao_object_reference, + void * /* context */, + CORBA::Environment &ACE_TRY_ENV + ) +{ + TAO_InputCDR &_tao_in = _tao_server_request.incoming (); + POA_AMI_Simple_Server_Handler *_tao_impl = (POA_AMI_Simple_Server_Handler *) _tao_object_reference; + CORBA::Boolean _tao_retval = 0; + CORBA::String_var value; + if (!((_tao_in >> value.out ()))) + ACE_THROW (CORBA::MARSHAL ()); + + _tao_retval = _tao_impl->_is_a (value.in (), ACE_TRY_ENV); + ACE_CHECK; + + _tao_server_request.init_reply (ACE_TRY_ENV); + ACE_CHECK; + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); + if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval)))) + ACE_THROW (CORBA::MARSHAL ()); +} + +void POA_AMI_Simple_Server_Handler::_non_existent_skel ( + CORBA::ServerRequest &_tao_server_request, + void * _tao_object_reference, + void * /* context */, + CORBA::Environment &ACE_TRY_ENV + ) +{ + POA_AMI_Simple_Server_Handler *_tao_impl = (POA_AMI_Simple_Server_Handler *) _tao_object_reference; + CORBA::Boolean _tao_retval = _tao_impl->_non_existent (ACE_TRY_ENV); + ACE_CHECK; + + _tao_server_request.init_reply (ACE_TRY_ENV); + ACE_CHECK; + TAO_OutputCDR &_tao_out = _tao_server_request.outgoing (); + if (!((_tao_out << CORBA::Any::from_boolean (_tao_retval)))) + ACE_THROW (CORBA::MARSHAL ()); +} + +CORBA::Boolean POA_AMI_Simple_Server_Handler::_is_a ( + const char* value, + CORBA::Environment &ACE_TRY_ENV + ) +{ + if ( + (!ACE_OS::strcmp ((char *)value, "IDL:AMI_Simple_Server_Handler:1.0")) || + (!ACE_OS::strcmp ((char *)value, CORBA::_tc_Object->id (ACE_TRY_ENV)))) + return 1; + else + return 0; +} + +void* POA_AMI_Simple_Server_Handler::_downcast ( + const char* logical_type_id + ) +{ + if (ACE_OS::strcmp (logical_type_id, "IDL:AMI_Simple_Server_Handler:1.0") == 0) + return ACE_static_cast (POA_AMI_Simple_Server_Handler_ptr, this); + if (ACE_OS::strcmp (logical_type_id, "IDL:omg.org/CORBA/Object:1.0") == 0) + return ACE_static_cast(PortableServer::Servant, this); + return 0; +} + +void POA_AMI_Simple_Server_Handler::_dispatch (CORBA::ServerRequest &req, void *context, CORBA::Environment &ACE_TRY_ENV) +{ + TAO_Skeleton skel; // pointer to skeleton for operation + const char *opname = req.operation (); // retrieve operation name + // find the skeleton corresponding to this opname + if (this->_find (opname, skel, req.operation_length ()) == -1) + { + ACE_ERROR ((LM_ERROR, "Bad operation <%s>\n", opname)); + ACE_THROW (CORBA_BAD_OPERATION ()); + } + else + skel (req, this, context, ACE_TRY_ENV); +} + +const char* POA_AMI_Simple_Server_Handler::_interface_repository_id (void) const +{ + return "IDL:AMI_Simple_Server_Handler:1.0"; +} + + +AMI_Simple_Server_Handler* +POA_AMI_Simple_Server_Handler::_this (CORBA_Environment &ACE_TRY_ENV) +{ + TAO_Stub *stub = this->_create_stub (ACE_TRY_ENV); + ACE_CHECK_RETURN (0); + return new _tao_collocated_AMI_Simple_Server_Handler (this, stub); +} + +void* +POA_AMI_Simple_Server_Handler::_create_collocated_objref (const char* repository_id, CORBA::ULong type, TAO_Stub *stub) +{ + if (!ACE_OS::strcmp ("IDL:AMI_Simple_Server_Handler:1.0", repository_id)) + return ACE_static_cast ( + AMI_Simple_Server_Handler_ptr, + new _tao_collocated_AMI_Simple_Server_Handler (this, stub) + ); + return 0; +} + +void +POA_AMI_Simple_Server_Handler::get_number (CORBA::Long l, CORBA::Environment &) +{ + ACE_DEBUG ((LM_DEBUG, + "(%P | %t):POA_AMI_Simple_Server_Handler::get_number = %d\n", + l)); +} + +void +POA_AMI_Simple_Server_Handler::get_number_skel (CORBA::ServerRequest &_tao_server_request, + void *_tao_object_reference, + void *_tao_context, + CORBA::Environment &ACE_TRY_ENV) +{ + TAO_InputCDR &_tao_in = _tao_server_request.incoming (); + POA_AMI_Simple_Server_Handler *_tao_impl = (POA_AMI_Simple_Server_Handler *)_tao_object_reference; + + CORBA::Long l; + if (!( + (_tao_in >> l) + )) + ACE_THROW (CORBA::MARSHAL () ); + + _tao_impl->get_number ( + l); + ACE_CHECK; + _tao_server_request.init_reply (ACE_TRY_ENV); +} + +// ********************************************************************* + +_tao_collocated_AMI_Simple_Server_Handler::_tao_collocated_AMI_Simple_Server_Handler ( + POA_AMI_Simple_Server_Handler_ptr servant, + TAO_Stub *stub + ) + : AMI_Simple_Server_Handler (), + CORBA_Object (stub, servant, 1), + servant_ (servant) +{ +} + +CORBA::Boolean _tao_collocated_AMI_Simple_Server_Handler::_is_a( + const CORBA::Char *logical_type_id, + CORBA_Environment &ACE_TRY_ENV + ) + +{ + if (this->_stubobj ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA) + { + TAO_Object_Adapter::Servant_Upcall servant_upcall ( + *this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter () + ); + servant_upcall.prepare_for_upcall ( + this->_object_key (), + "_is_a", + ACE_TRY_ENV + ); + ACE_CHECK_RETURN (0); + return ACE_reinterpret_cast ( + POA_AMI_Simple_Server_Handler_ptr, + servant_upcall.servant ()->_downcast ( + "IDL:AMI_Simple_Server_Handler:1.0" + ) + )->_is_a (logical_type_id, ACE_TRY_ENV); + } + return this->servant_->_is_a (logical_type_id, ACE_TRY_ENV); +} + + +POA_AMI_Simple_Server_Handler_ptr _tao_collocated_AMI_Simple_Server_Handler::_get_servant (void) const +{ + return this->servant_; +} + +CORBA::Boolean _tao_collocated_AMI_Simple_Server_Handler::_non_existent( + CORBA_Environment &ACE_TRY_ENV + ) + +{ + if (this->_stubobj ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA) + { + TAO_Object_Adapter::Servant_Upcall servant_upcall ( + *this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter () + ); + servant_upcall.prepare_for_upcall ( + this->_object_key (), + "_non_existent", + ACE_TRY_ENV + ); + ACE_CHECK_RETURN (0); + return ACE_reinterpret_cast ( + POA_AMI_Simple_Server_Handler_ptr, + servant_upcall.servant ()->_downcast ( + "IDL:AMI_Simple_Server_Handler:1.0" + ) + )->_non_existent (ACE_TRY_ENV); + } + return this->servant_->_non_existent (ACE_TRY_ENV); +} + +void +_tao_collocated_AMI_Simple_Server_Handler::get_number (CORBA::Long l, CORBA::Environment &) +{ + ACE_DECLARE_NEW_CORBA_ENV; + + if (this->_stubobj ()->orb_core ()->get_collocation_strategy () == TAO_ORB_Core::THRU_POA) + { + TAO_Object_Adapter::Servant_Upcall servant_upcall ( + *this->_stubobj ()->servant_orb_var ()->orb_core ()->object_adapter () + ); + servant_upcall.prepare_for_upcall ( + this->_object_key (), + "get_number", + ACE_TRY_ENV + ); + ACE_CHECK; + ACE_reinterpret_cast ( + POA_AMI_Simple_Server_Handler_ptr, + servant_upcall.servant ()->_downcast ( + "IDL:AMI_Simple_Server_Handler:1.0" + ) + )->get_number ( + l); + return; + } + this->servant_->get_number ( + l ); + +} + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + template class TAO_Object_Field_T<Simple_Server>; + template class TAO_Object_Field_T<AMI_Simple_Server_Handler>; + #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + # pragma instantiate TAO_Object_Field_T<Simple_Server> + # pragma instantiate TAO_Object_Field_T<AMI_Simple_Server_Handler> + #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ + diff --git a/TAO/tests/AMI/test.idl b/TAO/tests/AMI/test.idl new file mode 100644 index 00000000000..376da4a58c6 --- /dev/null +++ b/TAO/tests/AMI/test.idl @@ -0,0 +1,16 @@ +/* + * $Id$ + */ + +interface Simple_Server +{ + // void test_method (); + + long get_number (); + + // void put_number (in long l); + + // long get_put_number (out long out_l, in long in_l); + + // oneway void shutdown (); +}; diff --git a/TAO/tests/AMI/test_i.cpp b/TAO/tests/AMI/test_i.cpp new file mode 100644 index 00000000000..1b199315a26 --- /dev/null +++ b/TAO/tests/AMI/test_i.cpp @@ -0,0 +1,62 @@ +// $Id$ + +#include "test_i.h" +#include "tao/debug.h" + +#if !defined(__ACE_INLINE__) +#include "test_i.i" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(MT_Client, test_i, "$Id$") + +void +Simple_Server_i::test_method (CORBA::Environment&) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "%N:%l:(%P:%t):Simple_Server_i::test_method called\n")); +} + +CORBA::Long +Simple_Server_i::get_number (CORBA::Environment&) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "%N:%l:(%P:%t):Simple_Server_i::get_number called\n")); + return this->number_++; +} + +void +Simple_Server_i::put_number (CORBA::Long l, + CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "%N:%l:(%P:%t):Simple_Server_i::put_number: %d\n", + l)); +} + +CORBA::Long +Simple_Server_i::get_put_number (CORBA::Long_out out_l, + CORBA::Long in_l, + CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + out_l = 931233; + if (TAO_debug_level > 0) + ACE_DEBUG ((LM_DEBUG, + "%N:%l:(%P:%t):Simple_Server_i::get_put_number: %d\n", + in_l)); + + return 931234; +} + +void +Simple_Server_i::shutdown (CORBA::Environment&) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->orb_->shutdown (0); +} diff --git a/TAO/tests/AMI/test_i.h b/TAO/tests/AMI/test_i.h new file mode 100644 index 00000000000..c050a2795d8 --- /dev/null +++ b/TAO/tests/AMI/test_i.h @@ -0,0 +1,62 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO/tests/MT_Client +// +// = FILENAME +// test_i.h +// +// = AUTHOR +// Carlos O'Ryan +// +// ============================================================================ + +#ifndef TAO_MT_CLIENT_TEST_I_H +#define TAO_MT_CLIENT_TEST_I_H + +#include "testS.h" + +class Simple_Server_i : public POA_Simple_Server +{ + // = TITLE + // Simpler Server implementation + // + // = DESCRIPTION + // Implements the Simple_Server interface in test.idl + // +public: + Simple_Server_i (CORBA::ORB_ptr orb); + // ctor + + // = The Simple_Server methods. + void test_method (CORBA::Environment&) + ACE_THROW_SPEC ((CORBA::SystemException)); + + CORBA::Long get_number (CORBA::Environment&) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void put_number (CORBA::Long l, + CORBA::Environment &) + ACE_THROW_SPEC ((CORBA::SystemException)); + + CORBA::Long get_put_number (CORBA::Long_out out_l, + CORBA::Long in_l, + CORBA::Environment &ACE_TRY_ENV) + ACE_THROW_SPEC ((CORBA::SystemException)); + + void shutdown (CORBA::Environment&) + ACE_THROW_SPEC ((CORBA::SystemException)); + +private: + CORBA::ORB_var orb_; + + CORBA::Long number_; +}; + +#if defined(__ACE_INLINE__) +#include "test_i.i" +#endif /* __ACE_INLINE__ */ + +#endif /* TAO_MT_CLIENT_TEST_I_H */ diff --git a/TAO/tests/AMI/test_i.i b/TAO/tests/AMI/test_i.i new file mode 100644 index 00000000000..d079ad0ae1c --- /dev/null +++ b/TAO/tests/AMI/test_i.i @@ -0,0 +1,8 @@ +// $Id$ + +ACE_INLINE +Simple_Server_i::Simple_Server_i (CORBA::ORB_ptr orb) + : orb_ (CORBA::ORB::_duplicate (orb)), + number_ ((CORBA::Long) 931232) +{ +} |