summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/Makefile995
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/Makefile.bor7
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/README10
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/client.bor29
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/client.cpp297
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/interceptors.cpp648
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/interceptors.h395
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/marker.cpp69
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/marker.h33
-rwxr-xr-xTAO/tests/Portable_Interceptors/Benchmark/run_test.pl52
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/server.bor31
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/server.cpp185
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/test.idl52
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/test_i.cpp46
-rw-r--r--TAO/tests/Portable_Interceptors/Benchmark/test_i.h56
15 files changed, 2905 insertions, 0 deletions
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/Makefile b/TAO/tests/Portable_Interceptors/Benchmark/Makefile
new file mode 100644
index 00000000000..6e4f0369001
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/Makefile
@@ -0,0 +1,995 @@
+#----------------------------------------------------------------------------
+#
+# $Id$
+#
+#----------------------------------------------------------------------------
+
+#----------------------------------------------------------------------------
+# Local macros
+#----------------------------------------------------------------------------
+
+ifndef TAO_ROOT
+ TAO_ROOT = $(ACE_ROOT)/TAO
+endif # ! TAO_ROOT
+
+LDLIBS = -lTAO
+
+IDL_FILES = test
+IDL_SRC = testC.cpp testS.cpp
+BIN_UNCHECKED = client server
+
+SRC = $(addsuffix .cpp, $(BIN) test_i marker) $(IDL_SRC)
+
+CLIENT_OBJS = client.o interceptors.o testC.o marker.o
+SERVER_OBJS = server.o test_i.o interceptors.o marker.o $(IDL_SRC:.cpp=.o)
+
+TAO_IDLFLAGS += -Ge 1
+#----------------------------------------------------------------------------
+# 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
+
+#ifeq ($(interceptors), 1)
+BIN = $(BIN_UNCHECKED)
+#endif # interceptors
+
+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
+#----------------------------------------------------------------------------
+
+.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)
+
+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/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/pre.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/Min_Max.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/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/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.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/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(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/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/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/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/varbase.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_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/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/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/PortableInterceptor.h \
+ $(TAO_ROOT)/tao/Request_Info.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DynamicC.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/PortableInterceptorC.i \
+ $(TAO_ROOT)/tao/PortableInterceptor.i \
+ $(TAO_ROOT)/tao/ORB.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/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(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_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(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/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.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 \
+ $(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/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.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/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.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_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i testC.i \
+ testS_T.h testS_T.i testS_T.cpp testS.i marker.h \
+ $(ACE_ROOT)/ace/High_Res_Timer.h \
+ $(ACE_ROOT)/ace/High_Res_Timer.i \
+ $(ACE_ROOT)/ace/Sched_Params.h \
+ $(ACE_ROOT)/ace/Sched_Params.i
+
+.obj/marker.o .obj/marker.so .shobj/marker.o .shobj/marker.so: marker.cpp marker.h \
+ $(ACE_ROOT)/ace/High_Res_Timer.h \
+ $(ACE_ROOT)/ace/pre.h \
+ $(ACE_ROOT)/ace/ACE.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/Min_Max.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/Log_Priority.h \
+ $(ACE_ROOT)/ace/Log_Record.i \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/High_Res_Timer.i \
+ $(ACE_ROOT)/ace/Sched_Params.h \
+ $(ACE_ROOT)/ace/Sched_Params.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/pre.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/Min_Max.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/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/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.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/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(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/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/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/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/varbase.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_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/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/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/PortableInterceptor.h \
+ $(TAO_ROOT)/tao/Request_Info.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DynamicC.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/PortableInterceptorC.i \
+ $(TAO_ROOT)/tao/PortableInterceptor.i \
+ $(TAO_ROOT)/tao/ORB.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/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(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_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(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/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.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 \
+ $(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/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.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/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.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_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i testC.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/pre.h \
+ $(ACE_ROOT)/ace/OS.h \
+ $(ACE_ROOT)/ace/config-sunos5.6.h \
+ $(ACE_ROOT)/ace/config-sunos5.5.h \
+ $(ACE_ROOT)/ace/post.h \
+ $(ACE_ROOT)/ace/ace_wchar.h \
+ $(ACE_ROOT)/ace/ACE_export.h \
+ $(ACE_ROOT)/ace/svc_export.h \
+ $(ACE_ROOT)/ace/Min_Max.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/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/ACE.h \
+ $(ACE_ROOT)/ace/ACE.i \
+ $(ACE_ROOT)/ace/Malloc.h \
+ $(ACE_ROOT)/ace/Malloc_Base.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.h \
+ $(ACE_ROOT)/ace/Based_Pointer_T.i \
+ $(ACE_ROOT)/ace/Based_Pointer_T.cpp \
+ $(ACE_ROOT)/ace/Based_Pointer_Repository.h \
+ $(ACE_ROOT)/ace/Singleton.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/Singleton.i \
+ $(ACE_ROOT)/ace/Singleton.cpp \
+ $(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/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/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/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/varbase.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_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/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/CDR.h \
+ $(TAO_ROOT)/tao/CDR.i \
+ $(TAO_ROOT)/tao/Typecode.h \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/IORC.i \
+ $(TAO_ROOT)/tao/Servant_Base.h \
+ $(TAO_ROOT)/tao/POAC.h \
+ $(TAO_ROOT)/tao/PolicyC.h \
+ $(TAO_ROOT)/tao/CurrentC.h \
+ $(TAO_ROOT)/tao/CurrentC.i \
+ $(TAO_ROOT)/tao/Encodable.h \
+ $(TAO_ROOT)/tao/PolicyC.i \
+ $(TAO_ROOT)/tao/POAC.i \
+ $(TAO_ROOT)/tao/Servant_Base.i \
+ $(TAO_ROOT)/tao/IORS.i \
+ $(TAO_ROOT)/tao/PortableInterceptor.h \
+ $(TAO_ROOT)/tao/Request_Info.h \
+ $(TAO_ROOT)/tao/PortableInterceptorC.h \
+ $(TAO_ROOT)/tao/DynamicC.h \
+ $(TAO_ROOT)/tao/IOPC.h \
+ $(TAO_ROOT)/tao/IOPC.i \
+ $(TAO_ROOT)/tao/DynAnyC.h \
+ $(TAO_ROOT)/tao/Any.h \
+ $(TAO_ROOT)/tao/Any.i \
+ $(TAO_ROOT)/tao/DynAnyC.i \
+ $(TAO_ROOT)/tao/DynamicC.i \
+ $(TAO_ROOT)/tao/MessagingC.h \
+ $(TAO_ROOT)/tao/ValueBase.h \
+ $(TAO_ROOT)/tao/ValueBase.i \
+ $(TAO_ROOT)/tao/ValueFactory.h \
+ $(TAO_ROOT)/tao/ValueFactory.i \
+ $(TAO_ROOT)/tao/TimeBaseC.h \
+ $(TAO_ROOT)/tao/TimeBaseC.i \
+ $(TAO_ROOT)/tao/PollableC.h \
+ $(TAO_ROOT)/tao/PollableC.i \
+ $(TAO_ROOT)/tao/MessagingC.i \
+ $(TAO_ROOT)/tao/PortableInterceptorC.i \
+ $(TAO_ROOT)/tao/PortableInterceptor.i \
+ $(TAO_ROOT)/tao/ORB.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/Server_Request.i \
+ $(TAO_ROOT)/tao/LocalObject.h \
+ $(TAO_ROOT)/tao/LocalObject.i \
+ $(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_T.h \
+ $(ACE_ROOT)/ace/Pair.h \
+ $(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/Key_Adapters.i \
+ $(TAO_ROOT)/tao/Server_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/poa_macros.h \
+ $(TAO_ROOT)/tao/POAS.h \
+ $(TAO_ROOT)/tao/POA_CORBA.h \
+ $(TAO_ROOT)/tao/DomainC.h \
+ $(TAO_ROOT)/tao/DomainC.i \
+ $(TAO_ROOT)/tao/POAS.i \
+ $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Active_Object_Map.i \
+ $(TAO_ROOT)/tao/RTCORBAC.h \
+ $(TAO_ROOT)/tao/RTCORBAC.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 \
+ $(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/Strategies.h \
+ $(ACE_ROOT)/ace/Strategies_T.h \
+ $(ACE_ROOT)/ace/Synch_Options.h \
+ $(ACE_ROOT)/ace/Synch_Options.i \
+ $(ACE_ROOT)/ace/Thread_Manager.h \
+ $(ACE_ROOT)/ace/Thread_Manager.i \
+ $(ACE_ROOT)/ace/Strategies_T.i \
+ $(ACE_ROOT)/ace/Strategies_T.cpp \
+ $(ACE_ROOT)/ace/Service_Repository.h \
+ $(ACE_ROOT)/ace/Service_Types.h \
+ $(ACE_ROOT)/ace/Service_Types.i \
+ $(ACE_ROOT)/ace/Service_Repository.i \
+ $(ACE_ROOT)/ace/WFMO_Reactor.h \
+ $(ACE_ROOT)/ace/WFMO_Reactor.i \
+ $(ACE_ROOT)/ace/Strategies.i \
+ $(ACE_ROOT)/ace/Message_Queue.i \
+ $(TAO_ROOT)/tao/Pluggable.i \
+ $(TAO_ROOT)/tao/MProfile.h \
+ $(TAO_ROOT)/tao/Profile.h \
+ $(TAO_ROOT)/tao/Tagged_Components.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.h \
+ $(TAO_ROOT)/tao/CONV_FRAMEC.i \
+ $(TAO_ROOT)/tao/Tagged_Components.i \
+ $(TAO_ROOT)/tao/Profile.i \
+ $(TAO_ROOT)/tao/MProfile.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/debug.h \
+ $(TAO_ROOT)/tao/Client_Strategy_Factory.h \
+ $(TAO_ROOT)/tao/Invocation.h \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.h \
+ $(TAO_ROOT)/tao/Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.h \
+ $(TAO_ROOT)/tao/Pluggable_Messaging_Utils.i \
+ $(TAO_ROOT)/tao/Pluggable_Messaging.i \
+ $(TAO_ROOT)/tao/GIOP_Message_State.i \
+ $(TAO_ROOT)/tao/Synch_Reply_Dispatcher.i \
+ $(TAO_ROOT)/tao/TAOC.h \
+ $(TAO_ROOT)/tao/TAOC.i \
+ $(TAO_ROOT)/tao/operation_details.h \
+ $(TAO_ROOT)/tao/target_specification.h \
+ $(TAO_ROOT)/tao/target_specification.i \
+ $(TAO_ROOT)/tao/operation_details.i \
+ $(TAO_ROOT)/tao/Invocation.i \
+ $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \
+ $(TAO_ROOT)/tao/DynAny_i.h \
+ $(TAO_ROOT)/tao/ObjectIDList.h \
+ $(TAO_ROOT)/tao/ObjectIDList.i \
+ $(TAO_ROOT)/tao/WrongTransactionC.h \
+ $(TAO_ROOT)/tao/InterfaceC.h \
+ $(TAO_ROOT)/tao/ifrfwd.h \
+ $(TAO_ROOT)/tao/BoundsC.h \
+ $(TAO_ROOT)/tao/BoundsC.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_T.h \
+ $(TAO_ROOT)/tao/MessagingS_T.i \
+ $(TAO_ROOT)/tao/MessagingS_T.cpp \
+ $(TAO_ROOT)/tao/MessagingS.i testC.i \
+ testS_T.h testS_T.i testS_T.cpp testS.i
+
+# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/Makefile.bor b/TAO/tests/Portable_Interceptors/Benchmark/Makefile.bor
new file mode 100644
index 00000000000..1224510c2f9
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/Makefile.bor
@@ -0,0 +1,7 @@
+#
+# Makefile for building the Interceptors test executables
+#
+
+MAKEFILES = server.bor client.bor
+
+!include <$(ACE_ROOT)\include\makeinclude\recurse.bor>
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/README b/TAO/tests/Portable_Interceptors/Benchmark/README
new file mode 100644
index 00000000000..4abad34898c
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/README
@@ -0,0 +1,10 @@
+# $Id$
+
+This test allows you to visually check the correct invocation of
+TAO's pseudo-portable interceptors, especially the Dynamic interface.
+
+ To run the test, try:
+
+ server -o test.ior
+
+ client
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/client.bor b/TAO/tests/Portable_Interceptors/Benchmark/client.bor
new file mode 100644
index 00000000000..745bfad5803
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/client.bor
@@ -0,0 +1,29 @@
+#
+# Makefile for building the Interceptors client
+#
+
+NAME = client
+
+TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe -Ge 1
+
+OBJFILES = \
+ $(OBJDIR)\testC.obj \
+ $(OBJDIR)\interceptors.obj \
+ $(OBJDIR)\client.obj
+
+CFLAGS = $(ACE_CFLAGS) $(TAO_CFLAGS)
+
+LIBFILES = $(ACE_LIB) $(TAO_LIB)
+
+CPPDIR = .
+
+IDLDIR = .
+
+!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor>
+
+#
+# IDL Build rules
+#
+
+$(IDLDIR)\testS.cpp $(IDLDIR)\testC.cpp: $(IDLDIR)\test.idl
+ $(TAO_IDL) $**
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/client.cpp b/TAO/tests/Portable_Interceptors/Benchmark/client.cpp
new file mode 100644
index 00000000000..4b3e839f156
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/client.cpp
@@ -0,0 +1,297 @@
+// $Id$
+#include "ace/OS.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Get_Opt.h"
+#include "testC.h"
+#include "interceptors.h"
+#include "marker.h"
+#include "ace/Get_Opt.h"
+ACE_RCSID (Benchmark, client, "$Id$")
+
+const char *ior = "file://test.ior";
+int niterations = 5;
+int register_interceptor = 1;
+// The different type of interceptors have different functionality
+// to perform.
+// NOOP: does nothing on all interception points
+// CONTEXT: does service context manipulation
+// DYNAMIC: call upon dynamic interface methods and does extraction
+// from anys.
+enum Interceptor_Type
+{
+ NONE,
+ NOOP,
+ CONTEXT,
+ DYNAMIC
+};
+static Interceptor_Type interceptor_type = NONE;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "ef:n:r:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'e':
+ break;
+ case 'f':
+ ior = get_opts.optarg;
+ break;
+ case 'n':
+ niterations = ACE_OS::atoi (get_opts.optarg);
+ break;
+ case 'r':
+ {
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("none")) == 0)
+ interceptor_type = NONE;
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("noop")) == 0)
+ interceptor_type = NOOP;
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("context")) == 0)
+ interceptor_type = CONTEXT;
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("dynamic")) == 0)
+ interceptor_type = DYNAMIC;
+
+ break;
+ }
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-v -r <register_interceptor> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ return 0;
+}
+
+
+
+void
+run_test (Test_Interceptors::Secure_Vault_ptr server,
+ CORBA::Environment &ACE_TRY_ENV)
+{
+ int i=0;
+ const char user [BUFSIZ] = "root";
+ Marker marker;
+ ACE_Throughput_Stats throughput;
+
+ ACE_DEBUG ((LM_DEBUG, "High res. timer calibration...."));
+ ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
+ ACE_DEBUG ((LM_DEBUG, "done\n"));
+
+ marker.accumulate_into (throughput, 1);
+ ACE_hrtime_t throughput_base = ACE_OS::gethrtime ();
+ for (i = 0; i < niterations ; ++i)
+ {
+ // Record current time.
+ ACE_hrtime_t latency_base = ACE_OS::gethrtime ();
+
+ server->ready (ACE_TRY_ENV);
+
+ // Grab timestamp again.
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+
+ // Record statistics.
+ marker.sample (now - throughput_base,
+ now - latency_base,
+ 1);
+
+ ACE_CHECK;
+ if (TAO_debug_level > 0 && i % 100 == 0)
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i));
+ }
+
+ marker.dump_stats ("Ready method ", gsf, 1);
+
+ ACE_TRY
+ {
+ marker.accumulate_into (throughput, 2);
+ throughput_base = ACE_OS::gethrtime ();
+
+ for (i = 0; i < niterations ; ++i)
+ {
+ // Record current time.
+ ACE_hrtime_t latency_base = ACE_OS::gethrtime ();
+
+ server->authenticate (user, ACE_TRY_ENV);
+
+ // Grab timestamp again.
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+
+ // Record statistics.
+ marker.sample (now - throughput_base,
+ now - latency_base,
+ 2);
+
+ ACE_CHECK;
+ if (TAO_debug_level > 0 && i % 100 == 0)
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i));
+
+ }
+ marker.dump_stats ("Authenticate method ", gsf, 2);
+
+ ACE_CHECK;
+
+ }
+ ACE_CATCH (Test_Interceptors::Invalid, userex)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Invalid user\n"));
+ }
+ ACE_ENDTRY;
+ ACE_CHECK;
+
+
+ Test_Interceptors::Secure_Vault::Record record;
+ record.check_num = 1;
+ record.amount = 1000;
+ CORBA::Long id = 1;
+
+ marker.accumulate_into (throughput, 3);
+ throughput_base = ACE_OS::gethrtime ();
+
+ for (i = 0; i < niterations ; ++i)
+ {
+ // Record current time.
+ ACE_hrtime_t latency_base = ACE_OS::gethrtime ();
+
+ CORBA::Long result = server->update_records (id,
+ record,
+ ACE_TRY_ENV);
+
+
+ // Grab timestamp again.
+ ACE_hrtime_t now = ACE_OS::gethrtime ();
+
+ // Record statistics.
+ marker.sample (now - throughput_base,
+ now - latency_base,
+ 3);
+
+ ACE_CHECK;
+ if (TAO_debug_level > 0 && i % 100 == 0)
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) iteration = %d\n", i));
+
+ }
+ marker.dump_stats ("update records method ", gsf, 3);
+ ACE_CHECK;
+
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ int priority =
+ (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO)
+ + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2;
+ // Enable FIFO scheduling, e.g., RT scheduling class on Solaris.
+
+ if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO,
+ priority,
+ ACE_SCOPE_PROCESS)) != 0)
+ {
+ if (ACE_OS::last_error () == EPERM)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "server (%P|%t): user is not superuser, "
+ "test runs in time-shared class\n"));
+ }
+ else
+ ACE_ERROR ((LM_ERROR,
+ "server (%P|%t): sched_params failed\n"));
+ }
+
+ 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;
+
+ Test_Interceptors::Secure_Vault_var server =
+ Test_Interceptors::Secure_Vault::_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);
+ }
+
+#if (TAO_HAS_INTERCEPTORS == 1)
+ switch (interceptor_type)
+ {
+ case NONE:
+ break;
+ case NOOP:
+ {
+ PortableInterceptor::ClientRequestInterceptor_ptr interceptor = 0;
+ // Installing the Vault interceptor
+ ACE_NEW_RETURN (interceptor,
+ Vault_Client_Request_NOOP_Interceptor (orb.in ()),
+ -1);
+ orb->_register_client_interceptor (interceptor);
+ break;
+ }
+ case CONTEXT:
+ {
+ PortableInterceptor::ClientRequestInterceptor_ptr interceptor = 0;
+ // Installing the Vault interceptor
+ ACE_NEW_RETURN (interceptor,
+ Vault_Client_Request_Context_Interceptor (orb.in ()),
+ -1);
+ orb->_register_client_interceptor (interceptor);
+ break;
+ }
+ case DYNAMIC:
+ {
+ PortableInterceptor::ClientRequestInterceptor_ptr interceptor = 0;
+ // Installing the Vault interceptor
+ ACE_NEW_RETURN (interceptor,
+ Vault_Client_Request_Dynamic_Interceptor (orb.in ()),
+ -1);
+ orb->_register_client_interceptor (interceptor);
+ break;
+ }
+
+ }
+#endif /* (TAO_HAS_INTERCEPTORS == 1) */
+
+ ACE_DEBUG ((LM_DEBUG, "\nFunctionality test begins now...\n"));
+
+ // This test is useful for benchmarking the differences when
+ // the same method is intercepted by different interceptors
+ // wanting to achieve different functionality.
+ run_test (server.in (), ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ server->shutdown (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Catched exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/interceptors.cpp b/TAO/tests/Portable_Interceptors/Benchmark/interceptors.cpp
new file mode 100644
index 00000000000..6a675a82adb
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/interceptors.cpp
@@ -0,0 +1,648 @@
+// $Id$
+
+#include "interceptors.h"
+
+ACE_RCSID(Benchmark, interceptors, "$Id$")
+
+#if (TAO_HAS_INTERCEPTORS == 1)
+const CORBA::ULong request_ctx_id = 0xdead;
+const CORBA::ULong reply_ctx_id = 0xbeef;
+
+Vault_Client_Request_Interceptor::Vault_Client_Request_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Client_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Client_Request_Interceptor::~Vault_Client_Request_Interceptor ()
+{
+}
+
+void
+Vault_Client_Request_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Client_Request_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Client_Request_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Client_Request_Interceptor::send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ if (ACE_OS::strcmp (ri->operation (), "authenticate") == 0)
+ {
+ // MAke the context to send the context to the target
+ IOP::ServiceContext sc;
+ sc.context_id = request_ctx_id;
+
+ const char passwd [20] = "root123";
+ CORBA::ULong string_len = ACE_OS::strlen (passwd) + 1;
+ CORBA::Octet *buf = 0;
+ ACE_NEW (buf,
+ CORBA::Octet [string_len]);
+ ACE_OS::strcpy (ACE_reinterpret_cast (char *, buf), passwd);
+
+ sc.context_data.replace (string_len, string_len, buf, 1);
+
+ // Add this context to the service context list.
+ ri->add_request_service_context (sc, 0);
+ }
+
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ Dynamic::ParameterList paramlist = *(ri->arguments ());
+ Test_Interceptors::Secure_Vault::Record *record;
+ CORBA::Long id;
+ paramlist[0].argument >>= id;
+ paramlist[1].argument >>= record;
+ }
+
+}
+
+void
+Vault_Client_Request_Interceptor::receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ CORBA::Long result;
+ CORBA_Any result_any = *(ri->result ());
+ result_any >>= result;
+ }
+
+}
+
+void
+Vault_Client_Request_Interceptor::receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ // As of now, there is no way to extract an exception from an Any in TAO.
+ CORBA::Exception *e = ri->_received_exception ();
+
+ ACE_ASSERT (ACE_OS::strcmp (ri->received_exception_id (), e->_id ())== 0);
+
+}
+
+
+Vault_Server_Request_Interceptor::Vault_Server_Request_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Server_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Server_Request_Interceptor::~Vault_Server_Request_Interceptor ()
+{
+}
+
+void
+Vault_Server_Request_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Server_Request_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Server_Request_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Server_Request_Interceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ if (ACE_OS::strcmp (ri->operation (), "authenticate") == 0)
+ {
+
+ IOP::ServiceId id = request_ctx_id;
+ IOP::ServiceContext *sc = ri->get_request_service_context (id);
+
+ if (sc == 0)
+ ACE_THROW (CORBA::NO_MEMORY ());
+
+ const char *buf = ACE_reinterpret_cast (const char *, sc->context_data.get_buffer ());
+ if (ACE_OS::strcmp (buf, "root123") !=0)
+ ACE_THROW (Test_Interceptors::Invalid ());
+ }
+
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ Dynamic::ParameterList paramlist = *(ri->arguments ());
+ Test_Interceptors::Secure_Vault::Record *record;
+ CORBA::Long id;
+ paramlist[0].argument >>= id;
+ paramlist[1].argument >>= record;
+ }
+
+
+}
+
+void
+Vault_Server_Request_Interceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ CORBA::Long result;
+ CORBA_Any result_any = *(ri->result ());
+ result_any >>= result;
+ }
+}
+
+void
+Vault_Server_Request_Interceptor::send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ CORBA::Exception *e = ri->_sending_exception ();
+
+}
+
+////////////////////////////////// Context /////////////////////////
+
+Vault_Client_Request_Context_Interceptor::Vault_Client_Request_Context_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Client_Context_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Client_Request_Context_Interceptor::~Vault_Client_Request_Context_Interceptor ()
+{
+}
+
+void
+Vault_Client_Request_Context_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Client_Request_Context_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Client_Request_Context_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Client_Request_Context_Interceptor::send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ //if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ //{
+ // MAke the context to send the context to the target
+ IOP::ServiceContext sc;
+ sc.context_id = request_ctx_id;
+
+ const char passwd [20] = "root123";
+ CORBA::ULong string_len = ACE_OS::strlen (passwd) + 1;
+ CORBA::Octet *buf = 0;
+ ACE_NEW (buf,
+ CORBA::Octet [string_len]);
+ ACE_OS::strcpy (ACE_reinterpret_cast (char *, buf), passwd);
+
+ sc.context_data.replace (string_len, string_len, buf, 1);
+
+ // Add this context to the service context list.
+ ri->add_request_service_context (sc, 0);
+ // }
+
+}
+
+void
+Vault_Client_Request_Context_Interceptor::receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+}
+
+void
+Vault_Client_Request_Context_Interceptor::receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ // As of now, there is no way to extract an exception from an Any in TAO.
+ CORBA::Exception *e = ri->_received_exception ();
+
+ ACE_ASSERT (ACE_OS::strcmp (ri->received_exception_id (), e->_id ())== 0);
+
+}
+
+
+Vault_Server_Request_Context_Interceptor::Vault_Server_Request_Context_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Server_Context_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Server_Request_Context_Interceptor::~Vault_Server_Request_Context_Interceptor ()
+{
+}
+
+void
+Vault_Server_Request_Context_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Server_Request_Context_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Server_Request_Context_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Server_Request_Context_Interceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ // if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ //{
+
+ IOP::ServiceId id = request_ctx_id;
+ IOP::ServiceContext *sc = ri->get_request_service_context (id);
+
+ if (sc == 0)
+ ACE_THROW (CORBA::NO_MEMORY ());
+
+ const char *buf = ACE_reinterpret_cast (const char *, sc->context_data.get_buffer ());
+ if (ACE_OS::strcmp (buf, "root123") !=0)
+ ACE_THROW (Test_Interceptors::Invalid ());
+ // }
+
+
+}
+
+void
+Vault_Server_Request_Context_Interceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+
+}
+
+void
+Vault_Server_Request_Context_Interceptor::send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ CORBA::Exception *e = ri->_sending_exception ();
+
+}
+
+///////////////////////////////////Dynamic ////////////////////////////////////
+
+Vault_Client_Request_Dynamic_Interceptor::Vault_Client_Request_Dynamic_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Client_Dynamic_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Client_Request_Dynamic_Interceptor::~Vault_Client_Request_Dynamic_Interceptor ()
+{
+}
+
+void
+Vault_Client_Request_Dynamic_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Client_Request_Dynamic_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Client_Request_Dynamic_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Client_Request_Dynamic_Interceptor::send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ if (ACE_OS::strcmp (ri->operation (), "authenticate") == 0)
+ {
+ Dynamic::ParameterList paramlist = *(ri->arguments ());
+ const char *user;
+ paramlist[0].argument >>= user;
+ }
+
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ Dynamic::ParameterList paramlist = *(ri->arguments ());
+ Test_Interceptors::Secure_Vault::Record *record;
+ CORBA::Long id;
+ paramlist[0].argument >>= id;
+ paramlist[1].argument >>= record;
+ }
+
+}
+
+void
+Vault_Client_Request_Dynamic_Interceptor::receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+ if (ACE_OS::strcmp (ri->operation (), "ready") == 0)
+ {
+ CORBA::Short result;
+ CORBA_Any result_any = *(ri->result ());
+ result_any >>= result;
+ }
+
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ CORBA::Long result;
+ CORBA_Any result_any = *(ri->result ());
+ result_any >>= result;
+ }
+
+}
+
+void
+Vault_Client_Request_Dynamic_Interceptor::receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ // As of now, there is no way to extract an exception from an Any in TAO.
+ CORBA::Exception *e = ri->_received_exception ();
+
+ ACE_ASSERT (ACE_OS::strcmp (ri->received_exception_id (), e->_id ())== 0);
+
+}
+
+
+Vault_Server_Request_Dynamic_Interceptor::Vault_Server_Request_Dynamic_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Server_Dynamic_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Server_Request_Dynamic_Interceptor::~Vault_Server_Request_Dynamic_Interceptor ()
+{
+}
+
+void
+Vault_Server_Request_Dynamic_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Server_Request_Dynamic_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Server_Request_Dynamic_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Server_Request_Dynamic_Interceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ if (ACE_OS::strcmp (ri->operation (), "authenticate") == 0)
+ {
+ Dynamic::ParameterList paramlist = *(ri->arguments ());
+ const char *user;
+ paramlist[0].argument >>= user;
+ }
+
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ Dynamic::ParameterList paramlist = *(ri->arguments ());
+ Test_Interceptors::Secure_Vault::Record *record;
+ CORBA::Long id;
+ paramlist[0].argument >>= id;
+ paramlist[1].argument >>= record;
+ }
+}
+
+void
+Vault_Server_Request_Dynamic_Interceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+
+ if (ACE_OS::strcmp (ri->operation (), "ready") == 0)
+ {
+ CORBA::Short result;
+ CORBA_Any result_any = *(ri->result ());
+ result_any >>= result;
+ }
+
+ if (ACE_OS::strcmp (ri->operation (), "update_records") == 0)
+ {
+ CORBA::Long result;
+ CORBA_Any result_any = *(ri->result ());
+ result_any >>= result;
+ }
+}
+
+void
+Vault_Server_Request_Dynamic_Interceptor::send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ CORBA::Exception *e = ri->_sending_exception ();
+
+}
+//////////////////////////////NOOP///////////////////////////////////////
+
+Vault_Client_Request_NOOP_Interceptor::Vault_Client_Request_NOOP_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Client_NOOP_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Client_Request_NOOP_Interceptor::~Vault_Client_Request_NOOP_Interceptor ()
+{
+}
+
+void
+Vault_Client_Request_NOOP_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Client_Request_NOOP_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Client_Request_NOOP_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Client_Request_NOOP_Interceptor::send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+
+}
+
+void
+Vault_Client_Request_NOOP_Interceptor::receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+
+}
+
+void
+Vault_Client_Request_NOOP_Interceptor::receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ // As of now, there is no way to extract an exception from an Any in TAO.
+ CORBA::Exception *e = ri->_received_exception ();
+
+ ACE_ASSERT (ACE_OS::strcmp (ri->received_exception_id (), e->_id ())== 0);
+
+}
+
+
+Vault_Server_Request_NOOP_Interceptor::Vault_Server_Request_NOOP_Interceptor (CORBA::ORB_ptr orb)
+ : myname_ ("Vault_Server_NOOP_Interceptor"),
+ orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+Vault_Server_Request_NOOP_Interceptor::~Vault_Server_Request_NOOP_Interceptor ()
+{
+}
+
+void
+Vault_Server_Request_NOOP_Interceptor::_add_ref (void)
+{
+ this->_incr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+void
+Vault_Server_Request_NOOP_Interceptor::_remove_ref (void)
+{
+ this->_decr_refcnt ();
+ // This is a TAO specific implementation.
+}
+
+char *
+Vault_Server_Request_NOOP_Interceptor::name (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return CORBA::string_dup (this->myname_);
+}
+
+void
+Vault_Server_Request_NOOP_Interceptor::receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+
+}
+
+void
+Vault_Server_Request_NOOP_Interceptor::send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+
+}
+
+void
+Vault_Server_Request_NOOP_Interceptor::send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest))
+{
+ CORBA::Exception *e = ri->_sending_exception ();
+
+}
+#endif /* (TAO_HAS_INTERCEPTORS == 1) */
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/interceptors.h b/TAO/tests/Portable_Interceptors/Benchmark/interceptors.h
new file mode 100644
index 00000000000..ec8fc6b8354
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/interceptors.h
@@ -0,0 +1,395 @@
+// $Id$
+
+#ifndef TAO_INTERCEPTORS_H
+#define TAO_INTERCEPTORS_H
+
+//#include "tao/corba.h"
+#include "testC.h"
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning(push)
+#endif /* _MSC_VER >= 1200 */
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+// Forward Declarations
+#if (TAO_HAS_INTERCEPTORS == 1)
+class PortableInterceptor::ClientRequestInfo;
+class PortableInterceptor::ServerRequestInfo;
+
+
+class Vault_Client_Request_Interceptor
+: public PortableInterceptor::ClientRequestInterceptor//,
+ // public CORBA::LocalObject
+{
+ // = Client-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Client_Request_Interceptor (CORBA::ORB_ptr orb);
+ // ctor.
+ virtual ~Vault_Client_Request_Interceptor ();
+ // dtor.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Canonical name of the interceptor.
+
+ virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENVV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+
+};
+
+class Vault_Server_Request_Interceptor
+: public PortableInterceptor::ServerRequestInterceptor//,
+// public CORBA::LocalObject
+{
+ // = Server-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Server_Request_Interceptor (CORBA::ORB_ptr orb);
+ // cotr.
+ ~Vault_Server_Request_Interceptor ();
+ // dotr.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Canonical name of the interceptor.
+
+ virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+};
+
+class Vault_Client_Request_Context_Interceptor
+: public PortableInterceptor::ClientRequestInterceptor//,
+ // public CORBA::LocalObject
+{
+ // = Client-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Client_Request_Context_Interceptor (CORBA::ORB_ptr orb);
+ // ctor.
+ virtual ~Vault_Client_Request_Context_Interceptor ();
+ // dtor.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Canonical name of the interceptor.
+
+ virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENVV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+
+};
+
+class Vault_Server_Request_Context_Interceptor
+: public PortableInterceptor::ServerRequestInterceptor//,
+// public CORBA::LocalObject
+{
+ // = Server-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Server_Request_Context_Interceptor (CORBA::ORB_ptr orb);
+ // cotr.
+ ~Vault_Server_Request_Context_Interceptor ();
+ // dotr.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Canonical name of the interceptor.
+
+ virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+};
+
+
+class Vault_Client_Request_Dynamic_Interceptor
+: public PortableInterceptor::ClientRequestInterceptor//,
+ // public CORBA::LocalObject
+{
+ // = Client-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Client_Request_Dynamic_Interceptor (CORBA::ORB_ptr orb);
+ // ctor.
+ virtual ~Vault_Client_Request_Dynamic_Interceptor ();
+ // dtor.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Canonical name of the interceptor.
+
+ virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENVV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+
+};
+
+class Vault_Server_Request_Dynamic_Interceptor
+: public PortableInterceptor::ServerRequestInterceptor//,
+// public CORBA::LocalObject
+{
+ // = Server-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Server_Request_Dynamic_Interceptor (CORBA::ORB_ptr orb);
+ // cotr.
+ ~Vault_Server_Request_Dynamic_Interceptor ();
+ // dotr.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Canonical name of the interceptor.
+
+ virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+};
+
+
+class Vault_Client_Request_NOOP_Interceptor
+: public PortableInterceptor::ClientRequestInterceptor//,
+ // public CORBA::LocalObject
+{
+ // = Client-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Client_Request_NOOP_Interceptor (CORBA::ORB_ptr orb);
+ // ctor.
+ virtual ~Vault_Client_Request_NOOP_Interceptor ();
+ // dtor.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ // Canonical name of the interceptor.
+
+ virtual void send_request (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENVV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void receive_reply (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void receive_exception (PortableInterceptor::ClientRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+
+};
+
+class Vault_Server_Request_NOOP_Interceptor
+: public PortableInterceptor::ServerRequestInterceptor//,
+// public CORBA::LocalObject
+{
+ // = Server-side Vault interceptor. For checking interceptor visually only.
+public:
+ Vault_Server_Request_NOOP_Interceptor (CORBA::ORB_ptr orb);
+ // cotr.
+ ~Vault_Server_Request_NOOP_Interceptor ();
+ // dotr.
+
+ virtual void _add_ref (void);
+ // Increment the reference count.
+
+ virtual void _remove_ref (void);
+ // Decrement the reference count.
+
+ virtual char * name (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Canonical name of the interceptor.
+
+ virtual void receive_request (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_reply (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+ virtual void send_exception (PortableInterceptor::ServerRequestInfo_ptr ri,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ PortableInterceptor::ForwardRequest));
+
+private:
+ const char *myname_;
+
+ CORBA::ORB_var orb_;
+};
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+#endif /* (TAO_HAS_INTERCEPTORS == 1) */
+#endif /* TAO_INTERCEPTORS_H */
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/marker.cpp b/TAO/tests/Portable_Interceptors/Benchmark/marker.cpp
new file mode 100644
index 00000000000..dda5ff3c73b
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/marker.cpp
@@ -0,0 +1,69 @@
+// $Id$
+#include "marker.h"
+
+void
+Marker::accumulate_into (ACE_Throughput_Stats &throughput,
+ int which_method) const
+{
+ switch (which_method)
+ {
+ case 1: // method ready
+ throughput.accumulate (this->throughput_method_ready_);
+ break;
+ case 2: // method authenticate
+ throughput.accumulate (this->throughput_method_authenticate_);
+ break;
+ case 3: // method update_records
+ throughput.accumulate (this->throughput_method_update_records_);
+ break;
+ default:
+ break;
+ }
+
+}
+
+void
+Marker::dump_stats (const char* msg,
+ ACE_UINT32 gsf,
+ int which_method)
+{
+ switch (which_method)
+ {
+ case 1: // method ready
+ this->throughput_method_ready_.dump_results (msg, gsf);
+ break;
+ case 2: // method authentciate
+ this->throughput_method_authenticate_.dump_results (msg, gsf);
+ break;
+ case 3: // method update_records
+ this->throughput_method_update_records_.dump_results (msg, gsf);
+ break;
+ default:
+ break;
+ }
+}
+
+void
+Marker::sample (ACE_hrtime_t throughput_diff,
+ ACE_hrtime_t latency_diff,
+ int which_method)
+{
+ switch (which_method)
+ {
+ case 1: // method ready
+ this->throughput_method_ready_.sample (throughput_diff,
+ latency_diff);
+ break;
+ case 2: // method authentciate
+ this->throughput_method_authenticate_.sample (throughput_diff,
+ latency_diff);
+ break;
+ case 3: // method update_records
+ this->throughput_method_update_records_.sample (throughput_diff,
+ latency_diff);
+ break;
+ default:
+ break;
+ }
+
+}
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/marker.h b/TAO/tests/Portable_Interceptors/Benchmark/marker.h
new file mode 100644
index 00000000000..f0edba12041
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/marker.h
@@ -0,0 +1,33 @@
+// $Id$
+
+#include "ace/High_Res_Timer.h"
+#include "ace/Sched_Params.h"
+#include "ace/Stats.h"
+
+class Marker
+{
+ public:
+
+ void accumulate_into (ACE_Throughput_Stats &throughput,
+ int which_method) const;
+ // Accumulate the throughput statistics into <throughput>
+
+ void dump_stats (const char* msg,
+ ACE_UINT32 gsf,
+ int which_method);
+ // Print stats
+
+ void sample (ACE_hrtime_t throughput_diff,
+ ACE_hrtime_t latency_diff,
+ int which_method);
+ // get the sample.
+
+ private:
+ ACE_Throughput_Stats throughput_method_ready_;
+ // Keep throughput statistics on a per-thread basis
+ ACE_Throughput_Stats throughput_method_authenticate_;
+ // Keep throughput statistics on a per-thread basis
+ ACE_Throughput_Stats throughput_method_update_records_;
+ // Keep throughput statistics on a per-thread basis
+};
+
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/run_test.pl b/TAO/tests/Portable_Interceptors/Benchmark/run_test.pl
new file mode 100755
index 00000000000..1178584674b
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/run_test.pl
@@ -0,0 +1,52 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+
+unshift @INC, '../../../../bin';
+require Process;
+require ACEutils;
+use Cwd;
+
+$cwd = getcwd();
+ACE::checkForTarget($cwd);
+
+print STDERR "\n\n==== Running interceptor Benchmark test\n";
+
+$file = "$cwd$DIR_SEPARATOR" . "test.ior";
+
+unlink $file;
+
+$SV = Process::Create ($EXEPREFIX."server".$EXE_EXT,
+ "-ORBobjrefstyle url -o $file");
+if (ACE::waitforfile_timed ($file, 15) == -1) {
+ print STDERR "ERROR: cannot find file <$file>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+$CL = Process::Create ($EXEPREFIX."client".$EXE_EXT,
+ "-ORBobjrefstyle url -f file://$file");
+
+
+$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);
+}
+
+if ($client == -1 || $server == -1) {
+ exit 1;
+}
+
+unlink $file;
+
+exit 0;
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/server.bor b/TAO/tests/Portable_Interceptors/Benchmark/server.bor
new file mode 100644
index 00000000000..e9273be7c4c
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/server.bor
@@ -0,0 +1,31 @@
+#
+# Makefile for building the Interceptors server
+#
+
+NAME = server
+
+TAO_IDL = $(CORE_BINDIR)\tao_idl -g $(CORE_BINDIR)\gperf.exe -Ge 1
+
+OBJFILES = \
+ $(OBJDIR)\testS.obj \
+ $(OBJDIR)\testC.obj \
+ $(OBJDIR)\test_i.obj \
+ $(OBJDIR)\interceptors.obj \
+ $(OBJDIR)\server.obj
+
+CFLAGS = $(ACE_CFLAGS) $(TAO_CFLAGS)
+
+LIBFILES = $(ACE_LIB) $(TAO_LIB)
+
+CPPDIR = .
+
+IDLDIR = .
+
+!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor>
+
+#
+# IDL Build rules
+#
+
+$(IDLDIR)\testS.cpp $(IDLDIR)\testC.cpp: $(IDLDIR)\test.idl
+ $(TAO_IDL) $**
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/server.cpp b/TAO/tests/Portable_Interceptors/Benchmark/server.cpp
new file mode 100644
index 00000000000..6d9e57b9516
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/server.cpp
@@ -0,0 +1,185 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "test_i.h"
+#include "interceptors.h"
+
+ACE_RCSID(Benchmark, server, "$Id$")
+
+const char *ior_output_file = 0;
+int register_interceptor = 1;
+// The different type of interceptors have different functionality
+// to perform.
+// NOOP: does nothing on all interception points
+// CONTEXT: does service context manipulation
+// DYNAMIC: call upon dynamic interface methods and does extraction
+// from anys.
+enum Interceptor_Type
+{
+ NONE,
+ NOOP,
+ CONTEXT,
+ DYNAMIC
+};
+static Interceptor_Type interceptor_type = NONE;
+
+int
+parse_args (int argc, char *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, "o:r:");
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ ior_output_file = get_opts.optarg;
+ break;
+ case 'r':
+ {
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("none")) == 0)
+ interceptor_type = NONE;
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("noop")) == 0)
+ interceptor_type = NOOP;
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("context")) == 0)
+ interceptor_type = CONTEXT;
+ if (ACE_OS::strcmp (get_opts.optarg, ACE_TEXT ("dynamic")) == 0)
+ interceptor_type = DYNAMIC;
+
+ break;
+ }
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-o <iorfile> -r <register_interceptor>"
+ "\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;
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+#if (TAO_HAS_INTERCEPTORS == 1)
+ switch (interceptor_type)
+ {
+ case NONE:
+ break;
+ case NOOP:
+ {
+ PortableInterceptor::ServerRequestInterceptor_ptr interceptor = 0;
+ // Installing the Vault interceptor
+ ACE_NEW_RETURN (interceptor,
+ Vault_Server_Request_NOOP_Interceptor (orb.in ()),
+ -1);
+ orb->_register_server_interceptor (interceptor);
+ break;
+ }
+ case CONTEXT:
+ {
+ PortableInterceptor::ServerRequestInterceptor_ptr interceptor = 0;
+ // Installing the Vault interceptor
+ ACE_NEW_RETURN (interceptor,
+ Vault_Server_Request_Context_Interceptor (orb.in ()),
+ -1);
+ orb->_register_server_interceptor (interceptor);
+ break;
+ }
+ case DYNAMIC:
+ {
+ PortableInterceptor::ServerRequestInterceptor_ptr interceptor = 0;
+ // Installing the Vault interceptor
+ ACE_NEW_RETURN (interceptor,
+ Vault_Server_Request_Dynamic_Interceptor (orb.in ()),
+ -1);
+ orb->_register_server_interceptor (interceptor);
+ break;
+ }
+
+ }
+#endif /* (TAO_HAS_INTERCEPTORS == 1) */
+
+ 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;
+
+ Secure_Vault_i server_impl (orb.in ());
+
+ PortableServer::ObjectId_var id =
+ root_poa->activate_object (&server_impl,
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (0);
+
+ CORBA::Object_var test_obj =
+ root_poa->id_to_reference (id.in (),
+ ACE_TRY_ENV);
+ ACE_CHECK_RETURN (0);
+
+ Test_Interceptors::Secure_Vault_var server =
+ Test_Interceptors::Secure_Vault::_narrow (test_obj.in (),
+ 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, "Test_Interceptors::Secure_Vault: <%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;
+
+ if (orb->run () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "orb->run"), -1);
+ ACE_DEBUG ((LM_DEBUG, "event loop finished\n"));
+
+ root_poa->destroy (1, 1, ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Catched exception:");
+ return 1;
+ }
+ ACE_ENDTRY;
+
+ return 0;
+}
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/test.idl b/TAO/tests/Portable_Interceptors/Benchmark/test.idl
new file mode 100644
index 00000000000..77e3c3114aa
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/test.idl
@@ -0,0 +1,52 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/Interceptors
+//
+// = FILENAME
+// test.idl
+//
+// = DESCRIPTION
+// Simple IDL file to test portable interceptor support.
+//
+// = AUTHORS
+// Kirthika Parameswaran <kirthika@cs.wustl.edu>
+// ============================================================================
+
+module Test_Interceptors
+{
+ exception Invalid
+ {};
+
+ interface Secure_Vault
+ {
+ // = TITLE
+ // A test idl for checking interceptor with the aim of
+ // performing benchmarks.
+ //
+ // = DESCRIPTION
+ // A secure vault into which one can store transaction details.
+
+ struct Record
+ {
+ long check_num;
+ long amount;
+ };
+
+ short ready ();
+ // No args/exceptions operation.
+
+ void authenticate (in string user)
+ raises (Invalid);
+ // throws a user exception.
+
+ long update_records (in long id, in Record val);
+ // Normal operation with a return val.
+
+ oneway void shutdown ();
+ // shutdown the ORB
+
+ };
+};
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/test_i.cpp b/TAO/tests/Portable_Interceptors/Benchmark/test_i.cpp
new file mode 100644
index 00000000000..ae5ec11be49
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/test_i.cpp
@@ -0,0 +1,46 @@
+// $Id$
+
+#include "test_i.h"
+#include "marker.h"
+
+ACE_RCSID(Benchmark, test_i, "$Id$")
+
+Secure_Vault_i::Secure_Vault_i (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+// ctor
+
+CORBA::Short
+Secure_Vault_i::ready (CORBA::Environment &)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ return 1;
+}
+
+void
+Secure_Vault_i::authenticate (const char * user,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Test_Interceptors::Invalid))
+{
+ if (ACE_OS::strcmp (user, "root") != 0)
+ ACE_THROW (Test_Interceptors::Invalid ());
+
+}
+
+CORBA::Long
+Secure_Vault_i::update_records (CORBA::Long id,
+ const Test_Interceptors::Secure_Vault::Record & val,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+return 1;
+}
+
+void
+Secure_Vault_i::shutdown (CORBA::Environment&)
+ ACE_THROW_SPEC (())
+{
+ this->orb_->shutdown ();
+}
diff --git a/TAO/tests/Portable_Interceptors/Benchmark/test_i.h b/TAO/tests/Portable_Interceptors/Benchmark/test_i.h
new file mode 100644
index 00000000000..182aca69185
--- /dev/null
+++ b/TAO/tests/Portable_Interceptors/Benchmark/test_i.h
@@ -0,0 +1,56 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/Portable_Interceptors/Benchmark
+//
+// = FILENAME
+// test_i.h
+//
+// = AUTHOR
+// Nanbor Wang
+//
+// ============================================================================
+
+#ifndef TAO_INTERCEPTOR_TEST_I_H
+#define TAO_INTERCEPTOR_TEST_I_H
+
+#include "testS.h"
+
+class Secure_Vault_i : public POA_Test_Interceptors::Secure_Vault
+{
+ // = DESCRIPTION
+ // Implements the Secure_Vault interface in test.idl
+
+public:
+ Secure_Vault_i (CORBA::ORB_ptr orb);
+ // ctor
+
+ virtual CORBA::Short ready (CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void authenticate (const char * user,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException,
+ Test_Interceptors::Invalid));
+ // Passwd sent in the service context list
+
+ virtual CORBA::Long update_records (CORBA::Long id,
+ const Test_Interceptors::Secure_Vault::Record & val,
+ CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ virtual void shutdown (CORBA::Environment &ACE_TRY_ENV =
+ TAO_default_environment ())
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ private:
+ CORBA::ORB_var orb_;
+ // The ORB pointer (for shutdown.)
+};
+
+#endif /* TAO_INTERCEPTOR_TEST_I_H */