summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/ChangeLog-99c115
-rw-r--r--TAO/examples/POA/Generic_Servant/Makefile3
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.cpp1
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.h16
-rw-r--r--TAO/orbsvcs/orbsvcs/Sched/Config_Scheduler.cpp2
-rw-r--r--TAO/orbsvcs/tests/Simple_Naming/client.cpp3
-rw-r--r--TAO/orbsvcs/tests/Trading/Makefile1088
-rw-r--r--TAO/tao/Acceptor_Registry.cpp23
-rw-r--r--TAO/tao/Environment.h6
-rw-r--r--TAO/tao/GIOP.cpp475
-rw-r--r--TAO/tao/GIOP.h187
-rw-r--r--TAO/tao/GIOP.i69
-rw-r--r--TAO/tao/GIOP_Server_Request.cpp77
-rw-r--r--TAO/tao/GIOP_Server_Request.h18
-rw-r--r--TAO/tao/IIOP_Acceptor.cpp10
-rw-r--r--TAO/tao/IIOP_Acceptor.h8
-rw-r--r--TAO/tao/IIOP_Connect.cpp55
-rw-r--r--TAO/tao/IIOP_Connect.h9
-rw-r--r--TAO/tao/IIOP_Factory.cpp2
-rw-r--r--TAO/tao/IIOP_Factory.h7
-rw-r--r--TAO/tao/IIOP_Profile.cpp20
-rw-r--r--TAO/tao/IIOP_Profile.h23
-rw-r--r--TAO/tao/IIOP_Profile.i13
-rw-r--r--TAO/tao/IIOP_Transport.cpp151
-rw-r--r--TAO/tao/IIOP_Transport.h31
-rw-r--r--TAO/tao/Invocation.cpp157
-rw-r--r--TAO/tao/Invocation.h11
-rw-r--r--TAO/tao/Invocation.i41
-rw-r--r--TAO/tao/ORB_Core.h10
-rw-r--r--TAO/tao/ORB_Core.i6
-rw-r--r--TAO/tao/Pluggable.cpp92
-rw-r--r--TAO/tao/Pluggable.h67
-rw-r--r--TAO/tao/Pluggable.i2
-rw-r--r--TAO/tao/Reply_Dispatcher.cpp23
-rw-r--r--TAO/tao/Reply_Dispatcher.h17
-rw-r--r--TAO/tao/Server_Request.h3
-rw-r--r--TAO/tao/Transport_Mux_Strategy.cpp24
-rw-r--r--TAO/tao/Transport_Mux_Strategy.h20
-rw-r--r--TAO/tao/UIOP_Acceptor.cpp17
-rw-r--r--TAO/tao/UIOP_Acceptor.h8
-rw-r--r--TAO/tao/UIOP_Connect.cpp46
-rw-r--r--TAO/tao/UIOP_Connect.h9
-rw-r--r--TAO/tao/UIOP_Factory.cpp2
-rw-r--r--TAO/tao/UIOP_Factory.h6
-rw-r--r--TAO/tao/UIOP_Profile.cpp20
-rw-r--r--TAO/tao/UIOP_Profile.h17
-rw-r--r--TAO/tao/UIOP_Profile.i13
-rw-r--r--TAO/tao/UIOP_Transport.cpp151
-rw-r--r--TAO/tao/UIOP_Transport.h32
-rw-r--r--TAO/tao/orbconf.h12
-rw-r--r--TAO/utils/catior/catior.cpp8
-rw-r--r--TAO/utils/nslist/nslist.cpp59
52 files changed, 2324 insertions, 961 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c
index afc8f01afa6..1fe42a08373 100644
--- a/TAO/ChangeLog-99c
+++ b/TAO/ChangeLog-99c
@@ -1,3 +1,118 @@
+Wed Jun 9 20:16:36 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
+
+ * Started the work on GIOP 1.1, the current version is still
+ incomplete, but works and has to be tested in more
+ platforms. The features implemented so far include:
+ + Requests are issued using version 1.1 or version 1.0,
+ depending on the version of the profile.
+ + Acceptors create v 1.1 profiles by default, but can generate
+ 1.0 profiles if a -ORBendpoint option with an explicit version
+ is present (like -ORBendpoint iiop://1.0@host:0)
+ + Replys are sent using the same version that the request
+ + There is a framework to receive a request (or reply) broken in
+ multiple fragments. The framework is not specially efficient,
+ is does not handle fragments with different byte order or
+ different GIOP versions and is completely untested. TAO does
+ *not* generate fragments.
+ + Notice that the tagged components in the profile are *not*
+ implemented yet.
+
+ * tao/orbconf.h:
+ Added new macros to control the default GIOP protocol version,
+ either 1.0 or 1.1
+
+ * tao/Acceptor_Registry.cpp:
+ Use the version in the command-line endpoint to initialize the
+ Acceptor.
+
+ * tao/Environment.h:
+ Cosmetic fixes
+
+ * tao/GIOP.h:
+ * tao/GIOP.i:
+ * tao/GIOP.cpp:
+ Many changes to support 1.1, including a new class to keep the
+ state of an incoming message composed by multiple fragments.
+
+ * tao/Server_Request.h:
+ * tao/GIOP_Server_Request.h:
+ * tao/GIOP_Server_Request.cpp:
+ The server request uses the version of the request to determine
+ the version of the reply.
+ We don't need to use exceptions in the constructor, saving us
+ from some really nasty portability problems.
+
+ * tao/Invocation.h:
+ * tao/Invocation.i:
+ * tao/Invocation.cpp:
+ Moved the code to initialize a Request or LocateRequest message
+ to the transport classes, not only this isolates the use of
+ TAO_GIOP even further, it is also needed because the transport
+ class needs to query the version of the Profile to determine the
+ version of the GIOP message.
+
+ * tao/ORB_Core.h:
+ * tao/ORB_Core.i:
+ Added the Service Context List to the ORB core, it lacks an
+ elegant interface, but at least it can be set and is used.
+
+ * tao/Reply_Dispatcher.h:
+ * tao/Reply_Dispatcher.cpp:
+ * tao/Transport_Mux_Strategy.h:
+ * tao/Transport_Mux_Strategy.cpp:
+ Changed the interfaces in the the ORB core to use a
+ TAO_GIOP_Message_State that keeps track of not only the payload,
+ but of any fragments for the current message, the current amount
+ of data read on the fragment, etc.
+
+ * tao/Pluggable.h:
+ * tao/Pluggable.i:
+ * tao/Pluggable.cpp:
+ * tao/IIOP_Acceptor.h:
+ * tao/IIOP_Acceptor.cpp:
+ * tao/IIOP_Connect.h:
+ * tao/IIOP_Connect.cpp:
+ * tao/IIOP_Factory.h:
+ * tao/IIOP_Factory.cpp:
+ * tao/IIOP_Profile.h:
+ * tao/IIOP_Profile.i:
+ * tao/IIOP_Profile.cpp:
+ * tao/IIOP_Transport.h:
+ * tao/IIOP_Transport.cpp:
+ * tao/UIOP_Acceptor.h:
+ * tao/UIOP_Acceptor.cpp:
+ * tao/UIOP_Connect.h:
+ * tao/UIOP_Connect.cpp:
+ * tao/UIOP_Factory.h:
+ * tao/UIOP_Factory.cpp:
+ * tao/UIOP_Profile.h:
+ * tao/UIOP_Profile.i:
+ * tao/UIOP_Profile.cpp:
+ * tao/UIOP_Transport.h:
+ * tao/UIOP_Transport.cpp:
+ All the classes where change to propagate the GIOP version of
+ the message and the profile used for each request.
+
+ * orbsvcs/tests/Simple_Naming/client.cpp:
+ Use CORBA::is_nil() to validate object references
+
+ * orbsvcs/ImplRepo_Service/ImplRepo_i.h:
+ * orbsvcs/ImplRepo_Service/ImplRepo_i.cpp:
+ Updated to use the new TAO IIOP_Profile constructor
+
+ * utils/catior/catior.cpp:
+ TAO moved to GIOP 1.1, but this test can only handle GIOP 1.0
+
+ * utils/nslist/nslist.cpp:
+ * orbsvcs/orbsvcs/Sched/Config_Scheduler.cpp:
+ Fixed use of String_var and managed types must passed using
+ .in() to ACE_DEBUG()
+
+ * orbsvcs/tests/Trading/Makefile:
+ * examples/POA/Generic_Servant/Makefile:
+ Define PSRC so the dependencies for the program files
+ are also generated.
+
Wed Jun 9 17:16:44 1999 Marina Spivak <marina@cs.wustl.edu>
* orbsvcs/tests/Simple_Naming/run_test.pl:
diff --git a/TAO/examples/POA/Generic_Servant/Makefile b/TAO/examples/POA/Generic_Servant/Makefile
index bd5e6be7834..1b62578542e 100644
--- a/TAO/examples/POA/Generic_Servant/Makefile
+++ b/TAO/examples/POA/Generic_Servant/Makefile
@@ -40,8 +40,9 @@ VLDLIBS = $(LDLIBS:%=%$(VAR))
VBIN = $(BIN:%=%$(VAR))
LIBS = -lTAO
-LSRC = $(addsuffix .cpp,$(SHLIB_SRC)) client.cpp
+LSRC = $(addsuffix .cpp,$(SHLIB_SRC))
LOBJ = $(addsuffix .o,$(SHLIB_SRC))
+PSRC = $(addsuffix .cpp,$(BIN))
#----------------------------------------------------------------------------
# Include macros and targets
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.cpp b/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.cpp
index e9537f11618..f1528103f16 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.cpp
@@ -57,6 +57,7 @@ ImplRepo_i::activate_object (CORBA::Object_ptr obj,
ACE_NEW_RETURN (new_pfile,
TAO_IIOP_Profile (iiop_pfile->object_addr (),
iiop_pfile->object_key (),
+ iiop_pfile->version (),
stub_obj->orb_core ()),
CORBA::Object::_nil ());
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.h b/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.h
index 3c0fa82efd8..b5d9cfb0dfc 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.h
+++ b/TAO/orbsvcs/ImplRepo_Service/ImplRepo_i.h
@@ -78,29 +78,29 @@ public:
virtual CORBA::Object_ptr activate_object (CORBA::Object_ptr obj,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// Starts up the server containing the object <obj> if not already running.
virtual Implementation_Repository::INET_Addr *activate_server (const char *server,
- CORBA::Environment &env);
+ CORBA::Environment &env = TAO_default_environment ());
// Starts up the server <server> if not already running.
virtual void register_server (const char *server,
const Implementation_Repository::Process_Options &options,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// Adds the server to the repository and registers the startup information about
// the server <server>.
virtual void reregister_server (const char *server,
const Implementation_Repository::Process_Options &options,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// Updates the startup information about the server <server>.
virtual void remove_server (const char *server,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// Removes the server <server> from the repository.
virtual Implementation_Repository::INET_Addr
@@ -108,20 +108,20 @@ public:
const Implementation_Repository::INET_Addr &addr,
CORBA::Object_ptr ping,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// Called by the server to update transient information such as current location of
// the <server> and its ping object.
virtual void server_is_shutting_down (const char * server,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// What the server should call before it shutsdown.
// = Other methods
int init (int argc, char **argv,
CORBA_Environment &ACE_TRY_ENV
- = CORBA_Environment::default_environment ());
+ = TAO_default_environment ());
// Initialize the Server state - parsing arguments and waiting.
int run (CORBA_Environment &ACE_TRY_ENV = CORBA_Environment::default_environment ());
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Config_Scheduler.cpp b/TAO/orbsvcs/orbsvcs/Sched/Config_Scheduler.cpp
index 4ce06cc4c60..c0f38390024 100644
--- a/TAO/orbsvcs/orbsvcs/Sched/Config_Scheduler.cpp
+++ b/TAO/orbsvcs/orbsvcs/Sched/Config_Scheduler.cpp
@@ -328,7 +328,7 @@ void ACE_Config_Scheduler::compute_scheduling (CORBA::Long minimum_priority,
ACE_DEBUG ((LM_DEBUG,
"%s: %s\n",
anomaly_severity_msg,
- (*anomaly)->description));
+ (*anomaly)->description.in ()));
// Store the anomaly in the anomaly sequence out parameter
anomalies[anomaly_index] = **anomaly;
diff --git a/TAO/orbsvcs/tests/Simple_Naming/client.cpp b/TAO/orbsvcs/tests/Simple_Naming/client.cpp
index 82302915623..9ec5bf2a9ad 100644
--- a/TAO/orbsvcs/tests/Simple_Naming/client.cpp
+++ b/TAO/orbsvcs/tests/Simple_Naming/client.cpp
@@ -346,8 +346,7 @@ MT_Test::svc (void)
int
MT_Test::execute (TAO_Naming_Client &root_context)
{
- // if we weren't given the orb pointer - cannot proceed.
- if (orb_.ptr () == 0)
+ if (CORBA::is_nil (this->orb_.in ()))
return -1;
// Create data which will be used by all threads.
diff --git a/TAO/orbsvcs/tests/Trading/Makefile b/TAO/orbsvcs/tests/Trading/Makefile
index 20f2db2942e..3ddb6b514f9 100644
--- a/TAO/orbsvcs/tests/Trading/Makefile
+++ b/TAO/orbsvcs/tests/Trading/Makefile
@@ -36,6 +36,7 @@ LDFLAGS += -L$(TAO_ROOT)/orbsvcs/orbsvcs -L$(TAO_ROOT)/tao
CPPFLAGS += -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) $(TSS_ORB_FLAG)
LSRC = $(addsuffix .cpp,$(FILES))
+PSRC = $(addsuffix .cpp,$(BIN))
LIBS = -lorbsvcs -lTAO
LDLIBS = -lorbsvcs -lTAO
VLDLIBS = $(LDLIBS:%=%$(VAR))
@@ -229,18 +230,7 @@ realclean: clean
$(ACE_ROOT)/ace/Singleton.i \
$(ACE_ROOT)/ace/Singleton.cpp \
$(TAO_ROOT)/tao/POA.h \
- $(TAO_ROOT)/tao/POAC.h \
- $(TAO_ROOT)/tao/POAC.i \
- $(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/POAS.i \
- $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
$(TAO_ROOT)/tao/Key_Adapters.h \
$(ACE_ROOT)/ace/Map.h \
$(ACE_ROOT)/ace/Map.i \
@@ -260,14 +250,25 @@ realclean: clean
$(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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -322,6 +323,7 @@ realclean: clean
$(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 \
@@ -480,18 +482,7 @@ realclean: clean
$(ACE_ROOT)/ace/Singleton.i \
$(ACE_ROOT)/ace/Singleton.cpp \
$(TAO_ROOT)/tao/POA.h \
- $(TAO_ROOT)/tao/POAC.h \
- $(TAO_ROOT)/tao/POAC.i \
- $(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/POAS.i \
- $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
$(TAO_ROOT)/tao/Key_Adapters.h \
$(ACE_ROOT)/ace/Map.h \
$(ACE_ROOT)/ace/Map.i \
@@ -511,14 +502,25 @@ realclean: clean
$(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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -573,6 +575,7 @@ realclean: clean
$(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 \
@@ -731,18 +734,7 @@ realclean: clean
$(ACE_ROOT)/ace/Singleton.i \
$(ACE_ROOT)/ace/Singleton.cpp \
$(TAO_ROOT)/tao/POA.h \
- $(TAO_ROOT)/tao/POAC.h \
- $(TAO_ROOT)/tao/POAC.i \
- $(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/POAS.i \
- $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
$(TAO_ROOT)/tao/Key_Adapters.h \
$(ACE_ROOT)/ace/Map.h \
$(ACE_ROOT)/ace/Map.i \
@@ -762,14 +754,25 @@ realclean: clean
$(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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -824,6 +827,7 @@ realclean: clean
$(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 \
@@ -1010,18 +1014,7 @@ realclean: clean
$(ACE_ROOT)/ace/Singleton.i \
$(ACE_ROOT)/ace/Singleton.cpp \
$(TAO_ROOT)/tao/POA.h \
- $(TAO_ROOT)/tao/POAC.h \
- $(TAO_ROOT)/tao/POAC.i \
- $(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/POAS.i \
- $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
$(TAO_ROOT)/tao/Key_Adapters.h \
$(ACE_ROOT)/ace/Map.h \
$(ACE_ROOT)/ace/Map.i \
@@ -1041,14 +1034,25 @@ realclean: clean
$(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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -1103,6 +1107,7 @@ realclean: clean
$(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 \
@@ -1272,18 +1277,7 @@ realclean: clean
$(ACE_ROOT)/ace/Singleton.i \
$(ACE_ROOT)/ace/Singleton.cpp \
$(TAO_ROOT)/tao/POA.h \
- $(TAO_ROOT)/tao/POAC.h \
- $(TAO_ROOT)/tao/POAC.i \
- $(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/POAS.i \
- $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
$(TAO_ROOT)/tao/Key_Adapters.h \
$(ACE_ROOT)/ace/Map.h \
$(ACE_ROOT)/ace/Map.i \
@@ -1303,14 +1297,25 @@ realclean: clean
$(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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -1365,6 +1370,7 @@ realclean: clean
$(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 \
@@ -1557,18 +1563,7 @@ realclean: clean
$(ACE_ROOT)/ace/Singleton.i \
$(ACE_ROOT)/ace/Singleton.cpp \
$(TAO_ROOT)/tao/POA.h \
- $(TAO_ROOT)/tao/POAC.h \
- $(TAO_ROOT)/tao/POAC.i \
- $(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/POAS.i \
- $(TAO_ROOT)/tao/Active_Object_Map.h \
+ $(TAO_ROOT)/tao/Object_Adapter.h \
$(TAO_ROOT)/tao/Key_Adapters.h \
$(ACE_ROOT)/ace/Map.h \
$(ACE_ROOT)/ace/Map.i \
@@ -1588,14 +1583,25 @@ realclean: clean
$(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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -1650,6 +1656,7 @@ realclean: clean
$(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 \
@@ -1850,8 +1857,31 @@ realclean: clean
$(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 \
@@ -1862,6 +1892,248 @@ realclean: clean
$(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/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/iopfwd.h \
+ $(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 \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.i \
+ Simple_Dynamic.cpp
+.obj/export_test.o .obj/export_test.so .shobj/export_test.o .shobj/export_test.so: export_test.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/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/POAC.h \
+ $(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/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.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/PolicyC.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/POAC.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/ORB.i \
+ Offer_Exporter.h TT_Info.h TTestS.h TTestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(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 \
@@ -1883,12 +2155,21 @@ realclean: clean
$(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/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/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/poa_macros.h \
$(TAO_ROOT)/tao/POAManager.i \
- $(TAO_ROOT)/tao/Object_Adapter.h \
- $(TAO_ROOT)/tao/Object_Adapter.i \
$(TAO_ROOT)/tao/POA.i \
$(TAO_ROOT)/tao/Stub.h \
$(TAO_ROOT)/tao/Pluggable.h \
@@ -1943,6 +2224,7 @@ realclean: clean
$(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 \
@@ -1954,26 +2236,644 @@ realclean: clean
$(TAO_ROOT)/tao/ObjectIDList.h \
$(TAO_ROOT)/tao/ObjectIDList.i \
$(TAO_ROOT)/tao/WrongTransactionC.h \
+ TTestC.i TTestS_T.h TTestS_T.i TTestS_T.cpp TTestS.i \
+ $(ACE_ROOT)/ace/Arg_Shifter.h \
+ $(ACE_ROOT)/ace/Read_Buffer.h \
+ $(ACE_ROOT)/ace/Read_Buffer.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.i \
+ Simple_Dynamic.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Trader_Utils.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Trader.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.cpp \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.i \
+ Simple_Dynamic.cpp Offer_Importer.h \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.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 \
+ Service_Type_Exporter.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.h \
+ $(ACE_ROOT)/ace/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
+.obj/import_test.o .obj/import_test.so .shobj/import_test.o .shobj/import_test.so: import_test.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/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/POAC.h \
+ $(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/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.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/PolicyC.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/POAC.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/ORB.i \
+ Offer_Importer.h TT_Info.h TTestS.h TTestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(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/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/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/iopfwd.h \
+ $(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 \
+ TTestC.i TTestS_T.h TTestS_T.i TTestS_T.cpp TTestS.i \
+ $(ACE_ROOT)/ace/Arg_Shifter.h \
+ $(ACE_ROOT)/ace/Read_Buffer.h \
+ $(ACE_ROOT)/ace/Read_Buffer.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.i \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.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 \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Trader_Utils.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Trader.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.cpp \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.i
+.obj/colocated_test.o .obj/colocated_test.so .shobj/colocated_test.o .shobj/colocated_test.so: colocated_test.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/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/Auto_Ptr.i \
+ $(ACE_ROOT)/ace/Auto_Ptr.cpp \
+ $(ACE_ROOT)/ace/Get_Opt.h \
+ $(ACE_ROOT)/ace/Get_Opt.i \
+ $(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/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/POAC.h \
+ $(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/Exception.h \
+ $(TAO_ROOT)/tao/Exception.i \
+ $(TAO_ROOT)/tao/Typecode.i \
+ $(TAO_ROOT)/tao/CDR.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/PolicyC.i \
+ $(TAO_ROOT)/tao/Environment.h \
+ $(TAO_ROOT)/tao/Environment.i \
+ $(TAO_ROOT)/tao/POAC.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/ORB.i \
+ Offer_Exporter.h TT_Info.h TTestS.h TTestC.h \
+ $(TAO_ROOT)/tao/corba.h \
+ $(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/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/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/iopfwd.h \
+ $(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 \
+ TTestC.i TTestS_T.h TTestS_T.i TTestS_T.cpp TTestS.i \
+ $(ACE_ROOT)/ace/Arg_Shifter.h \
+ $(ACE_ROOT)/ace/Read_Buffer.h \
+ $(ACE_ROOT)/ace/Read_Buffer.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingC.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposC.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicC.i \
+ Simple_Dynamic.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Trader_Utils.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Trader.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS_T.cpp \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingReposS.i \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.h \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.i \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS_T.cpp \
$(TAO_ROOT)/orbsvcs/orbsvcs/CosTradingDynamicS.i \
- Simple_Dynamic.cpp
+ Simple_Dynamic.cpp Offer_Importer.h \
+ $(ACE_ROOT)/ace/Task_T.h \
+ $(ACE_ROOT)/ace/Task.h \
+ $(ACE_ROOT)/ace/Task.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 \
+ Service_Type_Exporter.h \
+ $(TAO_ROOT)/orbsvcs/orbsvcs/Trader/Service_Type_Repository.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/TAO/tao/Acceptor_Registry.cpp b/TAO/tao/Acceptor_Registry.cpp
index 7af569dd697..9906e5a9cc0 100644
--- a/TAO/tao/Acceptor_Registry.cpp
+++ b/TAO/tao/Acceptor_Registry.cpp
@@ -138,7 +138,7 @@ TAO_Acceptor_Registry::open (TAO_ORB_Core *orb_core)
if (addrs [addrs.length () - 1] == '/')
// Get rid of trailing '/'.
- addrs [addrs.length () - 1] = '\0';
+ addrs [addrs.length () - 1] = '\0';
char *last_addr=0;
addr_str.reset (addrs.rep ());
@@ -168,22 +168,29 @@ TAO_Acceptor_Registry::open (TAO_ORB_Core *orb_core)
(*factory)->factory ()->make_acceptor ();
if (acceptor != 0)
{
+ // add acceptor to list.
+ this->acceptors_.insert (acceptor);
+
// Check if an "N.n@" version prefix was
// specified.
// @@ For now, we just drop the version prefix.
// At some point in the future it may become
// useful.
+ int major = -1;
+ int minor = -1;
const char *temp_iop = address.c_str ();
- if (isdigit (temp_iop[0])
- && temp_iop[1] == '.'
- && isdigit (temp_iop[2])
+ if (isdigit (temp_iop[0])
+ && temp_iop[1] == '.'
+ && isdigit (temp_iop[2])
&& temp_iop[3] == '@')
- address = address.substring (4);
-
- // add acceptor to list.
- this->acceptors_.insert (acceptor);
+ {
+ major = temp_iop[0] - '0';
+ minor = temp_iop[2] - '0';
+ address = address.substring (4);
+ }
if (acceptor->open (orb_core,
+ major, minor,
address) == -1)
return -1;
break;
diff --git a/TAO/tao/Environment.h b/TAO/tao/Environment.h
index 86eb048700e..86516d652c3 100644
--- a/TAO/tao/Environment.h
+++ b/TAO/tao/Environment.h
@@ -136,12 +136,12 @@ class TAO_Export CORBA_Environment_var
// Provide for automatic storage deallocation on going out of
// scope.
public:
- CORBA_Environment_var (void);
+ CORBA_Environment_var (void);
// default constructor
CORBA_Environment_var (CORBA_Environment_ptr);
- CORBA_Environment_var (const CORBA_Environment_var &);
+ CORBA_Environment_var (const CORBA_Environment_var &);
// copy constructor
- ~CORBA_Environment_var (void);
+ ~CORBA_Environment_var (void);
// destructor
CORBA_Environment_var &operator= (CORBA_Environment_ptr);
diff --git a/TAO/tao/GIOP.cpp b/TAO/tao/GIOP.cpp
index 9353c3250da..8d97238fe8b 100644
--- a/TAO/tao/GIOP.cpp
+++ b/TAO/tao/GIOP.cpp
@@ -99,23 +99,17 @@ ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_GIOP_Timeprobe_Description,
#endif /* ACE_ENABLE_TIMEPROBES */
-static const char digits [] = "0123456789ABCD";
-static const char *names [] =
-{
- "Request",
- "Reply",
- "CancelRequest",
- "LocateRequest",
- "LocateReply",
- "CloseConnection",
- "MessageError"
- "Fragment"
-};
-
-TAO_GIOP_MessageHeader::TAO_GIOP_MessageHeader (void)
+TAO_GIOP_Message_State::TAO_GIOP_Message_State (TAO_ORB_Core* orb_core)
: byte_order (TAO_ENCAP_BYTE_ORDER),
+ more_fragments (0),
message_type (TAO_GIOP::MessageError),
- message_size (0)
+ message_size (0),
+ current_offset (0),
+ cdr (orb_core->create_input_cdr_data_block (ACE_CDR::DEFAULT_BUFSIZE),
+ TAO_ENCAP_BYTE_ORDER,
+ orb_core),
+ fragments_begin (0),
+ fragments_end (0)
{
// Note that we need to use the ASCII values so the code will be
// portable to platforms that use different character sets, such as
@@ -125,34 +119,123 @@ TAO_GIOP_MessageHeader::TAO_GIOP_MessageHeader (void)
this->magic[2] = 0x4f; // 'O'
this->magic[3] = 0x50; // 'P'
- giop_version.major =
- TAO_GIOP_MessageHeader::MY_MAJOR;
- giop_version.minor =
- TAO_GIOP_MessageHeader::MY_MINOR;
+ giop_version.major = TAO_DEF_GIOP_MAJOR;
+ giop_version.minor = TAO_DEF_GIOP_MINOR;
}
+int
+TAO_GIOP_Message_State::is_complete ()
+{
+ if (this->message_size != this->current_offset)
+ return 0;
+
+ if (this->more_fragments)
+ {
+ // This is only one fragment of the complete Request....
+ ACE_Message_Block* current =
+ this->cdr.steal_contents ();
+ if (this->fragments_begin == 0)
+ {
+ this->first_fragment_byte_order = this->byte_order;
+ this->first_fragment_giop_version = this->giop_version;
+ this->first_fragment_message_type = this->message_type;
+ this->fragments_end = this->fragments_begin = current;
+ this->reset ();
+ return 0;
+ }
+
+ return this->append_fragment (current);
+ }
+
+ if (this->fragments_begin != 0)
+ {
+ // This is the last message, but we must defragment before
+ // sending
+
+ ACE_Message_Block* current =
+ this->cdr.steal_contents ();
+ if (this->append_fragment (current) == -1)
+ return -1;
+
+ // Copy the entire chain into the input CDR.....
+ this->cdr.reset (this->fragments_begin,
+ this->first_fragment_byte_order);
+ ACE_Message_Block::release (this->fragments_begin);
+ this->fragments_begin = 0;
+ this->fragments_end = 0;
+
+ this->byte_order = this->first_fragment_byte_order;
+ this->giop_version = this->first_fragment_giop_version;
+ this->message_type = this->first_fragment_message_type;
+
+ /*FALLTHROUGH*/
+ }
+ // else
+ // {
+ // This message has no more fragments, and there where no fragments
+ // before it, just return... notice that this->cdr has the right
+ // contents.
+ // }
+
+ return 1;
+}
+
+int
+TAO_GIOP_Message_State::append_fragment (ACE_Message_Block* current)
+{
+ this->fragments_end->cont (current);
+ this->fragments_end = this->fragments_end->cont ();
+
+ if (this->first_fragment_byte_order != this->byte_order
+ || this->first_fragment_giop_version.major != this->giop_version.major
+ || this->first_fragment_giop_version.minor != this->giop_version.minor)
+ {
+ // Yes, print it out in all debug levels!
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO (%P|%t) incompatible fragments:\n"
+ " Different GIOP versions or byte order\n"));
+ this->reset ();
+ return -1;
+ }
+ this->reset ();
+ return 0;
+}
+
+
+// ****************************************************************
+
+static const char digits [] = "0123456789ABCD";
+static const char *names [] =
+{
+ "Request",
+ "Reply",
+ "CancelRequest",
+ "LocateRequest",
+ "LocateReply",
+ "CloseConnection",
+ "MessageError"
+ "Fragment"
+};
+
void
TAO_GIOP::dump_msg (const char *label,
const u_char *ptr,
size_t len)
{
- const int TAO_GIOP_VERSION_MAJOR_OFFSET = 4;
- const int TAO_GIOP_VERSION_MINOR_OFFSET = 5;
- const int TAO_GIOP_MESSAGE_TYPE_OFFSET = 7;
-
if (TAO_debug_level >= 5)
{
const char *message_name = "UNKNOWN MESSAGE";
u_long slot = ptr[TAO_GIOP_MESSAGE_TYPE_OFFSET];
if (slot < sizeof (names)/sizeof(names[0]))
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",
label,
digits[ptr[TAO_GIOP_VERSION_MAJOR_OFFSET]],
digits[ptr[TAO_GIOP_VERSION_MINOR_OFFSET]],
len - TAO_GIOP_HEADER_LEN,
- (ptr[6] == TAO_ENCAP_BYTE_ORDER) ? "my" : "other",
+ (byte_order == TAO_ENCAP_BYTE_ORDER) ? "my" : "other",
message_name));
if (ptr[TAO_GIOP_MESSAGE_TYPE_OFFSET] == TAO_GIOP::Request)
@@ -245,21 +328,19 @@ operator>> (TAO_InputCDR &cdr,
}
CORBA::Boolean
-TAO_GIOP::start_message (TAO_GIOP::Message_Type type,
+TAO_GIOP::start_message (const TAO_GIOP_Version &version,
+ TAO_GIOP::Message_Type type,
TAO_OutputCDR &msg,
TAO_ORB_Core* orb_core)
{
if (orb_core->orb_params ()->use_lite_protocol ())
- return TAO_GIOP::start_message_lite (type,
- msg);
+ return TAO_GIOP::start_message_lite (version, type, msg);
else
- return TAO_GIOP::start_message_std (type,
- msg);
+ return TAO_GIOP::start_message_std (version, type, msg);
}
CORBA::Boolean
-TAO_GIOP::write_request_header (const TAO_GIOP_ServiceContextList& svc_ctx,
- CORBA::ULong request_id,
+TAO_GIOP::write_request_header (CORBA::ULong request_id,
CORBA::Boolean is_roundtrip,
const TAO_opaque& key,
const char *opname,
@@ -268,7 +349,7 @@ TAO_GIOP::write_request_header (const TAO_GIOP_ServiceContextList& svc_ctx,
TAO_ORB_Core *orb_core)
{
if (orb_core->orb_params ()->use_lite_protocol ())
- return TAO_GIOP::write_request_header_lite (svc_ctx,
+ return TAO_GIOP::write_request_header_lite (orb_core->service_context (),
request_id,
is_roundtrip,
key,
@@ -276,7 +357,7 @@ TAO_GIOP::write_request_header (const TAO_GIOP_ServiceContextList& svc_ctx,
principal,
msg);
else
- return TAO_GIOP::write_request_header_std (svc_ctx,
+ return TAO_GIOP::write_request_header_std (orb_core->service_context (),
request_id,
is_roundtrip,
key,
@@ -410,26 +491,27 @@ TAO_GIOP::send_message (TAO_Transport *transport,
// orderly disconnect as provided by TCP. This quality of service is
// required to write robust distributed systems.)
-// static CORBA::Octet
-static const char close_message [TAO_GIOP_HEADER_LEN] =
-{
- // The following works on non-ASCII platforms, such as MVS (which
- // uses EBCDIC).
- 0x47, // 'G'
- 0x49, // 'I'
- 0x4f, // 'O'
- 0x50, // 'P'
- TAO_GIOP_MessageHeader::MY_MAJOR,
- TAO_GIOP_MessageHeader::MY_MINOR,
- TAO_ENCAP_BYTE_ORDER,
- TAO_GIOP::CloseConnection,
- 0, 0, 0, 0
-};
-
void
-TAO_GIOP::close_connection (TAO_Transport *transport,
+TAO_GIOP::close_connection (const TAO_GIOP_Version& version,
+ TAO_Transport *transport,
void *)
{
+ // static CORBA::Octet
+ const char close_message [TAO_GIOP_HEADER_LEN] =
+ {
+ // The following works on non-ASCII platforms, such as MVS (which
+ // uses EBCDIC).
+ 0x47, // 'G'
+ 0x49, // 'I'
+ 0x4f, // 'O'
+ 0x50, // 'P'
+ version.major,
+ version.minor,
+ TAO_ENCAP_BYTE_ORDER,
+ TAO_GIOP::CloseConnection,
+ 0, 0, 0, 0
+ };
+
// It's important that we use a reliable shutdown after we send this
// message, so we know it's received.
//
@@ -469,26 +551,28 @@ TAO_GIOP::close_connection (TAO_Transport *transport,
//
// NOTE that IIOP will still benefit from TCP's orderly disconnect.
-static const char
-error_message [TAO_GIOP_HEADER_LEN] =
-{
- // The following works on non-ASCII platforms, such as MVS (which
- // uses EBCDIC).
- 0x47, // 'G'
- 0x49, // 'I'
- 0x4f, // 'O'
- 0x50, // 'P'
- TAO_GIOP_MessageHeader::MY_MAJOR,
- TAO_GIOP_MessageHeader::MY_MINOR,
- TAO_ENCAP_BYTE_ORDER,
- TAO_GIOP::MessageError,
- 0, 0, 0, 0
-};
-
void
-TAO_GIOP::send_error (TAO_Transport *transport)
+TAO_GIOP::send_error (const TAO_GIOP_Version &version,
+ TAO_Transport *transport)
{
- // @@ How does this works with GIOP lite?
+ const char
+ error_message [TAO_GIOP_HEADER_LEN] =
+ {
+ // The following works on non-ASCII platforms, such as MVS (which
+ // uses EBCDIC).
+ 0x47, // 'G'
+ 0x49, // 'I'
+ 0x4f, // 'O'
+ 0x50, // 'P'
+ version.major,
+ version.minor,
+ TAO_ENCAP_BYTE_ORDER,
+ TAO_GIOP::MessageError,
+ 0, 0, 0, 0
+ };
+
+ // @@ Q: How does this works with GIOP lite?
+ // A: It doesn't
TAO_GIOP::dump_msg ("send_error",
(const u_char *) error_message,
@@ -575,7 +659,7 @@ TAO_GIOP::convert_CORBA_to_GIOP_exception (CORBA::exception_type corba_type)
int
TAO_GIOP::read_header (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_GIOP_MessageHeader &header,
+ TAO_GIOP_Message_State &state,
CORBA::ULong &header_size,
TAO_InputCDR &input)
{
@@ -610,28 +694,27 @@ TAO_GIOP::read_header (TAO_Transport *transport,
if (TAO_GIOP::parse_header (orb_core,
input,
- header) == -1)
- return -1;
- else
- return header_size;
+ state) == -1)
+ {
+ TAO_GIOP::send_error (state.giop_version, transport);
+ return -1;
+ }
+ return header_size;
}
int
TAO_GIOP::handle_input (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_GIOP_MessageHeader &header,
- CORBA::ULong &current_offset,
- TAO_InputCDR& input)
+ TAO_GIOP_Message_State &state)
{
- if (header.message_size == 0)
+ if (state.header_received () == 0)
{
- current_offset = 0;
CORBA::ULong header_size;
if (TAO_GIOP::read_header (transport,
orb_core,
- header,
+ state,
header_size,
- input) == -1)
+ state.cdr) == -1)
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
@@ -640,8 +723,8 @@ TAO_GIOP::handle_input (TAO_Transport *transport,
return -1;
}
- if (input.grow (header_size +
- header.message_size) == -1)
+ if (state.cdr.grow (header_size +
+ state.message_size) == -1)
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
@@ -653,14 +736,14 @@ TAO_GIOP::handle_input (TAO_Transport *transport,
// Growing the buffer may have reset the rd_ptr(), but we want
// to leave it just after the GIOP header (that was parsed
// already);
- input.skip_bytes (header_size);
+ state.cdr.skip_bytes (header_size);
}
size_t missing_data =
- header.message_size - current_offset;
+ state.message_size - state.current_offset;
ssize_t n =
TAO_GIOP::read_buffer (transport,
- input.rd_ptr () + current_offset,
+ state.cdr.rd_ptr () + state.current_offset,
missing_data);
if (n == -1)
{
@@ -681,9 +764,9 @@ TAO_GIOP::handle_input (TAO_Transport *transport,
return -1;
}
- current_offset += n;
+ state.current_offset += n;
- if (current_offset == header.message_size)
+ if (state.current_offset == state.message_size)
{
if (TAO_debug_level >= 5)
{
@@ -691,29 +774,28 @@ TAO_GIOP::handle_input (TAO_Transport *transport,
if (orb_core->orb_params ()->use_lite_protocol ())
header_len = TAO_GIOP_LITE_HEADER_LEN;
- char *buf = input.rd_ptr ();
+ char *buf = state.cdr.rd_ptr ();
buf -= header_len;
- size_t msg_len = input.length () + header_len;
+ size_t msg_len = state.cdr.length () + header_len;
TAO_GIOP::dump_msg ("recv",
ACE_reinterpret_cast (u_char *,
buf),
msg_len);
}
- return 1;
}
- return 0;
+
+ return state.is_complete ();
}
int
TAO_GIOP::parse_reply (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_InputCDR &input,
- const TAO_GIOP_MessageHeader &header,
+ TAO_GIOP_Message_State &state,
TAO_GIOP_ServiceContextList &reply_ctx,
CORBA::ULong &request_id,
CORBA::ULong &reply_status)
{
- switch (header.message_type)
+ switch (state.message_type)
{
case TAO_GIOP::Request:
// In GIOP 1.0 and GIOP 1.1 this is an error, but it is
@@ -740,11 +822,15 @@ TAO_GIOP::parse_reply (TAO_Transport *transport,
case TAO_GIOP::Reply:
// Handle after the switch.
break;
+
+ case TAO_GIOP::Fragment:
+ // Never happens:
+ break;
}
// For GIOP 1.0 and 1.1 the reply_ctx comes first:
// @@ Use <header.giop_version> to make this work with GIOP 1.2
- if ((input >> reply_ctx) == 0)
+ if ((state.cdr >> reply_ctx) == 0)
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
@@ -754,7 +840,7 @@ TAO_GIOP::parse_reply (TAO_Transport *transport,
}
// Read the request id
- if (!input.read_ulong (request_id))
+ if (!state.cdr.read_ulong (request_id))
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
@@ -766,7 +852,7 @@ TAO_GIOP::parse_reply (TAO_Transport *transport,
// and the reply status type. status can be NO_EXCEPTION,
// SYSTEM_EXCEPTION, USER_EXCEPTION, LOCATION_FORWARD or (on GIOP
// 1.2) LOCATION_FORWARD_PERM
- if (!input.read_ulong (reply_status))
+ if (!state.cdr.read_ulong (reply_status))
{
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
@@ -777,13 +863,11 @@ TAO_GIOP::parse_reply (TAO_Transport *transport,
return 0;
}
-// @@ Carlos, this method is rather large. Is it possible to break it
-// up a bit?
void
TAO_GIOP::process_server_message (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
TAO_InputCDR &input,
- const TAO_GIOP_MessageHeader &header)
+ const TAO_GIOP_Message_State &state)
{
char repbuf[ACE_CDR::DEFAULT_BUFSIZE];
#if defined(ACE_HAS_PURIFY)
@@ -800,12 +884,9 @@ TAO_GIOP::process_server_message (TAO_Transport *transport,
orb_core->to_iso8859 (),
orb_core->to_unicode ());
- CORBA::Boolean response_required = 0;
- CORBA::ULong request_id = 0;
-
TAO_MINIMAL_TIMEPROBE (TAO_SERVER_CONNECTION_HANDLER_RECEIVE_REQUEST_END);
- switch (header.message_type)
+ switch (state.message_type)
{
case TAO_GIOP::Request:
// The following two routines will either raise an exception
@@ -814,8 +895,7 @@ TAO_GIOP::process_server_message (TAO_Transport *transport,
orb_core,
input,
output,
- response_required,
- request_id);
+ state.giop_version);
break;
case TAO_GIOP::LocateRequest:
@@ -823,8 +903,7 @@ TAO_GIOP::process_server_message (TAO_Transport *transport,
orb_core,
input,
output,
- response_required,
- request_id);
+ state.giop_version);
break;
case TAO_GIOP::MessageError:
@@ -843,7 +922,7 @@ TAO_GIOP::process_server_message (TAO_Transport *transport,
if (TAO_debug_level > 0)
ACE_DEBUG ((LM_DEBUG,
"TAO (%P|%t) Illegal message received by server\n"));
- TAO_GIOP::send_error (transport);
+ TAO_GIOP::send_error (state.giop_version, transport);
break;
}
TAO_MINIMAL_TIMEPROBE (TAO_SERVER_CONNECTION_HANDLER_HANDLE_INPUT_END);
@@ -854,26 +933,31 @@ TAO_GIOP::process_server_request (TAO_Transport *transport,
TAO_ORB_Core* orb_core,
TAO_InputCDR &input,
TAO_OutputCDR &output,
- CORBA::Boolean &response_required,
- CORBA::ULong &request_id)
+ const TAO_GIOP_Version& version)
{
+ CORBA::ULong request_id;
+ CORBA::ULong response_required;
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ();
ACE_TRY
{
// This will extract the request header, set <response_required>
// as appropriate.
+
+ int parse_error;
TAO_GIOP_ServerRequest request (input,
output,
orb_core,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
+ version,
+ parse_error);
- // The request_id_ field in request will be 0 if something went
- // wrong before it got a chance to read it out.
request_id = request.request_id ();
-
response_required = request.response_expected ();
+ if (parse_error != 0)
+ ACE_TRY_THROW (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE,
+ CORBA::COMPLETED_NO));
+
+
#if !defined (TAO_NO_IOR_TABLE)
const CORBA::Octet *object_key =
request.object_key ().get_buffer ();
@@ -928,7 +1012,8 @@ TAO_GIOP::process_server_request (TAO_Transport *transport,
#if !defined (TAO_HAS_MINIMUM_CORBA)
ACE_CATCH (PortableServer::ForwardRequest, forward_request)
{
- TAO_GIOP::start_message (TAO_GIOP::Reply,
+ TAO_GIOP::start_message (version,
+ TAO_GIOP::Reply,
output,
orb_core);
TAO_GIOP_ServiceContextList resp_ctx;
@@ -950,7 +1035,8 @@ TAO_GIOP::process_server_request (TAO_Transport *transport,
{
if (response_required)
{
- if (TAO_GIOP::send_reply_exception (transport,
+ if (TAO_GIOP::send_reply_exception (version,
+ transport,
orb_core,
request_id,
&ACE_ANY_EXCEPTION) == -1)
@@ -998,7 +1084,8 @@ TAO_GIOP::process_server_request (TAO_Transport *transport,
(TAO_UNHANDLED_SERVER_CXX_EXCEPTION, 0),
CORBA::COMPLETED_MAYBE);
- if (TAO_GIOP::send_reply_exception (transport,
+ if (TAO_GIOP::send_reply_exception (version,
+ transport,
orb_core,
request_id,
&exception) == -1)
@@ -1042,8 +1129,7 @@ TAO_GIOP::process_server_locate (TAO_Transport *transport,
TAO_ORB_Core* orb_core,
TAO_InputCDR &input,
TAO_OutputCDR &output,
- CORBA::Boolean &response_required,
- CORBA::ULong &request_id)
+ const TAO_GIOP_Version& version)
{
// TAO_FUNCTION_PP_TIMEPROBE (TAO_SERVER_CONNECTION_HANDLER_HANDLE_LOCATE_START);
@@ -1054,6 +1140,9 @@ TAO_GIOP::process_server_locate (TAO_Transport *transport,
TAO_GIOP_LocateStatusType status = TAO_GIOP_UNKNOWN_OBJECT;
CORBA::Object_var forward_location_var;
+ CORBA::ULong request_id;
+ CORBA::Boolean response_required = 1;
+
CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ();
ACE_TRY
{
@@ -1061,7 +1150,6 @@ TAO_GIOP::process_server_locate (TAO_Transport *transport,
ACE_TRY_CHECK;
request_id = locateRequestHeader.request_id;
- response_required = 1;
#if !defined (TAO_NO_IOR_TABLE)
@@ -1120,13 +1208,18 @@ TAO_GIOP::process_server_locate (TAO_Transport *transport,
locateRequestHeader.object_key.get_buffer (),
0);
+ int parse_error;
TAO_GIOP_ServerRequest serverRequest (locateRequestHeader.request_id,
response_required,
tmp_key,
"_non_existent",
dummy_output,
orb_core,
- ACE_TRY_ENV);
+ version,
+ parse_error);
+ if (parse_error != 0)
+ ACE_TRY_THROW (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE,
+ CORBA::COMPLETED_NO));
orb_core->object_adapter ()->dispatch_servant (serverRequest.object_key (),
serverRequest,
@@ -1194,7 +1287,8 @@ TAO_GIOP::process_server_locate (TAO_Transport *transport,
ACE_ENDTRY;
// Create the response.
- TAO_GIOP::start_message (TAO_GIOP::LocateReply,
+ TAO_GIOP::start_message (version,
+ TAO_GIOP::LocateReply,
output,
orb_core);
output.write_ulong (locateRequestHeader.request_id);
@@ -1222,7 +1316,8 @@ TAO_GIOP::process_server_locate (TAO_Transport *transport,
}
int
-TAO_GIOP::send_reply_exception (TAO_Transport *transport,
+TAO_GIOP::send_reply_exception (const TAO_GIOP_Version &version,
+ TAO_Transport *transport,
TAO_ORB_Core* orb_core,
CORBA::ULong request_id,
CORBA::Exception *x)
@@ -1245,7 +1340,8 @@ TAO_GIOP::send_reply_exception (TAO_Transport *transport,
orb_core->to_unicode ());
// Construct a REPLY header.
- TAO_GIOP::start_message (TAO_GIOP::Reply,
+ TAO_GIOP::start_message (version,
+ TAO_GIOP::Reply,
output,
orb_core);
@@ -1301,7 +1397,8 @@ TAO_GIOP::send_reply_exception (TAO_Transport *transport,
}
CORBA::Boolean
-TAO_GIOP::start_message_std (TAO_GIOP::Message_Type type,
+TAO_GIOP::start_message_std (const TAO_GIOP_Version &version,
+ TAO_GIOP::Message_Type type,
TAO_OutputCDR &msg)
{
msg.reset ();
@@ -1309,7 +1406,7 @@ TAO_GIOP::start_message_std (TAO_GIOP::Message_Type type,
// if (msg.size () < TAO_GIOP_HEADER_LEN)
// return 0;
- static CORBA::Octet header[] =
+ static CORBA::Octet magic[] =
{
// The following works on non-ASCII platforms, such as MVS (which
// uses EBCDIC).
@@ -1317,15 +1414,13 @@ TAO_GIOP::start_message_std (TAO_GIOP::Message_Type type,
0x49, // 'I'
0x4f, // 'O'
0x50, // 'P'
- TAO_GIOP_MessageHeader::MY_MAJOR,
- TAO_GIOP_MessageHeader::MY_MINOR,
- TAO_ENCAP_BYTE_ORDER
};
- static int header_size =
- sizeof(header)/sizeof(header[0]);
- msg.write_octet_array (header,
- header_size);
+ static int magic_size = sizeof(magic)/sizeof(magic[0]);
+ msg.write_octet_array (magic, magic_size);
+ msg.write_octet (version.major);
+ msg.write_octet (version.minor);
+ msg.write_octet (TAO_ENCAP_BYTE_ORDER);
msg.write_octet (type);
// Write a dummy <size> later it is set to the right value...
@@ -1336,7 +1431,8 @@ TAO_GIOP::start_message_std (TAO_GIOP::Message_Type type,
}
CORBA::Boolean
-TAO_GIOP::start_message_lite (TAO_GIOP::Message_Type type,
+TAO_GIOP::start_message_lite (const TAO_GIOP_Version &version,
+ TAO_GIOP::Message_Type type,
TAO_OutputCDR &msg)
{
msg.reset ();
@@ -1362,6 +1458,8 @@ TAO_GIOP::write_request_header_std (const TAO_GIOP_ServiceContextList& svc_ctx,
{
out_stream << svc_ctx;
out_stream << request_id;
+ // @@ Messaging: this is where the extra synchronization information
+ // should be stored.
out_stream << CORBA::Any::from_boolean (is_roundtrip);
out_stream << key;
out_stream << opname;
@@ -1388,19 +1486,17 @@ TAO_GIOP::write_request_header_lite (const TAO_GIOP_ServiceContextList&,
int
TAO_GIOP::parse_header (TAO_ORB_Core *orb_core,
TAO_InputCDR &input,
- TAO_GIOP_MessageHeader& header)
+ TAO_GIOP_Message_State& state)
{
if (orb_core->orb_params ()->use_lite_protocol ())
- return TAO_GIOP::parse_header_lite (input,
- header);
+ return TAO_GIOP::parse_header_lite (input, state);
else
- return TAO_GIOP::parse_header_std (input,
- header);
+ return TAO_GIOP::parse_header_std (input, state);
}
int
TAO_GIOP::parse_header_std (TAO_InputCDR &input,
- TAO_GIOP_MessageHeader &header)
+ TAO_GIOP_Message_State &state)
{
char *buf = input.rd_ptr ();
@@ -1420,55 +1516,82 @@ TAO_GIOP::parse_header_std (TAO_InputCDR &input,
return -1;
}
-#if 0
- // @@ Nobody uses this magic number, no sense in wasting time here.
- header.magic[0] = 0x47; // 'G'
- header.magic[1] = 0x49; // 'I'
- header.magic[2] = 0x4f; // 'O'
- header.magic[3] = 0x50; // 'P'
-#endif /* 0 */
- header.giop_version.major = buf[4];
- header.giop_version.minor = buf[5];
- header.byte_order = buf[6];
- header.message_type = buf[7];
-
- input.reset_byte_order (header.byte_order);
+ state.giop_version.major = buf[TAO_GIOP_VERSION_MAJOR_OFFSET];
+ state.giop_version.minor = buf[TAO_GIOP_VERSION_MINOR_OFFSET];
+
+ if (state.giop_version.major != TAO_DEF_GIOP_MAJOR
+ || state.giop_version.minor > TAO_DEF_GIOP_MINOR)
+ {
+ if (TAO_debug_level > 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO (%P|%t) bad version <%d.%d>\n",
+ state.giop_version.major,
+ state.giop_version.minor));
+ return -1;
+ }
+
+ if (state.giop_version.minor == 0)
+ {
+ state.byte_order = buf[TAO_GIOP_MESSAGE_FLAGS_OFFSET];
+ if (TAO_debug_level > 2
+ && state.byte_order != 0 && state.byte_order != 1)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO (%P|%t) invalid byte order <%d>"
+ " for version <1.0>\n",
+ state.byte_order));
+ return -1;
+ }
+ }
+ else
+ {
+ state.byte_order = buf[TAO_GIOP_MESSAGE_FLAGS_OFFSET] & 0x01;
+ state.more_fragments = buf[TAO_GIOP_MESSAGE_FLAGS_OFFSET] & 0x02;
+ if (TAO_debug_level > 2
+ && state.giop_version.minor == 1
+ && (buf[TAO_GIOP_MESSAGE_FLAGS_OFFSET] & ~0x3) != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "TAO (%P|%t) invalid flags for <%d>"
+ " for version <1.1>\n",
+ buf[TAO_GIOP_MESSAGE_FLAGS_OFFSET]));
+ return -1;
+ }
+
+ }
+
+ state.message_type = buf[TAO_GIOP_MESSAGE_TYPE_OFFSET];
+
+ input.reset_byte_order (state.byte_order);
input.skip_bytes (TAO_GIOP_MESSAGE_SIZE_OFFSET);
- input.read_ulong (header.message_size);
+ input.read_ulong (state.message_size);
if (TAO_debug_level > 2)
{
ACE_DEBUG ((LM_DEBUG,
"TAO (%P|%t) Parsed header = <%d,%d,%d,%d,%d>\n",
- header.giop_version.major,
- header.giop_version.minor,
- header.byte_order,
- header.message_type,
- header.message_size));
+ state.giop_version.major,
+ state.giop_version.minor,
+ state.byte_order,
+ state.message_type,
+ state.message_size));
}
return 0;
}
int
TAO_GIOP::parse_header_lite (TAO_InputCDR &input,
- TAO_GIOP_MessageHeader &header)
+ TAO_GIOP_Message_State &state)
{
char *buf = input.rd_ptr ();
-#if 0
- // @@ Nobody uses this magic number, no sense in wasting time here.
- header.magic[0] = 0x47; // 'G'
- header.magic[1] = 0x49; // 'I'
- header.magic[2] = 0x4f; // 'O'
- header.magic[3] = 0x50; // 'P'
-#endif /* 0 */
- header.giop_version.major = 1;
- header.giop_version.minor = 0;
- header.byte_order = TAO_ENCAP_BYTE_ORDER;
- header.message_type = buf[4];
-
- input.reset_byte_order (header.byte_order);
- input.read_ulong (header.message_size);
+ state.giop_version.major = TAO_DEF_GIOP_MAJOR;
+ state.giop_version.minor = TAO_DEF_GIOP_MINOR;
+ state.byte_order = TAO_ENCAP_BYTE_ORDER;
+ state.message_type = buf[TAO_GIOP_LITE_MESSAGE_TYPE_OFFSET];
+
+ input.reset_byte_order (state.byte_order);
+ input.read_ulong (state.message_size);
return 0;
}
diff --git a/TAO/tao/GIOP.h b/TAO/tao/GIOP.h
index 8f452701e1d..ead0b055842 100644
--- a/TAO/tao/GIOP.h
+++ b/TAO/tao/GIOP.h
@@ -37,6 +37,7 @@
#include "tao/corbafwd.h"
#include "tao/Sequence.h"
+#include "tao/CDR.h"
class TAO_Transport;
class TAO_ORB_Core;
@@ -124,59 +125,141 @@ public:
TAO_opaque component_data;
};
+// ****************************************************************
+
typedef TAO_Unbounded_Sequence<TAO_IOP_TaggedComponent>
TAO_IOP_MultipleComponentProfile;
-// namespace TAO_GIOP
-
-struct TAO_GIOP_Version
+class TAO_Export TAO_GIOP_Version
{
+ // = TITLE
+ // Major and Minor version number of the Inter-ORB Protocol.
+public:
CORBA::Octet major;
+ // Major version number
+
CORBA::Octet minor;
+ // Minor version number
+
+ TAO_GIOP_Version (const TAO_GIOP_Version &src);
+ // Copy constructor
+
+ TAO_GIOP_Version (CORBA::Octet maj = TAO_DEF_GIOP_MAJOR,
+ CORBA::Octet min = TAO_DEF_GIOP_MINOR);
+ // Default constructor.
+
+ ~TAO_GIOP_Version (void);
+ // Destructor.
+
+ void set_version (CORBA::Octet maj, CORBA::Octet min);
+ // Explicitly set the major and minor version.
+
+ TAO_GIOP_Version &operator= (const TAO_GIOP_Version &src);
+ // Copy operator.
+
+ int operator== (const TAO_GIOP_Version &src);
+ int operator!= (const TAO_GIOP_Version &src);
+ // Equality operator
};
-class TAO_GIOP_MessageHeader
+// ****************************************************************
+
+class TAO_GIOP_Message_State
{
// = TITLE
- // This is the header sent with ever GIOP request!
+ // Represent the state of an incoming GIOP message.
+ //
+ // = DESCRIPTION
+ // As the ORB processes a GIOP messages it needs to keep track of
+ // how much of the message has been read, if there are any
+ // fragments following this message, the contents of the header,
+ // etc.
+ // Notice that it is not a direct mapping from the
+ // GIOP::MessageHeader IDL structure, for example, the message
+ // flags introduced in GIOP 1.1 are expanded in several fields.
public:
-
- TAO_GIOP_MessageHeader (void);
+ TAO_GIOP_Message_State (TAO_ORB_Core* orb_core);
// Constructor.
+ // The parameters are used to initialize the InputCDR stream
+
+ void reset (void);
+ // Reset the message header state and prepare it to receive the next
+ // event.
+ // already read.
+ // This method will reset the header to indicate that the last
+ // message was procesno data (not
+ // event the
+
+ int header_received (void) const;
+ // Has the header been received?
+
+ int is_complete (void);
+ // Check if the current message is complete, adjusting the fragments
+ // if required...
+
+ // = The GIOP header for the current fragment...
+ CORBA::Octet magic [4]; // "GIOP"
+ TAO_GIOP_Version giop_version; // 1.1 or 1.0
+ CORBA::Octet byte_order; // 0 = big, 1 = little
+ CORBA::Octet more_fragments; // For GIOP 1.1 (Requests and Replys)
+ CORBA::Octet message_type; // MsgType above
+ CORBA::ULong message_size; // in byte_order!
+
+ CORBA::ULong current_offset;
+ // How much of the payload has been received
+
+ TAO_InputCDR cdr;
+ // This is the InputCDR that will be used to decode the message.
+
+ ACE_Message_Block* fragments_begin;
+ ACE_Message_Block* fragments_end;
+ // The fragments are collected in a chain of message blocks (using
+ // the cont() field). When the complete message is received the
+ // chain is reassembled into <cdr>
+
+ CORBA::Octet first_fragment_byte_order;
+ // The byte order for the the first fragment
+ // @@ The current implementation cannot handle fragments with
+ // different byte orders, this should not be a major problem
+ // because:
+ // 1) It is unlikely that we are going to receive fragments.
+ // 2) The spec *seems* to allow different byte_orders, but it is
+ // unlikely that any ORB will do that.
+ // 3) Even if we allowed that at this layer the CDR classes are
+ // not prepared to handle that.
+
+ TAO_GIOP_Version first_fragment_giop_version;
+ // The GIOP version for the first fragment
+ // @@ Same as above, all GIOP versions must match.
+
+ CORBA::Octet first_fragment_message_type;
+ // If the messages are chained this represents the message type for
+ // the *complete* message (remember that the last message will be
+ // fragment and the upper level needs to know if it is a request,
+ // locate request or what).
- // version numbers
- enum
- {
- // = DESCRIPTION
- // GIOP protocol version 1.0 information.
-
- MY_MAJOR = 1,
- MY_MINOR = 0
- };
-
- CORBA::Octet magic [4]; // "GIOP"
- TAO_GIOP_Version giop_version;
- CORBA::Octet byte_order; // 0 = big, 1 = little
- CORBA::Octet message_type; // MsgType above
- CORBA::ULong message_size; // in byte_order!
+private:
+ int append_fragment (ACE_Message_Block* current);
+ // Append <current> to the list of fragments
+ // Also resets the state, because the current message was consumed.
};
-// defined by GIOP 1.0 protocol @@ Is this portable? The structure
-// above could have some padding on machines with absurd padding
-// requirements (like 8 byte boundaries); hence the size of it may not
-// match the size of the header on the wire.
-//#define TAO_GIOP_HEADER_LEN sizeof (TAO_GIOP_MessageHeader)
-// @@ - I made this explicitly 12 (ASG)
+// The GIOP message header size
#define TAO_GIOP_HEADER_LEN 12
// The offset the message_size field inside the GIOP HEADER
+#define TAO_GIOP_VERSION_MAJOR_OFFSET 4
+#define TAO_GIOP_VERSION_MINOR_OFFSET 5
+#define TAO_GIOP_MESSAGE_FLAGS_OFFSET 6
+#define TAO_GIOP_MESSAGE_TYPE_OFFSET 7
#define TAO_GIOP_MESSAGE_SIZE_OFFSET 8
// The IIOP Lite header length and the offset of the message size
// field in it.
#define TAO_GIOP_LITE_HEADER_LEN 5
#define TAO_GIOP_LITE_MESSAGE_SIZE_OFFSET 0
+#define TAO_GIOP_LITE_MESSAGE_TYPE_OFFSET 4
// Support for Implicit ORB Service Context.
typedef CORBA::ULong TAO_GIOP_ServiceID;
@@ -192,6 +275,8 @@ enum
// This is where our RIOP service ID will be defined...
};
+// namespace TAO_GIOP
+
class TAO_GIOP_ServiceContext
{
// = TITLE
@@ -321,17 +406,18 @@ public:
Fragment = 7 // by both.
};
- static void close_connection (TAO_Transport *transport,
+ static void close_connection (const TAO_GIOP_Version &version,
+ TAO_Transport *transport,
void *ctx);
// Close a connection, first sending GIOP::CloseConnection.
- static CORBA::Boolean start_message (TAO_GIOP::Message_Type t,
+ static CORBA::Boolean start_message (const TAO_GIOP_Version &version,
+ TAO_GIOP::Message_Type t,
TAO_OutputCDR &msg,
TAO_ORB_Core* orb_core);
// Build the header for a message of type <t> into stream <msg>.
- static CORBA::Boolean write_request_header (const TAO_GIOP_ServiceContextList& svc_ctx,
- CORBA::ULong request_id,
+ static CORBA::Boolean write_request_header (CORBA::ULong request_id,
CORBA::Boolean is_roundtrip,
const TAO_opaque& key,
const char* opname,
@@ -355,7 +441,8 @@ public:
size_t len);
// Print out a message header.
- static void send_error (TAO_Transport *transport);
+ static void send_error (const TAO_GIOP_Version &version,
+ TAO_Transport *transport);
// Send an error message back to a caller.
static ssize_t read_buffer (TAO_Transport *transport,
@@ -369,33 +456,29 @@ public:
static int read_header (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_GIOP_MessageHeader &header,
+ TAO_GIOP_Message_State &state,
CORBA::ULong &header_size,
TAO_InputCDR &input);
static int handle_input (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_GIOP_MessageHeader &header,
- CORBA::ULong &current_offset,
- TAO_InputCDR& input);
+ TAO_GIOP_Message_State &state);
static int parse_reply (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_InputCDR& input,
- const TAO_GIOP_MessageHeader& header,
+ TAO_GIOP_Message_State& state,
TAO_GIOP_ServiceContextList& reply_ctx,
CORBA::ULong& request_id,
CORBA::ULong& reply_status);
static void process_server_message (TAO_Transport *transport,
TAO_ORB_Core *orb_core,
- TAO_InputCDR &cdr,
- const TAO_GIOP_MessageHeader& header);
+ TAO_InputCDR &input,
+ const TAO_GIOP_Message_State& state);
static void process_server_request (TAO_Transport *transport,
TAO_ORB_Core* orb_core,
TAO_InputCDR &input,
TAO_OutputCDR &output,
- CORBA::Boolean &response_required,
- CORBA::ULong &request_id);
+ const TAO_GIOP_Version& version);
// A request was received on the server side.
// <transport> is the source of the message (and thus where the
// replies should be sent).
@@ -409,8 +492,7 @@ public:
TAO_ORB_Core* orb_core,
TAO_InputCDR &input,
TAO_OutputCDR &output,
- CORBA::Boolean &response_required,
- CORBA::ULong &request_id);
+ const TAO_GIOP_Version& version);
// A LocateRequest was received on the server side.
// <transport> is the source of the message (and thus where the
// replies should be sent).
@@ -420,7 +502,8 @@ public:
// <request_id> and <response_required> are set as part of the
// message processing.
- static int send_reply_exception (TAO_Transport *transport,
+ static int send_reply_exception (const TAO_GIOP_Version &version,
+ TAO_Transport *transport,
TAO_ORB_Core* orb_core,
CORBA::ULong request_id,
CORBA::Exception *x);
@@ -428,12 +511,14 @@ public:
// resulted in some kind of exception.
private:
- static CORBA::Boolean start_message_std (TAO_GIOP::Message_Type t,
+ static CORBA::Boolean start_message_std (const TAO_GIOP_Version &version,
+ TAO_GIOP::Message_Type t,
TAO_OutputCDR &msg);
// Build the standard header for a message of type <t> into
// stream <msg>.
- static CORBA::Boolean start_message_lite (TAO_GIOP::Message_Type t,
+ static CORBA::Boolean start_message_lite (const TAO_GIOP_Version &version,
+ TAO_GIOP::Message_Type t,
TAO_OutputCDR &msg);
// Build the lightweight header for a message of type <t> into
// stream <msg>.
@@ -460,14 +545,14 @@ private:
static int parse_header (TAO_ORB_Core *orb_core,
TAO_InputCDR &input,
- TAO_GIOP_MessageHeader& header);
+ TAO_GIOP_Message_State& state);
// Parse the header, extracting all the relevant info.
static int parse_header_std (TAO_InputCDR &input,
- TAO_GIOP_MessageHeader& header);
+ TAO_GIOP_Message_State& state);
static int parse_header_lite (TAO_InputCDR &input,
- TAO_GIOP_MessageHeader& header);
+ TAO_GIOP_Message_State& state);
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/GIOP.i b/TAO/tao/GIOP.i
index ee8855c9029..37fd00abba5 100644
--- a/TAO/tao/GIOP.i
+++ b/TAO/tao/GIOP.i
@@ -8,3 +8,72 @@ TAO_GIOP_LocateRequestHeader::TAO_GIOP_LocateRequestHeader (void)
: request_id (0)
{
}
+
+// ****************************************************************
+
+ACE_INLINE
+TAO_GIOP_Version::TAO_GIOP_Version (const TAO_GIOP_Version &src)
+ : major (src.major),
+ minor (src.minor)
+{
+}
+
+ACE_INLINE
+TAO_GIOP_Version::TAO_GIOP_Version (CORBA::Octet maj, CORBA::Octet min)
+ : major (maj),
+ minor (min)
+{
+}
+
+ACE_INLINE
+TAO_GIOP_Version::~TAO_GIOP_Version (void)
+{
+}
+
+ACE_INLINE TAO_GIOP_Version &
+TAO_GIOP_Version::operator= (const TAO_GIOP_Version &src)
+{
+ if (this == &src)
+ return *this;
+
+ this->major = src.major;
+ this->minor = src.minor;
+ return *this;
+}
+
+ACE_INLINE void
+TAO_GIOP_Version::set_version (CORBA::Octet maj, CORBA::Octet min)
+{
+ this->major = maj;
+ this->minor = min;
+}
+
+ACE_INLINE int
+TAO_GIOP_Version::operator== (const TAO_GIOP_Version &src)
+{
+ return this->major == src.major && this->minor == src.minor;
+}
+
+ACE_INLINE int
+TAO_GIOP_Version::operator!= (const TAO_GIOP_Version &src)
+{
+ return !(*this == src);
+}
+
+// ****************************************************************
+
+ACE_INLINE void
+TAO_GIOP_Message_State::reset (void)
+{
+ this->message_size = 0;
+ this->current_offset = 0;
+ this->more_fragments = 0;
+
+}
+
+ACE_INLINE int
+TAO_GIOP_Message_State::header_received (void) const
+{
+ return this->message_size != 0;
+}
+
diff --git a/TAO/tao/GIOP_Server_Request.cpp b/TAO/tao/GIOP_Server_Request.cpp
index cc377441e05..7a5edeeac61 100644
--- a/TAO/tao/GIOP_Server_Request.cpp
+++ b/TAO/tao/GIOP_Server_Request.cpp
@@ -40,10 +40,12 @@ ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_Server_Request_Timeprobe_Description,
#endif /* ACE_ENABLE_TIMEPROBES */
-TAO_GIOP_ServerRequest::TAO_GIOP_ServerRequest (TAO_InputCDR &input,
- TAO_OutputCDR &output,
- TAO_ORB_Core *orb_core,
- CORBA::Environment &env)
+TAO_GIOP_ServerRequest::
+ TAO_GIOP_ServerRequest (TAO_InputCDR &input,
+ TAO_OutputCDR &output,
+ TAO_ORB_Core *orb_core,
+ const TAO_GIOP_Version &version,
+ int &parse_error)
: incoming_ (&input),
outgoing_ (&output),
response_expected_ (0),
@@ -58,6 +60,7 @@ TAO_GIOP_ServerRequest::TAO_GIOP_ServerRequest (TAO_InputCDR &input,
exception_ (0),
exception_type_ (TAO_GIOP_NO_EXCEPTION),
orb_core_ (orb_core),
+ version_ (version),
service_info_ (),
request_id_ (0),
object_key_ (),
@@ -65,11 +68,11 @@ TAO_GIOP_ServerRequest::TAO_GIOP_ServerRequest (TAO_InputCDR &input,
{
ACE_FUNCTION_TIMEPROBE (TAO_SERVER_REQUEST_START);
- this->parse_header (env);
+ parse_error = this->parse_header ();
}
-void
-TAO_GIOP_ServerRequest::parse_header_std (CORBA::Environment &ACE_TRY_ENV)
+int
+TAO_GIOP_ServerRequest::parse_header_std (void)
{
// Tear out the service context ... we currently ignore it, but it
// should probably be passed to each ORB service as appropriate
@@ -109,6 +112,8 @@ TAO_GIOP_ServerRequest::parse_header_std (CORBA::Environment &ACE_TRY_ENV)
if (hdr_status)
{
// Do not include NULL character at the end.
+ // @@ This is not getting demarshaled using the codeset
+ // translators!
this->operation_.set (input.rd_ptr (),
length - 1,
0);
@@ -121,13 +126,11 @@ TAO_GIOP_ServerRequest::parse_header_std (CORBA::Environment &ACE_TRY_ENV)
hdr_status = input.good_bit ();
}
- if (!hdr_status)
- ACE_THROW (CORBA::COMM_FAILURE ());
-
+ return hdr_status ? 0 : -1;
}
-void
-TAO_GIOP_ServerRequest::parse_header_lite (CORBA::Environment &ACE_TRY_ENV)
+int
+TAO_GIOP_ServerRequest::parse_header_lite (void)
{
TAO_InputCDR& input = *this->incoming_;
@@ -157,36 +160,37 @@ TAO_GIOP_ServerRequest::parse_header_lite (CORBA::Environment &ACE_TRY_ENV)
if (hdr_status)
{
// Do not include NULL character at the end.
+ // @@ This is not getting demarshaled using the codeset
+ // translators!
this->operation_.set (input.rd_ptr (),
length - 1,
0);
hdr_status = input.skip_bytes (length);
}
- if (!hdr_status)
- ACE_THROW (CORBA::COMM_FAILURE ());
+ return hdr_status ? 0 : -1;
}
-
-
-void
-TAO_GIOP_ServerRequest::parse_header (CORBA::Environment &env)
+int
+TAO_GIOP_ServerRequest::parse_header (void)
{
if (this->orb_core_->orb_params ()->use_lite_protocol ())
- this->parse_header_lite (env);
+ return this->parse_header_lite ();
else
- this->parse_header_std (env);
+ return this->parse_header_std ();
}
// This constructor is used, by the locate request code
-TAO_GIOP_ServerRequest::TAO_GIOP_ServerRequest (CORBA::ULong &request_id,
- CORBA::Boolean &response_expected,
- TAO_ObjectKey &object_key,
- const ACE_CString &operation,
- TAO_OutputCDR &output,
- TAO_ORB_Core *orb_core,
- CORBA::Environment &)
+TAO_GIOP_ServerRequest::
+ TAO_GIOP_ServerRequest (CORBA::ULong &request_id,
+ CORBA::Boolean &response_expected,
+ TAO_ObjectKey &object_key,
+ const ACE_CString &operation,
+ TAO_OutputCDR &output,
+ TAO_ORB_Core *orb_core,
+ const TAO_GIOP_Version &version,
+ int &parse_error)
: operation_ (operation),
incoming_ (0),
outgoing_ (&output),
@@ -202,11 +206,13 @@ TAO_GIOP_ServerRequest::TAO_GIOP_ServerRequest (CORBA::ULong &request_id,
exception_ (0),
exception_type_ (TAO_GIOP_NO_EXCEPTION),
orb_core_ (orb_core),
+ version_ (version),
service_info_ (0),
request_id_ (request_id),
object_key_ (object_key),
requesting_principal_ (0)
{
+ parse_error = 0;
}
TAO_GIOP_ServerRequest::~TAO_GIOP_ServerRequest (void)
@@ -577,10 +583,11 @@ TAO_GIOP_ServerRequest::marshal (CORBA::Environment &ACE_TRY_ENV,
}
void
-TAO_GIOP_ServerRequest::init_reply (CORBA::Environment &env)
+TAO_GIOP_ServerRequest::init_reply (CORBA::Environment &ACE_TRY_ENV)
{
// Construct a REPLY header.
- TAO_GIOP::start_message (TAO_GIOP::Reply,
+ TAO_GIOP::start_message (this->version_,
+ TAO_GIOP::Reply,
*this->outgoing_,
this->orb_core_);
@@ -607,7 +614,12 @@ TAO_GIOP_ServerRequest::init_reply (CORBA::Environment &env)
}
// Any exception at all.
- else if (this->exception_)
+ else if (this->exception_ == 0)
+ {
+ // First finish the GIOP header ...
+ this->outgoing_->write_ulong (TAO_GIOP_NO_EXCEPTION);
+ }
+ else
{
CORBA::TypeCode_ptr except_tc;
@@ -620,11 +632,8 @@ TAO_GIOP_ServerRequest::init_reply (CORBA::Environment &env)
// we use the any's ACE_Message_Block
TAO_InputCDR cdr (this->exception_->_tao_get_cdr ());
- (void) this->outgoing_->append (except_tc, &cdr, env);
+ (void) this->outgoing_->append (except_tc, &cdr, ACE_TRY_ENV);
}
- else // Normal reply
- // First finish the GIOP header ...
- this->outgoing_->write_ulong (TAO_GIOP_NO_EXCEPTION);
}
CORBA::Object_ptr
diff --git a/TAO/tao/GIOP_Server_Request.h b/TAO/tao/GIOP_Server_Request.h
index 52b182a8c39..77ee397b5e1 100644
--- a/TAO/tao/GIOP_Server_Request.h
+++ b/TAO/tao/GIOP_Server_Request.h
@@ -34,8 +34,8 @@ public:
TAO_GIOP_ServerRequest (TAO_InputCDR &input,
TAO_OutputCDR &output,
TAO_ORB_Core *orb_core,
- CORBA_Environment &TAO_IN_ENV =
- TAO_default_environment ());
+ const TAO_GIOP_Version &version,
+ int &parse_error);
// Constructor
TAO_GIOP_ServerRequest (CORBA::ULong &request_id,
CORBA::Boolean &response_expected,
@@ -43,8 +43,8 @@ public:
const ACE_CString &operation,
TAO_OutputCDR &output,
TAO_ORB_Core *orb_core,
- CORBA_Environment &TAO_IN_ENV =
- TAO_default_environment ());
+ const TAO_GIOP_Version &version,
+ int &parse_error);
virtual ~TAO_GIOP_ServerRequest (void);
// Destructor.
@@ -144,14 +144,14 @@ public:
// get the exception type
private:
- void parse_header (CORBA::Environment &TAO_IN_ENV);
+ int parse_header (void);
// Parse the request header and store the result on this object.
- void parse_header_std (CORBA::Environment &TAO_IN_ENV);
+ int parse_header_std (void);
// Parse the standard GIOP request header and store the result on
// this object.
- void parse_header_lite (CORBA::Environment &TAO_IN_ENV);
+ int parse_header_lite (void);
// Parse the lightweight version of the GIOP request header and
// store the result on this object.
@@ -191,6 +191,10 @@ private:
// A pointer to the ORB Core for the context where the request was
// created.
+ TAO_GIOP_Version version_;
+ // The version for the GIOP request, the reply must have the same
+ // one.
+
TAO_GIOP_ServiceContextList service_info_;
// The service context for the request (CORBA Reference?)
diff --git a/TAO/tao/IIOP_Acceptor.cpp b/TAO/tao/IIOP_Acceptor.cpp
index 10c14620576..05c6504e2b4 100644
--- a/TAO/tao/IIOP_Acceptor.cpp
+++ b/TAO/tao/IIOP_Acceptor.cpp
@@ -32,12 +32,12 @@ ACE_RCSID(tao, IIOP_Acceptor, "$Id$")
TAO_IIOP_Acceptor::TAO_IIOP_Acceptor (void)
: TAO_Acceptor (TAO_IOP_TAG_INTERNET_IOP),
base_acceptor_ (),
+ version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
orb_core_ (0)
{
}
// TODO =
-// 1) Set the version number for IIOP for which this acceptor is is valid
// 2) For V1.[1,2] there are tagged components
// 3) Create multiple profiles for wild carded endpoints (may be multiple
// interfaces over which we can receive requests. Thus a profile
@@ -61,6 +61,7 @@ TAO_IIOP_Acceptor::create_mprofile (const TAO_ObjectKey &object_key,
this->address_.get_port_number (),
object_key,
this->address_,
+ this->version_,
this->orb_core_),
-1);
@@ -94,8 +95,13 @@ TAO_IIOP_Acceptor::close (void)
int
TAO_IIOP_Acceptor::open (TAO_ORB_Core *orb_core,
+ int major,
+ int minor,
ACE_CString &address)
{
+ if (major >=0 && minor >= 0)
+ this->version_.set_version (ACE_static_cast (CORBA::Octet,major),
+ ACE_static_cast (CORBA::Octet,minor));
ACE_INET_Addr addr (address.c_str ());
return this->open_i (orb_core, addr);
@@ -175,7 +181,7 @@ TAO_IIOP_Acceptor::open_i (TAO_ORB_Core* orb_core,
if (TAO_debug_level > 5)
{
ACE_DEBUG ((LM_DEBUG,
- "\n\nTAO (%P|%t) IIOP_Acceptor::open_i - %p\n\n",
+ "\nTAO (%P|%t) IIOP_Acceptor::open_i - "
"listening on: <%s:%u>\n",
this->host_.c_str (),
this->address_.get_port_number ()));
diff --git a/TAO/tao/IIOP_Acceptor.h b/TAO/tao/IIOP_Acceptor.h
index d93f475e01d..79f3d6b96e0 100644
--- a/TAO/tao/IIOP_Acceptor.h
+++ b/TAO/tao/IIOP_Acceptor.h
@@ -44,7 +44,10 @@ public:
TAO_IIOP_Acceptor (void);
// Create Acceptor object using addr.
- int open (TAO_ORB_Core *orb_core, ACE_CString &address);
+ virtual int open (TAO_ORB_Core *orb_core,
+ int version_major,
+ int version_minor,
+ ACE_CString &address);
// initialize acceptor for this address.
virtual int open_default (TAO_ORB_Core *orb_core);
@@ -91,6 +94,9 @@ private:
// (0.0.0.0) then there will be possibly a different hostname for
// each interface.
+ TAO_GIOP_Version version_;
+ // The GIOP version for this endpoint
+
TAO_ORB_Core *orb_core_;
// ORB Core.
};
diff --git a/TAO/tao/IIOP_Connect.cpp b/TAO/tao/IIOP_Connect.cpp
index e6cec142a38..15681e34777 100644
--- a/TAO/tao/IIOP_Connect.cpp
+++ b/TAO/tao/IIOP_Connect.cpp
@@ -19,9 +19,6 @@ ACE_RCSID(tao, Connect, "$Id$")
static const char *TAO_Connect_Timeprobe_Description[] =
{
- "Server_Connection_Handler::send_response - start",
- "Server_Connection_Handler::send_response - end",
-
"Server_Connection_Handler::handle_input - start",
"Server_Connection_Handler::handle_input - end",
@@ -39,10 +36,7 @@ ACE_RCSID(tao, Connect, "$Id$")
enum
{
// Timeprobe description table start key
- TAO_SERVER_CONNECTION_HANDLER_SEND_RESPONSE_START = 300,
- TAO_SERVER_CONNECTION_HANDLER_SEND_RESPONSE_END,
-
- TAO_SERVER_CONNECTION_HANDLER_HANDLE_INPUT_START,
+ TAO_SERVER_CONNECTION_HANDLER_HANDLE_INPUT_START = 300,
TAO_SERVER_CONNECTION_HANDLER_HANDLE_INPUT_END,
TAO_SERVER_CONNECTION_HANDLER_HANDLE_LOCATE_START,
@@ -72,11 +66,12 @@ TAO_IIOP_Handler_Base::TAO_IIOP_Handler_Base (ACE_Thread_Manager *t)
{
}
+// ****************************************************************
+
TAO_IIOP_Server_Connection_Handler::TAO_IIOP_Server_Connection_Handler (ACE_Thread_Manager *t)
: TAO_IIOP_Handler_Base (t),
orb_core_ (0),
- tss_resources_ (0),
- input_ (ACE_CDR::DEFAULT_BUFSIZE)
+ tss_resources_ (0)
{
// This constructor should *never* get called, it is just here to
// make the compiler happy: the default implementation of the
@@ -89,10 +84,7 @@ TAO_IIOP_Server_Connection_Handler::TAO_IIOP_Server_Connection_Handler (ACE_Thre
TAO_IIOP_Server_Connection_Handler::TAO_IIOP_Server_Connection_Handler (TAO_ORB_Core *orb_core)
: TAO_IIOP_Handler_Base (orb_core),
orb_core_ (orb_core),
- tss_resources_ (TAO_ORB_CORE_TSS_RESOURCES::instance ()),
- input_ (orb_core->create_input_cdr_data_block (ACE_CDR::DEFAULT_BUFSIZE),
- TAO_ENCAP_BYTE_ORDER,
- orb_core)
+ tss_resources_ (TAO_ORB_CORE_TSS_RESOURCES::instance ())
{
transport_ = new TAO_IIOP_Server_Transport (this,
this->orb_core_);
@@ -238,24 +230,12 @@ TAO_IIOP_Server_Connection_Handler::svc (void)
return result;
}
-void
-TAO_IIOP_Server_Connection_Handler::send_response (TAO_OutputCDR &output)
-{
- TAO_FUNCTION_PP_TIMEPROBE (TAO_SERVER_CONNECTION_HANDLER_SEND_RESPONSE_START);
-
- TAO_GIOP::send_message (this->transport_,
- output,
- this->orb_core_);
-}
-
int
TAO_IIOP_Server_Connection_Handler::handle_input (ACE_HANDLE)
{
int result = TAO_GIOP::handle_input (this->transport (),
this->orb_core_,
- this->message_header_,
- this->current_offset_,
- this->input_);
+ this->transport_->message_state_);
if (result == -1 && TAO_debug_level > 0)
{
@@ -263,17 +243,18 @@ TAO_IIOP_Server_Connection_Handler::handle_input (ACE_HANDLE)
"TAO (%P|%t) - %p\n",
"IIOP_Server_CH::handle_input, handle_input"));
}
- if (result == 1)
- {
- TAO_GIOP_MessageHeader header_copy = this->message_header_;
- this->message_header_.message_size = 0;
- TAO_GIOP::process_server_message (this->transport (),
- this->orb_core_,
- this->input_,
- header_copy);
- result = 0;
- }
- return result;
+
+ if (result == 0)
+ return 0;
+
+ // ACE_ASSERT (result == 1);
+
+ TAO_GIOP::process_server_message (this->transport (),
+ this->orb_core_,
+ this->transport_->message_state_.cdr,
+ this->transport_->message_state_);
+ this->transport_->message_state_.reset ();
+ return 0;
}
// ****************************************************************
diff --git a/TAO/tao/IIOP_Connect.h b/TAO/tao/IIOP_Connect.h
index 8395fcad44c..c86d6e1fd97 100644
--- a/TAO/tao/IIOP_Connect.h
+++ b/TAO/tao/IIOP_Connect.h
@@ -130,9 +130,6 @@ public:
protected:
- virtual void send_response (TAO_OutputCDR &response);
- // Send <response> to the client on the other end.
-
// = Event Handler overloads
virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE);
@@ -152,12 +149,6 @@ protected:
TAO_ORB_Core_TSS_Resources *tss_resources_;
// Cached tss resources of the ORB that activated this object.
-
- TAO_GIOP_MessageHeader message_header_;
- CORBA::ULong current_offset_;
- TAO_InputCDR input_;
- // This keep the state of the current message, to enable
- // non-blocking reads.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/IIOP_Factory.cpp b/TAO/tao/IIOP_Factory.cpp
index 5dcc786ee31..636cabeeb12 100644
--- a/TAO/tao/IIOP_Factory.cpp
+++ b/TAO/tao/IIOP_Factory.cpp
@@ -9,6 +9,8 @@ ACE_RCSID(tao, IIOP_Factory, "$Id$")
TAO_IIOP_Protocol_Factory::TAO_IIOP_Protocol_Factory (void)
+ : major_ (TAO_DEF_GIOP_MAJOR),
+ minor_ (TAO_DEF_GIOP_MINOR)
{
}
diff --git a/TAO/tao/IIOP_Factory.h b/TAO/tao/IIOP_Factory.h
index 07f1f60a5d9..0cdbe9ee656 100644
--- a/TAO/tao/IIOP_Factory.h
+++ b/TAO/tao/IIOP_Factory.h
@@ -25,7 +25,6 @@
class TAO_Acceptor;
class TAO_Connector;
-
class TAO_Export TAO_IIOP_Protocol_Factory : public TAO_Protocol_Factory
{
public:
@@ -46,6 +45,12 @@ public:
virtual TAO_Connector *make_connector (void);
// create a connector
+
+private:
+ int major_;
+ int minor_;
+ // Changing the version number can be used to provide backwards
+ // compatibility with old clients.
};
ACE_STATIC_SVC_DECLARE (TAO_IIOP_Protocol_Factory)
diff --git a/TAO/tao/IIOP_Profile.cpp b/TAO/tao/IIOP_Profile.cpp
index 8eb54c1e50e..fa964c2a85f 100644
--- a/TAO/tao/IIOP_Profile.cpp
+++ b/TAO/tao/IIOP_Profile.cpp
@@ -25,11 +25,12 @@ const char TAO_IIOP_Profile::object_key_delimiter = '/';
TAO_IIOP_Profile::TAO_IIOP_Profile (const ACE_INET_Addr &addr,
const TAO_ObjectKey &object_key,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core)
: TAO_Profile (TAO_IOP_TAG_INTERNET_IOP),
host_ (0),
port_ (0),
- version_ (DEF_IIOP_MAJOR, DEF_IIOP_MINOR),
+ version_ (version),
object_key_ (object_key),
object_addr_ (addr),
hint_ (0),
@@ -42,11 +43,12 @@ TAO_IIOP_Profile::TAO_IIOP_Profile (const char* host,
CORBA::UShort port,
const TAO_ObjectKey &object_key,
const ACE_INET_Addr &addr,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core)
: TAO_Profile (TAO_IOP_TAG_INTERNET_IOP),
host_ (0),
port_ (port),
- version_ (DEF_IIOP_MAJOR, DEF_IIOP_MINOR),
+ version_ (version),
object_key_ (object_key),
object_addr_ (addr),
hint_ (0),
@@ -82,7 +84,7 @@ TAO_IIOP_Profile::TAO_IIOP_Profile (const char *string,
: TAO_Profile (TAO_IOP_TAG_INTERNET_IOP),
host_ (0),
port_ (0),
- version_ (DEF_IIOP_MAJOR, DEF_IIOP_MINOR),
+ version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
object_key_ (),
object_addr_ (),
hint_ (0),
@@ -95,7 +97,7 @@ TAO_IIOP_Profile::TAO_IIOP_Profile (TAO_ORB_Core *orb_core)
: TAO_Profile (TAO_IOP_TAG_INTERNET_IOP),
host_ (0),
port_ (0),
- version_ (DEF_IIOP_MAJOR, DEF_IIOP_MINOR),
+ version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
object_key_ (),
object_addr_ (),
hint_ (0),
@@ -159,9 +161,9 @@ TAO_IIOP_Profile::decode (TAO_InputCDR& cdr)
// XXX this doesn't actually go back and skip the whole
// encapsulation...
if (!(cdr.read_octet (this->version_.major)
- && this->version_.major == TAO_IIOP_Profile::DEF_IIOP_MAJOR
+ && this->version_.major == TAO_DEF_GIOP_MAJOR
&& cdr.read_octet (this->version_.minor)
- && this->version_.minor <= TAO_IIOP_Profile::DEF_IIOP_MINOR))
+ && this->version_.minor <= TAO_DEF_GIOP_MINOR))
{
if (TAO_debug_level > 0)
{
@@ -237,8 +239,8 @@ TAO_IIOP_Profile::parse_string (const char *string,
// Skip over the "N.n@"
}
- if (this->version_.major != TAO_IIOP_Profile::DEF_IIOP_MAJOR ||
- this->version_.minor > TAO_IIOP_Profile::DEF_IIOP_MINOR)
+ if (this->version_.major != TAO_DEF_GIOP_MAJOR ||
+ this->version_.minor > TAO_DEF_GIOP_MINOR)
{
ACE_THROW_RETURN (CORBA::MARSHAL (), -1);
}
@@ -490,7 +492,7 @@ TAO_IIOP_Profile::encode (TAO_OutputCDR &stream) const
// CHAR describing byte order, starting the encapsulation
stream.write_octet (TAO_ENCAP_BYTE_ORDER);
- // IIOP::TAO_IOP_Version, two characters (version 1.0) padding
+ // The GIOP version
stream.write_char (this->version_.major);
stream.write_char (this->version_.minor);
diff --git a/TAO/tao/IIOP_Profile.h b/TAO/tao/IIOP_Profile.h
index be6aa11c3a1..c4d5544552f 100644
--- a/TAO/tao/IIOP_Profile.h
+++ b/TAO/tao/IIOP_Profile.h
@@ -20,10 +20,12 @@
#ifndef TAO_IIOP_PROFILE_H
#define TAO_IIOP_PROFILE_H
-#include "ace/Synch.h"
-#include "ace/INET_Addr.h"
#include "tao/Pluggable.h"
#include "tao/Object_KeyC.h"
+#include "tao/GIOP.h"
+
+#include "ace/Synch.h"
+#include "ace/INET_Addr.h"
class TAO_IIOP_Client_Connection_Handler;
@@ -38,13 +40,6 @@ class TAO_Export TAO_IIOP_Profile : public TAO_Profile
// This class defines the IIOP profile as specified in the CORBA
// specification.
public:
- // = Currently, TAO supports IIOP 1.0.
- enum
- {
- DEF_IIOP_MAJOR = 1,
- DEF_IIOP_MINOR = 0
- };
-
static const char object_key_delimiter;
// The object key delimiter that IIOP uses or expects.
@@ -53,6 +48,7 @@ public:
TAO_IIOP_Profile (const ACE_INET_Addr &addr,
const TAO_ObjectKey &object_key,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core);
// Profile constructor, same as above except the object_key has
// already been marshaled.
@@ -61,6 +57,7 @@ public:
CORBA::UShort port,
const TAO_ObjectKey &object_key,
const ACE_INET_Addr &addr,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core);
// Profile constructor, this is the most efficient since it
// doesn't require any address resolution processing.
@@ -132,14 +129,10 @@ public:
CORBA::UShort port (CORBA::UShort p);
// Set the port number.
- const TAO_IOP_Version *version (void);
+ const TAO_GIOP_Version& version (void) const;
// Return a pointer to this profile's version. This object
// maintains ownership.
- const TAO_IOP_Version *version (TAO_IOP_Version *v);
- // First set the version then return a pointer to it. This object
- // maintains ownership.
-
TAO_IIOP_Client_Connection_Handler *&hint (void);
// This is a hint for which connection handler to use.
@@ -164,7 +157,7 @@ private:
CORBA::UShort port_;
// TCP port number
- TAO_IOP_Version version_;
+ TAO_GIOP_Version version_;
// IIOP version number.
TAO_ObjectKey object_key_;
diff --git a/TAO/tao/IIOP_Profile.i b/TAO/tao/IIOP_Profile.i
index 03fd29b7202..181c534f8b8 100644
--- a/TAO/tao/IIOP_Profile.i
+++ b/TAO/tao/IIOP_Profile.i
@@ -44,17 +44,10 @@ TAO_IIOP_Profile::port (CORBA::UShort p)
return this->port_ = p;
}
-ACE_INLINE const TAO_IOP_Version *
-TAO_IIOP_Profile::version (void)
+ACE_INLINE const TAO_GIOP_Version &
+TAO_IIOP_Profile::version (void) const
{
- return &this->version_;
-}
-
-ACE_INLINE const TAO_IOP_Version *
-TAO_IIOP_Profile::version (TAO_IOP_Version *v)
-{
- this->version_ = *v;
- return &this->version_;
+ return this->version_;
}
ACE_INLINE TAO_IIOP_Client_Connection_Handler *&
diff --git a/TAO/tao/IIOP_Transport.cpp b/TAO/tao/IIOP_Transport.cpp
index bcd5b929ddd..45e35dac4e4 100644
--- a/TAO/tao/IIOP_Transport.cpp
+++ b/TAO/tao/IIOP_Transport.cpp
@@ -5,6 +5,7 @@
#include "tao/IIOP_Transport.h"
#include "tao/IIOP_Connect.h"
+#include "tao/IIOP_Profile.h"
#include "tao/Timeprobe.h"
#include "tao/CDR.h"
#include "tao/Transport_Mux_Strategy.h"
@@ -58,14 +59,47 @@ TAO_IIOP_Transport::~TAO_IIOP_Transport (void)
{
}
+TAO_IIOP_Handler_Base *&
+TAO_IIOP_Transport::handler (void)
+{
+ return this->handler_;
+}
+
+int
+TAO_IIOP_Transport::idle (void)
+{
+ return this->handler_->idle();
+}
+
+void
+TAO_IIOP_Transport::close_connection (void)
+{
+ this->handler_->handle_close ();
+}
+
+ACE_HANDLE
+TAO_IIOP_Transport::handle (void)
+{
+ return this->handler_->get_handle ();
+}
+
+// ****************************************************************
+
TAO_IIOP_Server_Transport::
TAO_IIOP_Server_Transport (TAO_IIOP_Server_Connection_Handler *handler,
TAO_ORB_Core* orb_core)
: TAO_IIOP_Transport (handler, orb_core),
- server_handler_ (handler)
+ server_handler_ (handler),
+ message_state_ (orb_core)
{
}
+TAO_IIOP_Server_Transport::~TAO_IIOP_Server_Transport (void)
+{
+}
+
+// ****************************************************************
+
TAO_IIOP_Client_Transport::
TAO_IIOP_Client_Transport (TAO_IIOP_Client_Connection_Handler *handler,
TAO_ORB_Core *orb_core)
@@ -75,10 +109,6 @@ TAO_IIOP_Client_Transport::
{
}
-TAO_IIOP_Server_Transport::~TAO_IIOP_Server_Transport (void)
-{
-}
-
TAO_IIOP_Client_Transport::~TAO_IIOP_Client_Transport (void)
{
}
@@ -89,34 +119,84 @@ TAO_IIOP_Client_Transport::client_handler (void)
return this->client_handler_;
}
-TAO_IIOP_Server_Connection_Handler *
-TAO_IIOP_Server_Transport::server_handler (void)
+void
+TAO_IIOP_Client_Transport::
+ start_request (TAO_ORB_Core *orb_core,
+ const TAO_Profile* pfile,
+ const char* opname,
+ CORBA::ULong request_id,
+ CORBA::Boolean is_roundtrip,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
- return this->server_handler_;
-}
+ const TAO_IIOP_Profile* profile =
+ ACE_dynamic_cast(const TAO_IIOP_Profile*,pfile);
-TAO_IIOP_Handler_Base *&
-TAO_IIOP_Transport::handler (void)
-{
- return this->handler_;
-}
+ // Obtain object key.
+ const TAO_ObjectKey& key = profile->object_key ();
-int
-TAO_IIOP_Transport::idle (void)
-{
- return this->handler_->idle();
+ // @@ This should be implemented in the transport object, which
+ // would query the profile to obtain the version...
+ if (TAO_GIOP::start_message (profile->version (),
+ TAO_GIOP::Request,
+ output,
+ orb_core) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+
+ // Then fill in the rest of the RequestHeader
+ //
+ // The first element of header is service context list;
+ // transactional context would be acquired here using the
+ // transaction service APIs. Other kinds of context are as yet
+ // undefined.
+ //
+ // Last element of request header is the principal; no portable way
+ // to get it, we just pass empty principal (convention: indicates
+ // "anybody"). Steps upward in security include passing an
+ // unverified user ID, and then verifying the message (i.e. a dummy
+ // service context entry is set up to hold a digital signature for
+ // this message, then patched shortly before it's sent).
+ static CORBA::Principal_ptr principal = 0;
+
+ if (TAO_GIOP::write_request_header (request_id,
+ is_roundtrip,
+ key,
+ opname,
+ principal,
+ output,
+ orb_core) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
}
void
-TAO_IIOP_Transport::close_connection (void)
+TAO_IIOP_Client_Transport::
+ start_locate (TAO_ORB_Core *orb_core,
+ const TAO_Profile* pfile,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
- this->handler_->handle_close ();
-}
+ const TAO_IIOP_Profile* profile =
+ ACE_dynamic_cast(const TAO_IIOP_Profile*,pfile);
-ACE_HANDLE
-TAO_IIOP_Transport::handle (void)
-{
- return this->handler_->get_handle ();
+ // Obtain object key.
+ const TAO_ObjectKey& key = profile->object_key ();
+
+ // @@ This should be implemented in the transport object, which
+ // would query the profile to obtain the version...
+ if (TAO_GIOP::start_message (profile->version (),
+ TAO_GIOP::Request,
+ output,
+ orb_core) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+
+
+ if (TAO_GIOP::write_locate_request_header (this->request_id (),
+ key,
+ output) != 0)
+ ACE_THROW (CORBA::MARSHAL ());
}
int
@@ -167,13 +247,12 @@ TAO_IIOP_Client_Transport::handle_client_input (int block)
// removed.
// Do I make any sense?
- TAO_InputCDR* cdr = this->tms_->get_cdr_stream ();
+ TAO_GIOP_Message_State* message_state =
+ this->tms_->get_message_state ();
int result = TAO_GIOP::handle_input (this,
this->orb_core_,
- this->message_header_,
- this->current_offset_,
- *cdr);
+ *message_state);
if (result == -1)
{
if (TAO_debug_level > 0)
@@ -187,17 +266,13 @@ TAO_IIOP_Client_Transport::handle_client_input (int block)
// OK, the complete message is here...
- TAO_GIOP_MessageHeader header_copy = this->message_header_;
- this->message_header_.message_size = 0;
-
TAO_GIOP_ServiceContextList reply_ctx;
CORBA::ULong request_id;
CORBA::ULong reply_status;
result = TAO_GIOP::parse_reply (this,
this->orb_core_,
- *cdr,
- header_copy,
+ *message_state,
reply_ctx,
request_id,
reply_status);
@@ -207,26 +282,28 @@ TAO_IIOP_Client_Transport::handle_client_input (int block)
ACE_DEBUG ((LM_DEBUG,
"TAO (%P|%t) - %p\n",
"IIOP_Transport::handle_client_input, parse reply"));
+ message_state->reset ();
return -1;
}
if (this->tms_->dispatch_reply (request_id,
reply_status,
- header_copy.giop_version,
+ message_state->giop_version,
reply_ctx,
- cdr) != 0)
+ message_state) != 0)
{
if (TAO_debug_level > 0)
ACE_ERROR ((LM_ERROR,
"TAO (%P|%t) : IIOP_Client_Transport::"
"handle_client_input - "
"dispatch reply failed\n"));
+ message_state->reset ();
return -1;
}
// This is a NOOP for the Exclusive request case, but it actually
// destroys the stream in the muxed case.
- this->tms_->destroy_cdr_stream (cdr);
+ this->tms_->destroy_message_state (message_state);
// Return something to indicate the reply is received.
return 1;
diff --git a/TAO/tao/IIOP_Transport.h b/TAO/tao/IIOP_Transport.h
index c07c71afe8b..574b4544858 100644
--- a/TAO/tao/IIOP_Transport.h
+++ b/TAO/tao/IIOP_Transport.h
@@ -126,6 +126,24 @@ public:
TAO_IIOP_Client_Connection_Handler *client_handler (void);
// return a pointer to the client's connection handler.
+ virtual void start_request (TAO_ORB_Core *orb_core,
+ const TAO_Profile *profile,
+ const char* opname,
+ CORBA::ULong request_id,
+ CORBA::Boolean is_twoway,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Fill into <output> the right headers to make a request.
+
+ virtual void start_locate (TAO_ORB_Core *orb_core,
+ const TAO_Profile *profile,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Fill into <output> the right headers to make a locate request.
+
int send_request (TAO_ORB_Core *orb_core,
TAO_OutputCDR &stream,
int twoway);
@@ -151,11 +169,6 @@ protected:
private:
TAO_IIOP_Client_Connection_Handler *client_handler_;
// pointer to the corresponding client side connection handler.
-
- TAO_GIOP_MessageHeader message_header_;
- CORBA::ULong current_offset_;
- // This keep the state of the current message, to enable
- // non-blocking reads.
};
// ****************************************************************
@@ -179,12 +192,12 @@ public:
~TAO_IIOP_Server_Transport (void);
// Default destructor
- TAO_IIOP_Server_Connection_Handler *server_handler (void);
- // Return a pointer to the underlying connection handler.
-
-private:
TAO_IIOP_Server_Connection_Handler *server_handler_;
// Pointer to the corresponding connection handler.
+
+ TAO_GIOP_Message_State message_state_;
+ // This keep the state of the current message, to enable
+ // non-blocking reads, fragment reassembly, etc.
};
#endif /* TAO_IIOP_TRANSPORT_H */
diff --git a/TAO/tao/Invocation.cpp b/TAO/tao/Invocation.cpp
index 66189d7f5cf..235627153cb 100644
--- a/TAO/tao/Invocation.cpp
+++ b/TAO/tao/Invocation.cpp
@@ -95,9 +95,7 @@ TAO_GIOP_Invocation::~TAO_GIOP_Invocation (void)
// restarted (e.g. request forwarding). This is the start/restart entry.
void
-TAO_GIOP_Invocation::start (CORBA::Boolean is_roundtrip,
- TAO_GIOP::Message_Type message_type,
- CORBA::Environment &ACE_TRY_ENV)
+TAO_GIOP_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_FUNCTION_TIMEPROBE (TAO_GIOP_INVOCATION_START_ENTER);
@@ -194,87 +192,6 @@ TAO_GIOP_Invocation::start (CORBA::Boolean is_roundtrip,
// Obtain unique request id from the RMS.
this->request_id_ = this->transport_->request_id ();
- // Obtain object key.
- const TAO_ObjectKey& key = this->profile_->object_key();
-
- ACE_TIMEPROBE (TAO_GIOP_INVOCATION_START_CONNECT);
-
- // POLICY DECISION: If the client expects most agents to forward,
- // then it could try to make sure that it's been forwarded at least
- // once by eliciting it with a LocateRequest message. (Further
- // hinting in the IIOP::ProfileData could help!)
- //
- // That scenario does not match an "Inter" ORB Protocol well, since
- // bridges chain calls rather than forwarding them. It does match
- // some kinds of "Intra" ORB scenarios well, with many agents that
- // spawn new processes talking to their clients across the net.
- //
- // At this time, the policy noted above is followed in the sense
- // that this software does NOT expect most agents to forward, so it
- // doesn't bother to probe. Correctness is not affected; this is
- // only a quality-of-service policy. It affects mostly performance,
- // but the "best efforts" semantics for "oneway" messages would also
- // be impacted in that some (by definition, buggy!) code which used
- // only "oneway" messages might not work at all.
-
- // Build the outgoing message, starting with generic GIOP header.
-
- if (TAO_GIOP::start_message (message_type,
- this->out_stream_,
- this->orb_core_) == 0)
- ACE_THROW (CORBA::MARSHAL ());
-
- ACE_TIMEPROBE (TAO_GIOP_INVOCATION_START_START_MSG);
-
- // Then fill in the rest of the RequestHeader
- //
- // The first element of header is service context list;
- // transactional context would be acquired here using the
- // transaction service APIs. Other kinds of context are as yet
- // undefined.
- //
- // Last element of request header is the principal; no portable way
- // to get it, we just pass empty principal (convention: indicates
- // "anybody"). Steps upward in security include passing an
- // unverified user ID, and then verifying the message (i.e. a dummy
- // service context entry is set up to hold a digital signature for
- // this message, then patched shortly before it's sent).
- static CORBA::Principal_ptr principal = 0;
-
- // @@ TODO: the service context list should be kept in the ORB, or
- // maybe in TSS storage... that is required for interceptors to
- // work.
- // This static is only used to write into the CDR stream, once we
- // have real service context (needed for the messaging spec) this
- // will have to be a parameter.
- static TAO_GIOP_ServiceContextList svc_ctx;
-
- switch (message_type)
- {
- case TAO_GIOP::Request:
- TAO_GIOP::write_request_header (svc_ctx,
- this->request_id_,
- is_roundtrip,
- key,
- this->opname_,
- principal,
- this->out_stream_,
- this->orb_core_);
- break;
-
- case TAO_GIOP::LocateRequest:
- TAO_GIOP::write_locate_request_header (this->request_id_,
- key,
- this->out_stream_);
- break;
-
- default:
- ACE_THROW (CORBA::INTERNAL ());
- }
-
- if (!this->out_stream_.good_bit ())
- ACE_THROW (CORBA::MARSHAL ());
-
ACE_TIMEPROBE (TAO_GIOP_INVOCATION_START_REQUEST_HDR);
}
@@ -448,6 +365,22 @@ TAO_GIOP_Invocation::location_forward (TAO_InputCDR &inp_stream,
// ****************************************************************
+void
+TAO_GIOP_Twoway_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_Invocation::invoke (CORBA::ExceptionList &exceptions,
CORBA::Environment &ACE_TRY_ENV)
@@ -470,7 +403,7 @@ TAO_GIOP_Twoway_Invocation::invoke (CORBA::ExceptionList &exceptions,
CORBA::String_var buf;
// Pull the exception ID out of the marshaling buffer.
- if (this->inp_stream_.read_string (buf.inout ()) == 0)
+ if (this->inp_stream ().read_string (buf.inout ()) == 0)
{
// @@ Why do we close the connection. Only the request
// failed, but the connection seems to be still
@@ -501,7 +434,7 @@ TAO_GIOP_Twoway_Invocation::invoke (CORBA::ExceptionList &exceptions,
// ACE_RETHROW;
const ACE_Message_Block* cdr =
- this->inp_stream_.start ();
+ this->inp_stream ().start ();
CORBA_Any any (tcp, 0, cdr);
CORBA_Exception *exception;
ACE_NEW_THROW_EX (exception,
@@ -556,7 +489,7 @@ TAO_GIOP_Twoway_Invocation::invoke (TAO_Exception_Data *excepts,
CORBA::String_var buf;
// Pull the exception ID out of the marshaling buffer.
- if (this->inp_stream_.read_string (buf.inout ()) == 0)
+ if (this->inp_stream ().read_string (buf.inout ()) == 0)
{
// @@ Why do we close the connection. Only the request
// failed, but the connection seems to be still
@@ -584,9 +517,9 @@ TAO_GIOP_Twoway_Invocation::invoke (TAO_Exception_Data *excepts,
ACE_THROW_RETURN (CORBA::NO_MEMORY (TAO_DEFAULT_MINOR_CODE, CORBA::COMPLETED_YES),
TAO_INVOKE_EXCEPTION);
- this->inp_stream_.decode (exception->_type (),
- exception, 0,
- ACE_TRY_ENV);
+ this->inp_stream ().decode (exception->_type (),
+ exception, 0,
+ ACE_TRY_ENV);
ACE_CHECK_RETURN (TAO_INVOKE_EXCEPTION);
if (TAO_debug_level > 5)
@@ -717,7 +650,7 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
// @@ Add the location macros for this exceptions...
CORBA::String_var type_id;
- if ((this->inp_stream_ >> type_id.inout ()) == 0)
+ if ((this->inp_stream () >> type_id.inout ()) == 0)
{
// Could not demarshal the exception id, raise an local
// CORBA::MARSHAL
@@ -727,8 +660,8 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
}
CORBA::ULong minor = 0;
CORBA::ULong completion = 0;
- if ((this->inp_stream_ >> minor) == 0
- || (this->inp_stream_ >> completion) == 0)
+ if ((this->inp_stream () >> minor) == 0
+ || (this->inp_stream () >> completion) == 0)
ACE_THROW_RETURN (CORBA::MARSHAL (TAO_DEFAULT_MINOR_CODE,
CORBA::COMPLETED_MAYBE),
TAO_INVOKE_OK);
@@ -750,7 +683,7 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
// @@ There should be a better way to raise this exception!
- // This code works for both native and emulated exceptions,
+ // This code works for both native and emulated exceptions,
// but it is ugly.
ACE_TRY_ENV.exception (ex);
return TAO_INVOKE_OK;
@@ -760,7 +693,7 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
case TAO_GIOP_LOCATION_FORWARD:
// Handle the forwarding and return so the stub restarts the
// request!
- return this->location_forward (this->inp_stream_, ACE_TRY_ENV);
+ return this->location_forward (this->inp_stream (), ACE_TRY_ENV);
// NOT REACHED.
}
@@ -769,8 +702,40 @@ TAO_GIOP_Twoway_Invocation::invoke_i (CORBA::Environment &ACE_TRY_ENV)
// ****************************************************************
+void
+TAO_GIOP_Oneway_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_,
+ 0,
+ this->out_stream_,
+ ACE_TRY_ENV);
+}
+
+// ****************************************************************
+
// 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))
+{
+ this->TAO_GIOP_Invocation::start (ACE_TRY_ENV);
+ ACE_CHECK;
+
+ this->transport_->start_locate (this->orb_core_,
+ this->profile_,
+ this->request_id_,
+ this->out_stream_,
+ ACE_TRY_ENV);
+}
+
int
TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -851,7 +816,7 @@ TAO_GIOP_Locate_Request_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
// NOTREACHED
case TAO_GIOP_OBJECT_FORWARD:
- return this->location_forward (this->inp_stream_, ACE_TRY_ENV);
+ return this->location_forward (this->inp_stream (), ACE_TRY_ENV);
// NOTREACHED
}
diff --git a/TAO/tao/Invocation.h b/TAO/tao/Invocation.h
index 33eacbd672a..1073979b2c6 100644
--- a/TAO/tao/Invocation.h
+++ b/TAO/tao/Invocation.h
@@ -79,9 +79,7 @@ public:
// return the underlying output stream
protected:
- void start (CORBA::Boolean is_roundtrip,
- TAO_GIOP::Message_Type message_type,
- CORBA_Environment &ACE_TRY_ENV =
+ void start (CORBA_Environment &ACE_TRY_ENV =
TAO_default_environment ())
ACE_THROW_SPEC ((CORBA::SystemException));
// Establishes a connection to the remote server, initializes
@@ -199,7 +197,7 @@ private:
// send/reply code and the system exceptions.
private:
- TAO_InputCDR inp_stream_;
+ TAO_GIOP_Message_State message_state_;
// Stream into which the reply is placed.
TAO_Synch_Reply_Dispatcher rd_;
@@ -249,8 +247,11 @@ public:
ACE_THROW_SPEC ((CORBA::SystemException));
// Send request, without blocking for any response.
+ TAO_InputCDR &inp_stream (void);
+ // return the underlying input stream
+
private:
- TAO_InputCDR inp_stream_;
+ 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 5379efc050e..d4dad8ee56f 100644
--- a/TAO/tao/Invocation.i
+++ b/TAO/tao/Invocation.i
@@ -25,18 +25,15 @@ TAO_GIOP_Twoway_Invocation (TAO_Stub *stub,
const char *operation,
TAO_ORB_Core *orb_core)
: TAO_GIOP_Invocation (stub, operation, orb_core),
- inp_stream_ (orb_core->create_input_cdr_data_block (ACE_CDR::DEFAULT_BUFSIZE),
- TAO_ENCAP_BYTE_ORDER,
- orb_core),
- rd_ (&inp_stream_)
+ message_state_ (orb_core),
+ rd_ (&message_state_)
{
}
-ACE_INLINE void
-TAO_GIOP_Twoway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
+ACE_INLINE TAO_InputCDR &
+TAO_GIOP_Twoway_Invocation::inp_stream (void)
{
- TAO_GIOP_Invocation::start (1, TAO_GIOP::Request, ACE_TRY_ENV);
+ return this->message_state_.cdr;
}
ACE_INLINE void
@@ -44,13 +41,7 @@ TAO_GIOP_Twoway_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);
-}
-
-ACE_INLINE TAO_InputCDR &
-TAO_GIOP_Twoway_Invocation::inp_stream (void)
-{
- return this->inp_stream_;
+ (void) this->inp_stream ().decode (tc, value, 0, ACE_TRY_ENV);
}
// ****************************************************************
@@ -64,13 +55,6 @@ TAO_GIOP_Oneway_Invocation (TAO_Stub *stub,
{
}
-ACE_INLINE void
-TAO_GIOP_Oneway_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- TAO_GIOP_Invocation::start (0, TAO_GIOP::Request, ACE_TRY_ENV);
-}
-
ACE_INLINE int
TAO_GIOP_Oneway_Invocation::invoke (CORBA::Environment &ACE_TRY_ENV)
ACE_THROW_SPEC ((CORBA::SystemException))
@@ -85,16 +69,13 @@ 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),
- inp_stream_ (orb_core->create_input_cdr_data_block(ACE_CDR::DEFAULT_BUFSIZE),
- TAO_ENCAP_BYTE_ORDER,
- orb_core),
- rd_ (&inp_stream_)
+ message_state_ (orb_core),
+ rd_ (&message_state_)
{
}
-ACE_INLINE void
-TAO_GIOP_Locate_Request_Invocation::start (CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
+ACE_INLINE TAO_InputCDR &
+TAO_GIOP_Locate_Request_Invocation::inp_stream (void)
{
- TAO_GIOP_Invocation::start (1, TAO_GIOP::LocateRequest, ACE_TRY_ENV);
+ return this->message_state_.cdr;
}
diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h
index f81503511e7..7bba214d78f 100644
--- a/TAO/tao/ORB_Core.h
+++ b/TAO/tao/ORB_Core.h
@@ -23,6 +23,7 @@
#include "tao/Resource_Factory.h"
#include "tao/params.h"
#include "tao/POAC.h"
+#include "tao/GIOP.h"
#include "ace/Map_Manager.h"
#include "ace/Singleton.h"
@@ -135,6 +136,9 @@ public:
ACE_WChar_Codeset_Translator *to_unicode (void) const;
// Convert from the native wide character set to UNICODE
+ TAO_GIOP_ServiceContextList& service_context (void);
+ // Obtain the service context list used to send requests...
+
// @@ This is just note on how could the translator database be
// implemented: use the service configurator to load the
// translator, and then use the CodesetId (an unsigned long) to
@@ -423,6 +427,12 @@ protected:
ACE_WChar_Codeset_Translator *from_unicode_;
ACE_WChar_Codeset_Translator *to_unicode_;
// Codeset translators for simple implementations.
+
+ // @@ TODO: the service context list may need to be in TSS
+ // storage...
+ // NOTE: this is only used to *send* requests, not to store the
+ // service context list of a reply...
+ TAO_GIOP_ServiceContextList service_context_;
};
// ****************************************************************
diff --git a/TAO/tao/ORB_Core.i b/TAO/tao/ORB_Core.i
index f7311a0fcd4..4c6e414ff8b 100644
--- a/TAO/tao/ORB_Core.i
+++ b/TAO/tao/ORB_Core.i
@@ -114,6 +114,12 @@ TAO_ORB_Core::to_unicode (void) const
return this->to_unicode_;
}
+ACE_INLINE TAO_GIOP_ServiceContextList&
+TAO_ORB_Core::service_context (void)
+{
+ return this->service_context_;
+}
+
ACE_INLINE ACE_Data_Block*
TAO_ORB_Core::create_input_cdr_data_block (size_t size)
{
diff --git a/TAO/tao/Pluggable.cpp b/TAO/tao/Pluggable.cpp
index b4ed60f4ec4..053485bb736 100644
--- a/TAO/tao/Pluggable.cpp
+++ b/TAO/tao/Pluggable.cpp
@@ -21,49 +21,6 @@
ACE_RCSID(tao, Pluggable, "$Id$")
-TAO_IOP_Version::~TAO_IOP_Version (void)
-{
-}
-
-TAO_IOP_Version::TAO_IOP_Version (const TAO_IOP_Version &src)
- : major (src.major),
- minor (src.minor)
-{
-}
-
-TAO_IOP_Version::TAO_IOP_Version (CORBA::Octet maj, CORBA::Octet min)
- : major (maj),
- minor (min)
-{
-}
-
-void
-TAO_IOP_Version::set_version (CORBA::Octet maj, CORBA::Octet min)
-{
- this->major = maj;
- this->minor = min;
-}
-
-int
-TAO_IOP_Version::operator== (const TAO_IOP_Version *&src)
-{
- return this->major == src->major && this->minor == src->minor;
-}
-
-int
-TAO_IOP_Version::operator== (const TAO_IOP_Version &src)
-{
- return this->major == src.major && this->minor == src.minor;
-}
-
-TAO_IOP_Version &
-TAO_IOP_Version::operator= (const TAO_IOP_Version &src)
-{
- this->major = src.major;
- this->minor = src.minor;
- return *this;
-}
-
// ****************************************************************
TAO_Profile::~TAO_Profile (void)
@@ -221,31 +178,6 @@ TAO_Transport::tag (void) const
return this->tag_;
}
-// @@ Alex: this stream stuff belongs to the TMS, right?
-// Maybe the right interface is:
-// TAO_Transport::bind_reply_dispatcher (request_id,
-// reply_dispatcher,
-// input_cdr);
-
-// @@ Do you need an accessor? Or is the CDR stream simply passed by
-// the TMS to the right target. We should go to the TMS and obtain
-// the CDR stream from it, that way we can implement an optimized
-// version of the TMS that uses a single CDR stream allocated from
-// the stack.
-
-// Get the CDR stream for reading the input message.
-TAO_InputCDR *
-TAO_Transport::input_cdr_stream (void) const
-{
- return this->tms_->get_cdr_stream ();
-}
-
-void
-TAO_Transport::destroy_cdr_stream (TAO_InputCDR *cdr) const
-{
- this->tms_->destroy_cdr_stream (cdr);
-}
-
// Get it.
TAO_ORB_Core *
TAO_Transport::orb_core (void) const
@@ -305,6 +237,30 @@ TAO_Transport::wait_for_reply (void)
return this->ws_->wait ();
}
+void
+TAO_Transport::start_request (TAO_ORB_Core *,
+ const TAO_Profile *,
+ const char* ,
+ CORBA::ULong ,
+ CORBA::Boolean,
+ TAO_OutputCDR &,
+ CORBA::Environment &ACE_TRY_ENV)
+ TAO_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_THROW (CORBA::INTERNAL ());
+}
+
+void
+TAO_Transport::start_locate (TAO_ORB_Core *,
+ const TAO_Profile *,
+ CORBA::ULong,
+ TAO_OutputCDR &,
+ CORBA::Environment &ACE_TRY_ENV)
+ TAO_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_THROW (CORBA::INTERNAL ());
+}
+
// *********************************************************************
// Connector
diff --git a/TAO/tao/Pluggable.h b/TAO/tao/Pluggable.h
index 7ba986f639f..08a38a9d1f8 100644
--- a/TAO/tao/Pluggable.h
+++ b/TAO/tao/Pluggable.h
@@ -23,7 +23,6 @@
#include "tao/corbafwd.h"
#include "tao/Sequence.h"
#include "tao/Typecode.h"
-#include "tao/GIOP.h"
// Forward declarations.
class ACE_Addr;
@@ -118,17 +117,29 @@ public:
// not clear this this is the best place to specify this. The actual
// timeout values will be kept in the Policies.
+ virtual void start_request (TAO_ORB_Core *orb_core,
+ const TAO_Profile *profile,
+ const char* opname,
+ CORBA::ULong request_id,
+ CORBA::Boolean is_twoway,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Fill into <output> the right headers to make a request.
+
+ virtual void start_locate (TAO_ORB_Core *orb_core,
+ const TAO_Profile *profile,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Fill into <output> the right headers to make a locate request.
+
virtual int send_request (TAO_ORB_Core *orb_core,
TAO_OutputCDR &stream,
int twoway) = 0;
// Default action to be taken for send request.
- TAO_InputCDR *input_cdr_stream (void) const;
- // Get the CDR stream for reading the input message.
-
- void destroy_cdr_stream (TAO_InputCDR *) const;
- // Release a CDR stream, simply pass it to the RMS...
-
// = Get and set methods for the ORB Core.
// void orb_core (TAO_ORB_Core *orb_core);
@@ -182,43 +193,6 @@ protected:
TAO_Wait_Strategy *ws_;
// Strategy for waiting for the reply after sending the request.
-
- TAO_GIOP_Version version_;
- // Version information found in the incoming message.
-};
-
-class TAO_Export TAO_IOP_Version
-{
- // = TITLE
- // Major and Minor version number of the Inter-ORB Protocol.
-public:
- CORBA::Octet major;
- // Major version number
-
- CORBA::Octet minor;
- // Minor version number
-
- TAO_IOP_Version (const TAO_IOP_Version &src);
- // Copy constructor
-
- TAO_IOP_Version (CORBA::Octet maj = 0,
- CORBA::Octet min = 0);
- // Default constructor.
-
- ~TAO_IOP_Version (void);
- // Destructor.
-
- void set_version (CORBA::Octet maj, CORBA::Octet min);
- // Explicitly set the major and minor version.
-
- TAO_IOP_Version &operator= (const TAO_IOP_Version &src);
- // Copy operator.
-
- int operator== (const TAO_IOP_Version &src);
- // Equality operator
-
- int operator== (const TAO_IOP_Version *&src);
- // Equality operator
};
class TAO_Export TAO_Profile
@@ -372,7 +346,10 @@ public:
TAO_MProfile &mprofile) = 0;
// Create the corresponding profile for this endpoint.
- virtual int open (TAO_ORB_Core *orb_core, ACE_CString &address) = 0;
+ virtual int open (TAO_ORB_Core *orb_core,
+ int version_major,
+ int version_minor,
+ ACE_CString &address) = 0;
// method to initialize acceptor for address.
virtual int open_default (TAO_ORB_Core *orb_core) = 0;
diff --git a/TAO/tao/Pluggable.i b/TAO/tao/Pluggable.i
index a4cbf97a151..934cf4e062d 100644
--- a/TAO/tao/Pluggable.i
+++ b/TAO/tao/Pluggable.i
@@ -1,6 +1,8 @@
// -*- C++ -*-
// $Id$
+// ****************************************************************
+
ACE_INLINE
TAO_Profile::TAO_Profile (CORBA::ULong tag)
: tag_ (tag),
diff --git a/TAO/tao/Reply_Dispatcher.cpp b/TAO/tao/Reply_Dispatcher.cpp
index 0a205c8eeba..e4b560bfc9e 100644
--- a/TAO/tao/Reply_Dispatcher.cpp
+++ b/TAO/tao/Reply_Dispatcher.cpp
@@ -16,8 +16,8 @@ TAO_Reply_Dispatcher::~TAO_Reply_Dispatcher (void)
{
}
-TAO_InputCDR *
-TAO_Reply_Dispatcher::cdr (void) const
+TAO_GIOP_Message_State *
+TAO_Reply_Dispatcher::message_state (void) const
{
return 0;
}
@@ -25,9 +25,10 @@ TAO_Reply_Dispatcher::cdr (void) const
// *********************************************************************
// Constructor.
-TAO_Synch_Reply_Dispatcher::TAO_Synch_Reply_Dispatcher (TAO_InputCDR* cdr)
+TAO_Synch_Reply_Dispatcher::
+ TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state)
+ : message_state_ (message_state)
{
- this->cdr_ = cdr;
}
// Destructor.
@@ -40,8 +41,14 @@ int
TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR*)
+ TAO_GIOP_Message_State* message_state)
{
+ 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_status_ = reply_status;
this->version_ = version;
@@ -55,8 +62,8 @@ TAO_Synch_Reply_Dispatcher::dispatch_reply (CORBA::ULong reply_status,
return 0;
}
-TAO_InputCDR *
-TAO_Synch_Reply_Dispatcher::cdr (void) const
+TAO_GIOP_Message_State *
+TAO_Synch_Reply_Dispatcher::message_state (void) const
{
- return this->cdr_;
+ return this->message_state_;
}
diff --git a/TAO/tao/Reply_Dispatcher.h b/TAO/tao/Reply_Dispatcher.h
index f0d9ace84ad..90132289124 100644
--- a/TAO/tao/Reply_Dispatcher.h
+++ b/TAO/tao/Reply_Dispatcher.h
@@ -43,11 +43,14 @@ public:
virtual int dispatch_reply (CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr) = 0;
+ TAO_GIOP_Message_State* message_state) = 0;
// Dispatch the reply.
- virtual TAO_InputCDR *cdr (void) const;
- // Get the CDR stream (if any)
+ 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.
};
class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
@@ -60,7 +63,7 @@ class TAO_Export TAO_Synch_Reply_Dispatcher : public TAO_Reply_Dispatcher
//
public:
- TAO_Synch_Reply_Dispatcher (TAO_InputCDR* cdr);
+ TAO_Synch_Reply_Dispatcher (TAO_GIOP_Message_State* message_state);
// Constructor.
virtual ~TAO_Synch_Reply_Dispatcher (void);
@@ -78,8 +81,8 @@ public:
virtual int dispatch_reply (CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr);
- virtual TAO_InputCDR *cdr (void) const;
+ TAO_GIOP_Message_State* message_state);
+ virtual TAO_GIOP_Message_State *message_state (void) const;
private:
CORBA::ULong reply_status_;
@@ -91,7 +94,7 @@ private:
TAO_GIOP_ServiceContextList reply_ctx_;
// The service context list
- TAO_InputCDR *cdr_;
+ TAO_GIOP_Message_State *message_state_;
// CDR stream for reading the input.
};
diff --git a/TAO/tao/Server_Request.h b/TAO/tao/Server_Request.h
index 577e2c4e9af..bb03b9812e5 100644
--- a/TAO/tao/Server_Request.h
+++ b/TAO/tao/Server_Request.h
@@ -154,7 +154,8 @@ public:
virtual unsigned int operation_length (void) const = 0;
// get the length of the operation name
- virtual void init_reply (CORBA_Environment &TAO_IN_ENV = TAO_default_environment ()) = 0;
+ virtual void init_reply (CORBA_Environment &TAO_IN_ENV =
+ TAO_default_environment ()) = 0;
// Start a Reply message.
// CORBA::Context_ptr ctx (void) = 0;
diff --git a/TAO/tao/Transport_Mux_Strategy.cpp b/TAO/tao/Transport_Mux_Strategy.cpp
index 9133f0cc6a1..f08cc37b575 100644
--- a/TAO/tao/Transport_Mux_Strategy.cpp
+++ b/TAO/tao/Transport_Mux_Strategy.cpp
@@ -54,24 +54,24 @@ TAO_Muxed_TMS::dispatch_reply (CORBA::ULong request_id,
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr)
+ TAO_GIOP_Message_State* message_state)
{
// @@
return -1;
}
-TAO_InputCDR *
-TAO_Muxed_TMS::get_cdr_stream (void)
+TAO_GIOP_Message_State *
+TAO_Muxed_TMS::get_message_state (void)
{
return 0;
}
void
-TAO_Muxed_TMS::destroy_cdr_stream (TAO_InputCDR *)
+TAO_Muxed_TMS::destroy_message_state (TAO_GIOP_Message_State *)
{
// @@ Implement.
- // delete cdr;
- // cdr = 0;
+ // delete message_state;
+ // message_state = 0;
}
// *********************************************************************
@@ -111,7 +111,7 @@ TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr)
+ TAO_GIOP_Message_State* message_state)
{
if (this->request_id_ != request_id)
{
@@ -129,20 +129,20 @@ TAO_Exclusive_TMS::dispatch_reply (CORBA::ULong request_id,
return rd->dispatch_reply (reply_status,
version,
reply_ctx,
- cdr);
+ message_state);
}
-TAO_InputCDR *
-TAO_Exclusive_TMS::get_cdr_stream (void)
+TAO_GIOP_Message_State *
+TAO_Exclusive_TMS::get_message_state (void)
{
if (this->rd_ == 0)
return 0;
- return this->rd_->cdr ();
+ return this->rd_->message_state ();
}
// NOOP function.
void
-TAO_Exclusive_TMS::destroy_cdr_stream (TAO_InputCDR *)
+TAO_Exclusive_TMS::destroy_message_state (TAO_GIOP_Message_State *)
{
}
diff --git a/TAO/tao/Transport_Mux_Strategy.h b/TAO/tao/Transport_Mux_Strategy.h
index f7d92ae34ef..8cdb605aec9 100644
--- a/TAO/tao/Transport_Mux_Strategy.h
+++ b/TAO/tao/Transport_Mux_Strategy.h
@@ -26,8 +26,6 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
class TAO_Reply_Dispatcher;
-struct TAO_GIOP_Version;
-class TAO_InputCDR;
class TAO_Export TAO_Transport_Mux_Strategy
{
@@ -63,7 +61,7 @@ public:
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr) = 0;
+ TAO_GIOP_Message_State* message_state) = 0;
// Dispatch the reply for <request_id>, cleanup any resources
// allocated for that request.
@@ -71,10 +69,10 @@ public:
// the factory simply allocates a new one, in the Exclusive case
// the factory returns a pointer to the pre-allocated CDR.
- virtual TAO_InputCDR *get_cdr_stream (void) = 0;
+ virtual TAO_GIOP_Message_State *get_message_state (void) = 0;
// Get a CDR stream.
- virtual void destroy_cdr_stream (TAO_InputCDR *) = 0;
+ virtual void destroy_message_state (TAO_GIOP_Message_State *) = 0;
// Destroy a CDR stream.
};
@@ -102,9 +100,9 @@ public:
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr);
- virtual TAO_InputCDR *get_cdr_stream (void);
- virtual void destroy_cdr_stream (TAO_InputCDR *);
+ TAO_GIOP_Message_State* message_state);
+ virtual TAO_GIOP_Message_State *get_message_state (void);
+ virtual void destroy_message_state (TAO_GIOP_Message_State *);
protected:
// @@ HASH TABLE???
@@ -134,9 +132,9 @@ public:
CORBA::ULong reply_status,
const TAO_GIOP_Version& version,
TAO_GIOP_ServiceContextList& reply_ctx,
- TAO_InputCDR* cdr);
- virtual TAO_InputCDR *get_cdr_stream (void);
- virtual void destroy_cdr_stream (TAO_InputCDR *);
+ TAO_GIOP_Message_State* message_state);
+ virtual TAO_GIOP_Message_State *get_message_state (void);
+ virtual void destroy_message_state (TAO_GIOP_Message_State *);
protected:
CORBA::ULong request_id_generator_;
diff --git a/TAO/tao/UIOP_Acceptor.cpp b/TAO/tao/UIOP_Acceptor.cpp
index 6b3d19c9bfd..88d6c726df6 100644
--- a/TAO/tao/UIOP_Acceptor.cpp
+++ b/TAO/tao/UIOP_Acceptor.cpp
@@ -26,6 +26,7 @@
#include "tao/ORB_Core.h"
#include "tao/Server_Strategy_Factory.h"
#include "tao/GIOP.h"
+#include "tao/debug.h"
ACE_RCSID(tao, UIOP_Acceptor, "$Id$")
@@ -34,6 +35,7 @@ ACE_RCSID(tao, UIOP_Acceptor, "$Id$")
TAO_UIOP_Acceptor::TAO_UIOP_Acceptor (void)
: TAO_Acceptor (TAO_IOP_TAG_UNIX_IOP),
base_acceptor_ (),
+ version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
orb_core_ (0)
{
}
@@ -59,6 +61,7 @@ TAO_UIOP_Acceptor::create_mprofile (const TAO_ObjectKey &object_key,
ACE_NEW_RETURN (pfile,
TAO_UIOP_Profile (addr,
object_key,
+ this->version_,
this->orb_core_),
-1);
@@ -103,8 +106,13 @@ TAO_UIOP_Acceptor::close (void)
int
TAO_UIOP_Acceptor::open (TAO_ORB_Core *orb_core,
+ int major,
+ int minor,
ACE_CString &address)
{
+ if (major >= 0 && minor >= 0)
+ this->version_.set_version (ACE_static_cast (CORBA::Octet,major),
+ ACE_static_cast (CORBA::Octet,minor));
ACE_UNIX_Addr addr (address.c_str ());
return this->open_i (orb_core, addr);
@@ -135,13 +143,20 @@ TAO_UIOP_Acceptor::open_i (TAO_ORB_Core* orb_core,
// @@ If Profile creation is slow we may need to cache the
// rendezvous point here
+ if (TAO_debug_level > 5)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "\nTAO (%P|%t) UIOP_Acceptor::open_i - "
+ "listening on: <%s>\n",
+ addr.get_path_name ()));
+ }
+
return 0;
}
CORBA::ULong
TAO_UIOP_Acceptor::endpoint_count (void)
{
- // @@ for now just assume one!
return 1;
}
diff --git a/TAO/tao/UIOP_Acceptor.h b/TAO/tao/UIOP_Acceptor.h
index ba8e6d26746..4b4a19da538 100644
--- a/TAO/tao/UIOP_Acceptor.h
+++ b/TAO/tao/UIOP_Acceptor.h
@@ -46,7 +46,10 @@ public:
TAO_UIOP_Acceptor (void);
// Create Acceptor object using addr.
- int open (TAO_ORB_Core *orb_core, ACE_CString &address);
+ int open (TAO_ORB_Core *orb_core,
+ int version_major,
+ int version_minor,
+ ACE_CString &address);
// initialize acceptor for this address.
virtual int close (void);
@@ -79,6 +82,9 @@ private:
TAO_UIOP_BASE_ACCEPTOR base_acceptor_;
// the concrete acceptor, as a pointer to its base class.
+ TAO_GIOP_Version version_;
+ // The GIOP version for this endpoint
+
TAO_ORB_Core *orb_core_;
// ORB Core.
};
diff --git a/TAO/tao/UIOP_Connect.cpp b/TAO/tao/UIOP_Connect.cpp
index 148d01ae6d1..81b553b38eb 100644
--- a/TAO/tao/UIOP_Connect.cpp
+++ b/TAO/tao/UIOP_Connect.cpp
@@ -17,7 +17,7 @@
ACE_RCSID(tao, UIOP_Connect, "$Id$")
- TAO_UIOP_Handler_Base::TAO_UIOP_Handler_Base (TAO_ORB_Core *orb_core)
+TAO_UIOP_Handler_Base::TAO_UIOP_Handler_Base (TAO_ORB_Core *orb_core)
: TAO_UIOP_SVC_HANDLER (orb_core->thr_mgr (), 0, 0)
{
}
@@ -29,13 +29,10 @@ TAO_UIOP_Handler_Base::TAO_UIOP_Handler_Base (ACE_Thread_Manager *t)
// ****************************************************************
-// @@ For pluggable protocols, added a reference to
-// the corresponding transport obj.
TAO_UIOP_Server_Connection_Handler::TAO_UIOP_Server_Connection_Handler (ACE_Thread_Manager *t)
: TAO_UIOP_Handler_Base (t),
orb_core_ (0),
- tss_resources_ (0),
- input_ (ACE_CDR::DEFAULT_BUFSIZE)
+ tss_resources_ (0)
{
// This constructor should *never* get called, it is just here to
// make the compiler happy: the default implementation of the
@@ -50,10 +47,7 @@ TAO_UIOP_Server_Connection_Handler::TAO_UIOP_Server_Connection_Handler (ACE_Thre
TAO_UIOP_Server_Connection_Handler::TAO_UIOP_Server_Connection_Handler (TAO_ORB_Core *orb_core)
: TAO_UIOP_Handler_Base (orb_core),
orb_core_ (orb_core),
- tss_resources_ (TAO_ORB_CORE_TSS_RESOURCES::instance ()),
- input_ (orb_core->create_input_cdr_data_block (ACE_CDR::DEFAULT_BUFSIZE),
- TAO_ENCAP_BYTE_ORDER,
- orb_core)
+ tss_resources_ (TAO_ORB_CORE_TSS_RESOURCES::instance ())
{
transport_ = new TAO_UIOP_Server_Transport (this,
this->orb_core_);
@@ -192,22 +186,12 @@ TAO_UIOP_Server_Connection_Handler::svc (void)
return result;
}
-void
-TAO_UIOP_Server_Connection_Handler::send_response (TAO_OutputCDR &output)
-{
- TAO_GIOP::send_message (this->transport_,
- output,
- this->orb_core_);
-}
-
int
TAO_UIOP_Server_Connection_Handler::handle_input (ACE_HANDLE)
{
int result = TAO_GIOP::handle_input (this->transport (),
this->orb_core_,
- this->message_header_,
- this->current_offset_,
- this->input_);
+ this->transport_->message_state_);
if (result == -1 && TAO_debug_level > 0)
{
@@ -215,17 +199,17 @@ TAO_UIOP_Server_Connection_Handler::handle_input (ACE_HANDLE)
"TAO (%P|%t) - %p\n",
"UIOP_Server_CH::handle_input, handle_input"));
}
- if (result == 1)
- {
- TAO_GIOP_MessageHeader header_copy = this->message_header_;
- this->message_header_.message_size = 0;
- TAO_GIOP::process_server_message (this->transport (),
- this->orb_core_,
- this->input_,
- header_copy);
- result = 0;
- }
- return result;
+ if (result == 0)
+ return 0;
+
+ // ACE_ASSERT (result == 1);
+
+ TAO_GIOP::process_server_message (this->transport (),
+ this->orb_core_,
+ this->transport_->message_state_.cdr,
+ this->transport_->message_state_);
+ this->transport_->message_state_.reset ();
+ return 0;
}
// ****************************************************************
diff --git a/TAO/tao/UIOP_Connect.h b/TAO/tao/UIOP_Connect.h
index 1b5e951725f..e4ae0d093d1 100644
--- a/TAO/tao/UIOP_Connect.h
+++ b/TAO/tao/UIOP_Connect.h
@@ -135,9 +135,6 @@ protected:
TAO_UIOP_Server_Transport *transport_;
// @@ New transport object reference.
- virtual void send_response (TAO_OutputCDR &response);
- // Send <response> to the client on the other end.
-
// = Event Handler overloads
virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE);
@@ -153,12 +150,6 @@ protected:
TAO_ORB_Core_TSS_Resources *tss_resources_;
// Cached tss resources of the ORB that activated this object.
-
- TAO_GIOP_MessageHeader message_header_;
- CORBA::ULong current_offset_;
- TAO_InputCDR input_;
- // This keep the state of the current message, to enable
- // non-blocking reads.
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/UIOP_Factory.cpp b/TAO/tao/UIOP_Factory.cpp
index 702bc88452b..9228fd81d31 100644
--- a/TAO/tao/UIOP_Factory.cpp
+++ b/TAO/tao/UIOP_Factory.cpp
@@ -12,6 +12,8 @@ ACE_RCSID(tao, UIOP_Factory, "$Id$")
TAO_UIOP_Protocol_Factory::TAO_UIOP_Protocol_Factory (void)
+ : major_ (TAO_DEF_GIOP_MAJOR),
+ minor_ (TAO_DEF_GIOP_MINOR)
{
}
diff --git a/TAO/tao/UIOP_Factory.h b/TAO/tao/UIOP_Factory.h
index c1da260a864..941f3447106 100644
--- a/TAO/tao/UIOP_Factory.h
+++ b/TAO/tao/UIOP_Factory.h
@@ -48,6 +48,12 @@ public:
virtual TAO_Connector *make_connector (void);
// create a connector
+
+private:
+ int major_;
+ int minor_;
+ // Changing the version number can be used to provide backwards
+ // compatibility with old clients.
};
ACE_STATIC_SVC_DECLARE (TAO_UIOP_Protocol_Factory)
diff --git a/TAO/tao/UIOP_Profile.cpp b/TAO/tao/UIOP_Profile.cpp
index 706638e672d..3438134f02f 100644
--- a/TAO/tao/UIOP_Profile.cpp
+++ b/TAO/tao/UIOP_Profile.cpp
@@ -24,10 +24,11 @@ const char TAO_UIOP_Profile::object_key_delimiter = '|';
TAO_UIOP_Profile::TAO_UIOP_Profile (const ACE_UNIX_Addr &addr,
const TAO_ObjectKey &object_key,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core)
: TAO_Profile (TAO_IOP_TAG_UNIX_IOP),
rendezvous_point_ (0),
- version_ (DEF_UIOP_MAJOR, DEF_UIOP_MINOR),
+ version_ (version),
object_key_ (object_key),
object_addr_ (addr),
hint_ (0),
@@ -39,10 +40,11 @@ TAO_UIOP_Profile::TAO_UIOP_Profile (const ACE_UNIX_Addr &addr,
TAO_UIOP_Profile::TAO_UIOP_Profile (const char *rendezvous_point,
const TAO_ObjectKey &object_key,
const ACE_UNIX_Addr &addr,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core)
: TAO_Profile (TAO_IOP_TAG_UNIX_IOP),
rendezvous_point_ (0),
- version_ (DEF_UIOP_MAJOR, DEF_UIOP_MINOR),
+ version_ (version),
object_key_ (object_key),
object_addr_ (addr),
hint_ (0),
@@ -76,7 +78,7 @@ TAO_UIOP_Profile::TAO_UIOP_Profile (const char *string,
CORBA::Environment &env)
: TAO_Profile (TAO_IOP_TAG_UNIX_IOP),
rendezvous_point_ (0),
- version_ (DEF_UIOP_MAJOR, DEF_UIOP_MINOR),
+ version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
object_key_ (),
object_addr_ (),
hint_ (0),
@@ -88,7 +90,7 @@ TAO_UIOP_Profile::TAO_UIOP_Profile (const char *string,
TAO_UIOP_Profile::TAO_UIOP_Profile (TAO_ORB_Core *orb_core)
: TAO_Profile (TAO_IOP_TAG_UNIX_IOP),
rendezvous_point_ (0),
- version_ (DEF_UIOP_MAJOR, DEF_UIOP_MINOR),
+ version_ (TAO_DEF_GIOP_MAJOR, TAO_DEF_GIOP_MINOR),
object_key_ (),
object_addr_ (),
hint_ (0),
@@ -142,8 +144,8 @@ TAO_UIOP_Profile::parse_string (const char *string,
// Skip over the "N.n@"
}
- if (this->version_.major != TAO_UIOP_Profile::DEF_UIOP_MAJOR ||
- this->version_.minor > TAO_UIOP_Profile::DEF_UIOP_MINOR)
+ if (this->version_.major != TAO_DEF_GIOP_MAJOR ||
+ this->version_.minor > TAO_DEF_GIOP_MINOR)
{
ACE_THROW_RETURN (CORBA::MARSHAL (), -1);
}
@@ -358,9 +360,9 @@ TAO_UIOP_Profile::decode (TAO_InputCDR& cdr)
// protocol?
if (!(cdr.read_octet (this->version_.major)
- && this->version_.major == TAO_UIOP_Profile::DEF_UIOP_MAJOR
+ && this->version_.major == TAO_DEF_GIOP_MAJOR
&& cdr.read_octet (this->version_.minor)
- && this->version_.minor <= TAO_UIOP_Profile::DEF_UIOP_MINOR))
+ && this->version_.minor <= TAO_DEF_GIOP_MINOR))
{
ACE_DEBUG ((LM_DEBUG,
"detected new v%d.%d UIOP profile\n",
@@ -442,7 +444,7 @@ TAO_UIOP_Profile::encode (TAO_OutputCDR &stream) const
// CHAR describing byte order, starting the encapsulation
stream.write_octet (TAO_ENCAP_BYTE_ORDER);
- // UIOP::TAO_IOP_Version, two characters (version 1.0) padding
+ // The GIOP version
stream.write_char (this->version_.major);
stream.write_char (this->version_.minor);
diff --git a/TAO/tao/UIOP_Profile.h b/TAO/tao/UIOP_Profile.h
index ec49c4631d8..53a2c148955 100644
--- a/TAO/tao/UIOP_Profile.h
+++ b/TAO/tao/UIOP_Profile.h
@@ -43,13 +43,6 @@ class TAO_Export TAO_UIOP_Profile : public TAO_Profile
// = DESCRIPTION
// This class defines the UIOP profile.
public:
- // = Currently, TAO supports UIOP 1.0.
- enum
- {
- DEF_UIOP_MAJOR = 1, // FIXME: Version numbers?
- DEF_UIOP_MINOR = 0
- };
-
static const char object_key_delimiter;
// The object key delimiter that UIOP uses or expects.
@@ -58,6 +51,7 @@ public:
TAO_UIOP_Profile (const ACE_UNIX_Addr &addr,
const TAO_ObjectKey &object_key,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core);
// Profile constructor, same as above except the object_key has
// already been marshaled. (actually, no marshalling for this protocol)
@@ -65,6 +59,7 @@ public:
TAO_UIOP_Profile (const char *rendezvous_point,
const TAO_ObjectKey &object_key,
const ACE_UNIX_Addr &addr,
+ const TAO_GIOP_Version &version,
TAO_ORB_Core *orb_core);
// Profile constructor
@@ -131,14 +126,10 @@ public:
// resulting pointer.
// This object maintains ownership of this string.
- const TAO_IOP_Version *version (void);
+ const TAO_GIOP_Version &version (void) const;
// Return a pointer to this profile's version. This object
// maintains ownership.
- const TAO_IOP_Version *version (TAO_IOP_Version *v);
- // First set the version then return a pointer to it. This object
- // maintains ownership.
-
TAO_UIOP_Client_Connection_Handler *&hint (void);
// This is a hint for which connection handler to use.
@@ -160,7 +151,7 @@ private:
char *rendezvous_point_;
// String representing the rendezvous point.
- TAO_IOP_Version version_;
+ TAO_GIOP_Version version_;
// UIOP version number.
TAO_ObjectKey object_key_;
diff --git a/TAO/tao/UIOP_Profile.i b/TAO/tao/UIOP_Profile.i
index 84f86743705..01477bd9546 100644
--- a/TAO/tao/UIOP_Profile.i
+++ b/TAO/tao/UIOP_Profile.i
@@ -34,17 +34,10 @@ TAO_UIOP_Profile::rendezvous_point (void)
return this->rendezvous_point_;
}
-ACE_INLINE const TAO_IOP_Version *
-TAO_UIOP_Profile::version (void)
+ACE_INLINE const TAO_GIOP_Version &
+TAO_UIOP_Profile::version (void) const
{
- return &this->version_;
-}
-
-ACE_INLINE const TAO_IOP_Version *
-TAO_UIOP_Profile::version (TAO_IOP_Version *v)
-{
- this->version_ = *v;
- return &this->version_;
+ return this->version_;
}
ACE_INLINE TAO_UIOP_Client_Connection_Handler *&
diff --git a/TAO/tao/UIOP_Transport.cpp b/TAO/tao/UIOP_Transport.cpp
index 8c74fa2ca7f..c253800bf63 100644
--- a/TAO/tao/UIOP_Transport.cpp
+++ b/TAO/tao/UIOP_Transport.cpp
@@ -5,6 +5,7 @@
#include "tao/UIOP_Transport.h"
#include "tao/UIOP_Connect.h"
+#include "tao/UIOP_Profile.h"
#include "tao/Timeprobe.h"
#include "tao/CDR.h"
#include "tao/Transport_Mux_Strategy.h"
@@ -58,14 +59,47 @@ TAO_UIOP_Transport::~TAO_UIOP_Transport (void)
{
}
+TAO_UIOP_Handler_Base *&
+TAO_UIOP_Transport::handler (void)
+{
+ return this->handler_;
+}
+
+int
+TAO_UIOP_Transport::idle (void)
+{
+ return this->handler_->idle();
+}
+
+void
+TAO_UIOP_Transport::close_connection (void)
+{
+ this->handler_->handle_close ();
+}
+
+ACE_HANDLE
+TAO_UIOP_Transport::handle (void)
+{
+ return this->handler_->get_handle ();
+}
+
+// ****************************************************************
+
TAO_UIOP_Server_Transport::
TAO_UIOP_Server_Transport (TAO_UIOP_Server_Connection_Handler *handler,
TAO_ORB_Core* orb_core)
: TAO_UIOP_Transport (handler, orb_core),
- server_handler_ (handler)
+ server_handler_ (handler),
+ message_state_ (orb_core)
+{
+}
+
+TAO_UIOP_Server_Transport::~TAO_UIOP_Server_Transport (void)
{
}
+// ****************************************************************
+
TAO_UIOP_Client_Transport::
TAO_UIOP_Client_Transport (TAO_UIOP_Client_Connection_Handler *handler,
TAO_ORB_Core *orb_core)
@@ -75,10 +109,6 @@ TAO_UIOP_Client_Transport::
{
}
-TAO_UIOP_Server_Transport::~TAO_UIOP_Server_Transport (void)
-{
-}
-
TAO_UIOP_Client_Transport::~TAO_UIOP_Client_Transport (void)
{
}
@@ -89,34 +119,84 @@ TAO_UIOP_Client_Transport::client_handler (void)
return this->client_handler_;
}
-TAO_UIOP_Server_Connection_Handler *
-TAO_UIOP_Server_Transport::server_handler (void)
+void
+TAO_UIOP_Client_Transport::
+ start_request (TAO_ORB_Core *orb_core,
+ const TAO_Profile* pfile,
+ const char* opname,
+ CORBA::ULong request_id,
+ CORBA::Boolean is_roundtrip,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
- return this->server_handler_;
-}
+ const TAO_UIOP_Profile* profile =
+ ACE_dynamic_cast(const TAO_UIOP_Profile*,pfile);
-TAO_UIOP_Handler_Base *&
-TAO_UIOP_Transport::handler (void)
-{
- return this->handler_;
-}
+ // Obtain object key.
+ const TAO_ObjectKey& key = profile->object_key ();
-int
-TAO_UIOP_Transport::idle (void)
-{
- return this->handler_->idle();
+ // @@ This should be implemented in the transport object, which
+ // would query the profile to obtain the version...
+ if (TAO_GIOP::start_message (profile->version (),
+ TAO_GIOP::Request,
+ output,
+ orb_core) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+
+ // Then fill in the rest of the RequestHeader
+ //
+ // The first element of header is service context list;
+ // transactional context would be acquired here using the
+ // transaction service APIs. Other kinds of context are as yet
+ // undefined.
+ //
+ // Last element of request header is the principal; no portable way
+ // to get it, we just pass empty principal (convention: indicates
+ // "anybody"). Steps upward in security include passing an
+ // unverified user ID, and then verifying the message (i.e. a dummy
+ // service context entry is set up to hold a digital signature for
+ // this message, then patched shortly before it's sent).
+ static CORBA::Principal_ptr principal = 0;
+
+ if (TAO_GIOP::write_request_header (request_id,
+ is_roundtrip,
+ key,
+ opname,
+ principal,
+ output,
+ orb_core) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
}
void
-TAO_UIOP_Transport::close_connection (void)
+TAO_UIOP_Client_Transport::
+ start_locate (TAO_ORB_Core *orb_core,
+ const TAO_Profile* pfile,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
{
- this->handler_->handle_close ();
-}
+ const TAO_UIOP_Profile* profile =
+ ACE_dynamic_cast(const TAO_UIOP_Profile*,pfile);
-ACE_HANDLE
-TAO_UIOP_Transport::handle (void)
-{
- return this->handler_->get_handle ();
+ // Obtain object key.
+ const TAO_ObjectKey& key = profile->object_key ();
+
+ // @@ This should be implemented in the transport object, which
+ // would query the profile to obtain the version...
+ if (TAO_GIOP::start_message (profile->version (),
+ TAO_GIOP::Request,
+ output,
+ orb_core) == 0)
+ ACE_THROW (CORBA::MARSHAL ());
+
+
+ if (TAO_GIOP::write_locate_request_header (this->request_id (),
+ key,
+ output) != 0)
+ ACE_THROW (CORBA::MARSHAL ());
}
int
@@ -167,13 +247,12 @@ TAO_UIOP_Client_Transport::handle_client_input (int block)
// removed.
// Do I make any sense?
- TAO_InputCDR* cdr = this->tms_->get_cdr_stream ();
+ TAO_GIOP_Message_State* message_state =
+ this->tms_->get_message_state ();
int result = TAO_GIOP::handle_input (this,
this->orb_core_,
- this->message_header_,
- this->current_offset_,
- *cdr);
+ *message_state);
if (result == -1)
{
if (TAO_debug_level > 0)
@@ -187,17 +266,13 @@ TAO_UIOP_Client_Transport::handle_client_input (int block)
// OK, the complete message is here...
- TAO_GIOP_MessageHeader header_copy = this->message_header_;
- this->message_header_.message_size = 0;
-
TAO_GIOP_ServiceContextList reply_ctx;
CORBA::ULong request_id;
CORBA::ULong reply_status;
result = TAO_GIOP::parse_reply (this,
this->orb_core_,
- *cdr,
- header_copy,
+ *message_state,
reply_ctx,
request_id,
reply_status);
@@ -207,26 +282,28 @@ TAO_UIOP_Client_Transport::handle_client_input (int block)
ACE_DEBUG ((LM_DEBUG,
"TAO (%P|%t) - %p\n",
"UIOP_Transport::handle_client_input, parse reply"));
+ message_state->reset ();
return -1;
}
if (this->tms_->dispatch_reply (request_id,
reply_status,
- header_copy.giop_version,
+ message_state->giop_version,
reply_ctx,
- cdr) != 0)
+ message_state) != 0)
{
if (TAO_debug_level > 0)
ACE_ERROR ((LM_ERROR,
"TAO (%P|%t) : UIOP_Client_Transport::"
"handle_client_input - "
"dispatch reply failed\n"));
+ message_state->reset ();
return -1;
}
// This is a NOOP for the Exclusive request case, but it actually
// destroys the stream in the muxed case.
- this->destroy_cdr_stream (cdr);
+ this->tms_->destroy_message_state (message_state);
// Return something to indicate the reply is received.
return 1;
diff --git a/TAO/tao/UIOP_Transport.h b/TAO/tao/UIOP_Transport.h
index 98d4ecfe94f..d9a999f4a3f 100644
--- a/TAO/tao/UIOP_Transport.h
+++ b/TAO/tao/UIOP_Transport.h
@@ -22,6 +22,7 @@
#define TAO_UIOP_TRANSPORT_H
#include "tao/Pluggable.h"
+#include "tao/GIOP.h"
# if !defined (ACE_LACKS_UNIX_DOMAIN_SOCKETS)
@@ -124,6 +125,24 @@ public:
TAO_UIOP_Client_Connection_Handler *client_handler (void);
// return a pointer to the client's connection handler.
+ virtual void start_request (TAO_ORB_Core *orb_core,
+ const TAO_Profile *profile,
+ const char* opname,
+ CORBA::ULong request_id,
+ CORBA::Boolean is_twoway,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Fill into <output> the right headers to make a request.
+
+ virtual void start_locate (TAO_ORB_Core *orb_core,
+ const TAO_Profile *profile,
+ CORBA::ULong request_id,
+ TAO_OutputCDR &output,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+ // Fill into <output> the right headers to make a locate request.
+
int send_request (TAO_ORB_Core *orb_core,
TAO_OutputCDR &stream,
int twoway);
@@ -149,11 +168,6 @@ protected:
private:
TAO_UIOP_Client_Connection_Handler *client_handler_;
// pointer to the corresponding client side connection handler.
-
- TAO_GIOP_MessageHeader message_header_;
- CORBA::ULong current_offset_;
- // This keep the state of the current message, to enable
- // non-blocking reads.
};
// ****************************************************************
@@ -177,12 +191,12 @@ public:
~TAO_UIOP_Server_Transport (void);
// Default destructor
- TAO_UIOP_Server_Connection_Handler *server_handler (void);
- // Return a pointer to the underlying connection handler.
-
-private:
TAO_UIOP_Server_Connection_Handler *server_handler_;
// Pointer to the corresponding connection handler.
+
+ TAO_GIOP_Message_State message_state_;
+ // This keep the state of the current message, to enable
+ // non-blocking reads, fragment reassembly, etc.
};
# endif /* !ACE_LACKS_UNIX_DOMAIN_SOCKETS */
diff --git a/TAO/tao/orbconf.h b/TAO/tao/orbconf.h
index 79a021db64d..8a354bf8f5b 100644
--- a/TAO/tao/orbconf.h
+++ b/TAO/tao/orbconf.h
@@ -348,4 +348,16 @@
#define TAO_MESSAGING_MAX_HOPS_POLICY_TYPE 34
#define TAO_MESSAGING_QUEUE_ORDER_POLICY_TYPE 35
+// Control the default version of GIOP used by TAO.
+// The ORB is always able to communicate with 1.0 and 1.1 servers, and
+// it creates 1.1 endpoints (and profiles). If you need to talk to
+// old clients that only understand 1.0 (and do not attempt to use 1.0
+// with 1.1 servers), then change the values below.
+#if !defined(TAO_DEF_GIOP_MAJOR)
+#define TAO_DEF_GIOP_MAJOR 1
+#endif /* TAO_DEF_GIOP_MAJOR */
+#if !defined(TAO_DEF_GIOP_MINOR)
+#define TAO_DEF_GIOP_MINOR 1
+#endif /* TAO_DEF_GIOP_MINOR */
+
#endif /* TAO_ORB_CONFIG_H */
diff --git a/TAO/utils/catior/catior.cpp b/TAO/utils/catior/catior.cpp
index 7efa5406897..dd03bf00db6 100644
--- a/TAO/utils/catior/catior.cpp
+++ b/TAO/utils/catior/catior.cpp
@@ -592,9 +592,9 @@ cat_iiop_profile (TAO_InputCDR& stream)
// encapsulation...
CORBA::Octet iiop_version_major, iiop_version_minor;
if (! (str.read_octet (iiop_version_major)
- && iiop_version_major == TAO_IIOP_Profile::DEF_IIOP_MAJOR
+ && iiop_version_major == 1
&& str.read_octet (iiop_version_minor)
- && iiop_version_minor <= TAO_IIOP_Profile::DEF_IIOP_MINOR))
+ && iiop_version_minor <= 0))
{
ACE_DEBUG ((LM_DEBUG,
"detected new v%d.%d IIOP profile",
@@ -657,9 +657,9 @@ cat_uiop_profile (TAO_InputCDR& stream)
// encapsulation...
CORBA::Octet iiop_version_major, iiop_version_minor;
if (! (str.read_octet (iiop_version_major)
- && iiop_version_major == TAO_UIOP_Profile::DEF_UIOP_MAJOR
+ && iiop_version_major == 1
&& str.read_octet (iiop_version_minor)
- && iiop_version_minor <= TAO_UIOP_Profile::DEF_UIOP_MINOR))
+ && iiop_version_minor <= 0))
{
ACE_DEBUG ((LM_DEBUG,
"detected new v%d.%d UIOP profile",
diff --git a/TAO/utils/nslist/nslist.cpp b/TAO/utils/nslist/nslist.cpp
index b2fe04212a6..4646b10719a 100644
--- a/TAO/utils/nslist/nslist.cpp
+++ b/TAO/utils/nslist/nslist.cpp
@@ -9,31 +9,13 @@
// nslist.cpp
//
// = DESCRIPTION
-// Naming Service listing utility
+// Naming Service listing utility
//
// = AUTHOR
// Written 1999-06-03 by Thomas Lockhart, NASA/JPL <Thomas.Lockhart@jpl.nasa.gov>
//
// ============================================================================
-/* $Log$
- * Revision 1.1 1999/06/09 19:43:38 schmidt
- * .
- *
- * Revision 1.3 1999/06/08 18:15:50 lockhart
- * Clean up code and add a few comments in preparation for contributing to
- * the TAO distribution.
- *
- * Revision 1.2 1999/06/07 21:02:39 lockhart
- * Check for non-existant Naming Service. If none found, then exit with msg.
- * Indent multi-level names.
- *
- * Revision 1.1 1999/06/03 00:21:19 lockhart
- * First cut at a Naming Service utility which prints out current NS entries.
- * Based on code in ACP, but can travel down trees rather than just showing
- * the highest level entries.
- */
-
#include "tao/TAO.h"
#include "orbsvcs/CosNamingC.h"
@@ -41,7 +23,7 @@ static void list_context (CosNaming::NamingContext_ptr nc, int level);
// Display NS entries from a finite list.
-static void
+static void
show_chunk (CosNaming::NamingContext_ptr nc,
const CosNaming::BindingList &bl,
int level)
@@ -53,31 +35,31 @@ show_chunk (CosNaming::NamingContext_ptr nc,
ACE_DEBUG ((LM_DEBUG,
"%*s",
2 * level,
- bl[i].binding_name[0].id));
+ bl[i].binding_name[0].id.in ()));
if (ACE_OS::strlen(bl[i].binding_name[0].kind) > 0)
ACE_DEBUG ((LM_DEBUG,
"(%s)",
- bl[i].binding_name[0].kind));
+ bl[i].binding_name[0].kind.in ()));
// If this is a context node, follow it down to the next
// level...
if (bl[i].binding_type == CosNaming::ncontext)
- {
+ {
ACE_DEBUG ((LM_DEBUG,
": context\n"));
- CosNaming::Name Name;
- Name.length (1);
- Name[0].id =
+ CosNaming::Name Name;
+ Name.length (1);
+ Name[0].id =
CORBA::string_dup (bl[i].binding_name[0].id);
- CORBA::Object_var obj = nc->resolve (Name);
+ CORBA::Object_var obj = nc->resolve (Name);
- CosNaming::NamingContext_var xc =
+ CosNaming::NamingContext_var xc =
CosNaming::NamingContext::_narrow (obj);
- list_context (xc, level + 1);
- }
+ list_context (xc, level + 1);
+ }
// Mark this node as a reference
else
// The next version should resolve and show the IOR...
@@ -86,7 +68,7 @@ show_chunk (CosNaming::NamingContext_ptr nc,
}
}
-static void
+static void
list_context (CosNaming::NamingContext_ptr nc,
int level)
{
@@ -102,10 +84,10 @@ list_context (CosNaming::NamingContext_ptr nc,
CORBA::Boolean more;
do
- {
- more = it->next_n (CHUNK, bl);
- show_chunk (nc, bl, level);
- }
+ {
+ more = it->next_n (CHUNK, bl);
+ show_chunk (nc, bl, level);
+ }
while (more);
it->destroy();
@@ -131,7 +113,7 @@ main (int argc, char *argv[])
ACE_TRY_CHECK;
CORBA::String_var str =
- orb->object_to_string (root_nc.in (),
+ orb->object_to_string (root_nc.in (),
ACE_TRY_ENV);
ACE_TRY_CHECK;
@@ -142,7 +124,7 @@ main (int argc, char *argv[])
ACE_DEBUG ((LM_DEBUG,
"Naming Service: <%s> ---------\n",
- str));
+ str.in ()));
list_context (root_nc, 1);
}
@@ -154,6 +136,5 @@ main (int argc, char *argv[])
}
ACE_ENDTRY;
- return 0;
+ return 0;
}
-