summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbala <balanatarajan@users.noreply.github.com>2003-08-28 15:37:30 +0000
committerbala <balanatarajan@users.noreply.github.com>2003-08-28 15:37:30 +0000
commitc9714eb80fb88c79ab8a3ac89f45cd644be9b6ba (patch)
tree274cc94d43d0002398cb54ea9369e306e2007ce4
parent5c70a04b17e19fdca8872a5753b04c506293932f (diff)
downloadATCD-c9714eb80fb88c79ab8a3ac89f45cd644be9b6ba.tar.gz
ChangeLogTag:Thu Aug 28 10:19:58 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref45
-rw-r--r--TAO/tao/Invocation_Endpoint_Selectors.cpp4
-rw-r--r--TAO/tao/Profile_Transport_Resolver.cpp28
-rw-r--r--TAO/tao/Profile_Transport_Resolver.h32
-rw-r--r--TAO/tao/Profile_Transport_Resolver.inl6
-rw-r--r--TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp6
-rw-r--r--TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h8
-rw-r--r--TAO/tao/RTCORBA/RT_Endpoint_Utils.cpp85
-rw-r--r--TAO/tao/RTCORBA/RT_Endpoint_Utils.h11
-rw-r--r--TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp352
-rw-r--r--TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h15
-rw-r--r--TAO/tao/RTPortableServer/RTPortableServerC.h63
-rw-r--r--TAO/tao/RTScheduling/RTSchedulerC.h463
-rw-r--r--TAO/tao/Remote_Invocation.cpp16
-rw-r--r--TAO/tao/Synch_Invocation.cpp2
-rw-r--r--TAO/tao/TODO3
-rw-r--r--TAO/tao/Transport_Connector.cpp11
-rw-r--r--TAO/tao/Transport_Connector.h2
18 files changed, 858 insertions, 294 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref
index 187c3f8de44..c6e1422f7d5 100644
--- a/TAO/ChangeLog_ref
+++ b/TAO/ChangeLog_ref
@@ -1,3 +1,48 @@
+Thu Aug 28 10:19:58 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
+
+ * tao/Profile_Transport_Resolver.cpp:
+ * tao/Profile_Transport_Resolver.h:
+ * tao/Profile_Transport_Resolver.inl: This class will now store a
+ pointer to a list of inconsistent policies. This is used by
+ _validate_connection () in RTCORBA. Provided an accessor and a
+ initialization method for the policy list.
+
+ Please see the documentation for more details about this.
+
+ Changed the try_connect () call to take a transport descriptor
+ instead of anedpoint.
+
+ * tao/Invocation_Endpoint_Selectors.cpp (select_endpoint): Create
+ a transport property descriptor to pass to try_connect () call.
+
+ * tao/Remote_Invocation.cpp (target_spec_init): Call the hooks
+ registered with the orb_core. This is used by the external
+ services like RTCORBA to add service contexts tothe outgoing
+ message.
+
+ * tao/Synch_Invocation.cpp: Cosmetic fix.
+
+ * tao/Transport_Connector.cpp:
+ * tao/Transport_Connector.h: The connect () call now takes in a
+ transport decsriptor instead of an endpoint.
+
+ * tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp:
+ * tao/RTCORBA/RT_Endpoint_Selector_Factory.h:
+ * tao/RTCORBA/RT_Endpoint_Utils.cpp:
+ * tao/RTCORBA/RT_Endpoint_Utils.h:
+ * tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp:
+ * tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h:
+ Changes necessiated by the changes that have been done so
+ far. Almost all the methods that take TAO_GIOP_Invocation as one
+ of its arguments, has an overloaded method in the same class
+ that takes in TAO::Profile_Transport_Resolver. This is necessary
+ for us to retire the Invocation classes.
+
+ * tao/RTScheduling/RTSchedulerC.h:
+ * tao/RTPortableServer/RTPortableServerC.h: Fixed compile errors
+ that were caused by changes in the number of template arguments
+ for TAO_Objref_Var_T and TAO_Objref_Out_T.
+
Wed Aug 27 15:34:16 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/be/be_attribute.cpp:
diff --git a/TAO/tao/Invocation_Endpoint_Selectors.cpp b/TAO/tao/Invocation_Endpoint_Selectors.cpp
index 18b5ed2dc75..5812dff6d60 100644
--- a/TAO/tao/Invocation_Endpoint_Selectors.cpp
+++ b/TAO/tao/Invocation_Endpoint_Selectors.cpp
@@ -79,8 +79,10 @@ TAO_Default_Endpoint_Selector::select_endpoint (
for (size_t i = 0; i < endpoint_count; ++i)
{
+ TAO_Base_Transport_Property desc (ep);
+
bool retval =
- r->try_connect (ep,
+ r->try_connect (&desc,
max_wait_time
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
diff --git a/TAO/tao/Profile_Transport_Resolver.cpp b/TAO/tao/Profile_Transport_Resolver.cpp
index 1eef8a653e3..73494991aa3 100644
--- a/TAO/tao/Profile_Transport_Resolver.cpp
+++ b/TAO/tao/Profile_Transport_Resolver.cpp
@@ -29,6 +29,7 @@ namespace TAO
, transport_ (0)
, profile_ (0)
, is_released_ (false)
+ , inconsistent_policies_ (0)
{
}
@@ -44,6 +45,9 @@ namespace TAO
if (this->is_released_ == false)
this->transport_->make_idle ();
}
+
+ if (this->inconsistent_policies_)
+ delete this->inconsistent_policies_;
}
void
@@ -105,7 +109,7 @@ namespace TAO
}
bool
- Profile_Transport_Resolver::try_connect (TAO_Endpoint *ep,
+ Profile_Transport_Resolver::try_connect (TAO_Transport_Descriptor_Interface *desc,
ACE_Time_Value *max_time_value
ACE_ENV_ARG_DECL)
{
@@ -138,10 +142,11 @@ namespace TAO
// Obtain a connection.
this->transport_ =
- conn_reg->get_connector (ep)->connect (this,
- ep,
- max_wait_time
- ACE_ENV_ARG_PARAMETER);
+ conn_reg->get_connector (desc->endpoint ())->connect (
+ this,
+ desc,
+ max_wait_time
+ ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (false);
// A timeout error occurred
@@ -176,4 +181,17 @@ namespace TAO
return is_conn_timeout;
}
+
+ void
+ Profile_Transport_Resolver::init_inconsistent_policies (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ ACE_NEW_THROW_EX (this->inconsistent_policies_,
+ CORBA::PolicyList (0),
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ }
}
diff --git a/TAO/tao/Profile_Transport_Resolver.h b/TAO/tao/Profile_Transport_Resolver.h
index 7e1fde2c694..79ee4951eb6 100644
--- a/TAO/tao/Profile_Transport_Resolver.h
+++ b/TAO/tao/Profile_Transport_Resolver.h
@@ -29,13 +29,16 @@ class TAO_Profile;
class TAO_Transport;
class TAO_Endpoint;
class ACE_Time_Value;
+class TAO_Transport_Descriptor_Interface;
namespace CORBA
{
class SystemException;
class Environment;
class Object;
+ class PolicyList;
}
+
namespace TAO
{
class Synch_Twoway_Invocation;
@@ -100,10 +103,17 @@ namespace TAO
/// This is a callback method used by the endpoint selectors, to
/// delegate the responsibility of reserving a transport from the
/// connection cache for this invocation.
- bool try_connect (TAO_Endpoint *,
+ bool try_connect (TAO_Transport_Descriptor_Interface *desc,
ACE_Time_Value *val
ACE_ENV_ARG_DECL);
+ /// Intialize the inconsistent policy list that this object has
+ /// cached.
+ void init_inconsistent_policies (ACE_ENV_SINGLE_ARG_DECL)
+ ACE_THROW_SPEC ((CORBA::SystemException));
+
+ CORBA::PolicyList *inconsistent_policies (void) const;
+
private:
/// Helper method to access get the connection timeout from the
@@ -126,6 +136,26 @@ namespace TAO
/// Has the transport been idled?
mutable bool is_released_;
+
+ /// List of inconsistent policies
+ /**
+ * If current effective policies cause the invocation to raise
+ * CORBA::INV_POLICY exception, the conflicting/problematic policies
+ * are stored in this list. This is used by \param
+ * Object::_validate_connection method to inform clients about
+ * causes of invocation failure.
+ * @par
+ * Conflicting policies are only stored in this list if \param
+ * init_inconsistent_policies method has been called prior to the
+ * beginning of invocation. This saves extra work of conflicting
+ * policies 'logging' when it's not needed.
+ *
+ * @NOTE: We don't use _var with a reason. Using _var would
+ * involve including the header file for atleast
+ * Policy_ForwardC.h, and that is what we precisely want to
+ * avoid.
+ */
+ CORBA::PolicyList *inconsistent_policies_;
};
} // TAO namespace end
diff --git a/TAO/tao/Profile_Transport_Resolver.inl b/TAO/tao/Profile_Transport_Resolver.inl
index 8d653e1adce..b5461a23800 100644
--- a/TAO/tao/Profile_Transport_Resolver.inl
+++ b/TAO/tao/Profile_Transport_Resolver.inl
@@ -31,4 +31,10 @@ namespace TAO
{
this->is_released_ = true;
}
+
+ ACE_INLINE CORBA::PolicyList *
+ Profile_Transport_Resolver::inconsistent_policies (void) const
+ {
+ return this->inconsistent_policies_;
+ }
}
diff --git a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp
index db5f2d78949..8d01561c8f5 100644
--- a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp
+++ b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.cpp
@@ -33,6 +33,12 @@ RT_Endpoint_Selector_Factory::get_selector (TAO_GIOP_Invocation *
return this->rt_invocation_endpoint_selector_;
}
+TAO_Invocation_Endpoint_Selector *
+RT_Endpoint_Selector_Factory::get_selector (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
+{
+ return this->rt_invocation_endpoint_selector_;
+}
+
// ****************************************************************
ACE_STATIC_SVC_DEFINE (RT_Endpoint_Selector_Factory,
diff --git a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h
index 5a680d9f451..581596dde62 100644
--- a/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h
+++ b/TAO/tao/RTCORBA/RT_Endpoint_Selector_Factory.h
@@ -59,8 +59,12 @@ public:
/// Get an Invocation's endpoint selection strategy and
/// initialize the endpoint selection state instance.
- virtual TAO_Invocation_Endpoint_Selector *get_selector (TAO_GIOP_Invocation *invocation
- ACE_ENV_ARG_DECL);
+ virtual TAO_Invocation_Endpoint_Selector *get_selector (
+ TAO_GIOP_Invocation *invocation
+ ACE_ENV_ARG_DECL);
+
+ virtual TAO_Invocation_Endpoint_Selector *get_selector (
+ ACE_ENV_SINGLE_ARG_DECL);
private:
TAO_RT_Invocation_Endpoint_Selector *rt_invocation_endpoint_selector_;
diff --git a/TAO/tao/RTCORBA/RT_Endpoint_Utils.cpp b/TAO/tao/RTCORBA/RT_Endpoint_Utils.cpp
index 349dc21255e..216606c262a 100644
--- a/TAO/tao/RTCORBA/RT_Endpoint_Utils.cpp
+++ b/TAO/tao/RTCORBA/RT_Endpoint_Utils.cpp
@@ -1,4 +1,5 @@
#include "RT_Endpoint_Utils.h"
+#include "tao/Profile_Transport_Resolver.h"
#if defined (TAO_HAS_CORBA_MESSAGING) && TAO_HAS_CORBA_MESSAGING != 0
@@ -43,17 +44,56 @@ TAO_RT_Endpoint_Utils::priority_bands_policy (TAO_GIOP_Invocation *invocation
}
CORBA::Policy *
+TAO_RT_Endpoint_Utils::priority_bands_policy (TAO::Profile_Transport_Resolver &r
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Policy *bands_policy =
+ CORBA::Policy::_nil ();
+
+ TAO_RT_Stub *rt_stub =
+ dynamic_cast <TAO_RT_Stub *> (r.stub ());
+
+ ACE_TRY
+ {
+ bands_policy =
+ rt_stub->effective_priority_banded_connection (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCH (CORBA::INV_POLICY, ex)
+ {
+ if (r.inconsistent_policies ())
+ {
+ CORBA::PolicyList *p =
+ r.inconsistent_policies ();
+ p->length (1);
+ (*p)[0u] =
+ rt_stub->priority_banded_connection ();
+ }
+ ACE_RE_THROW;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (CORBA::Policy::_nil ());
+
+ return bands_policy;
+}
+
+/*static*/ CORBA::Policy *
TAO_RT_Endpoint_Utils::client_protocol_policy (TAO_GIOP_Invocation *invocation
ACE_ENV_ARG_DECL)
{
+ CORBA::Policy *retval = 0;
+
TAO_RT_Stub *rt_stub =
- ACE_dynamic_cast (TAO_RT_Stub *, invocation->stub ());
+ dynamic_cast <TAO_RT_Stub *> (invocation->stub ());
+
+ if (rt_stub == 0)
+ return 0;
- CORBA::Policy *retval = 0;
ACE_TRY
{
- retval = rt_stub->effective_client_protocol (ACE_ENV_SINGLE_ARG_PARAMETER);
- ACE_TRY_CHECK;
+ retval =
+ rt_stub->effective_client_protocol (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
}
ACE_CATCH (CORBA::INV_POLICY, ex)
{
@@ -71,4 +111,41 @@ TAO_RT_Endpoint_Utils::client_protocol_policy (TAO_GIOP_Invocation *invocation
return retval;
}
+/*static*/ CORBA::Policy *
+TAO_RT_Endpoint_Utils::client_protocol_policy (
+ TAO::Profile_Transport_Resolver &r
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Policy *retval = 0;
+
+ TAO_RT_Stub *rt_stub =
+ dynamic_cast <TAO_RT_Stub *> (r.stub ());
+
+ if (rt_stub == 0)
+ return 0;
+
+ ACE_TRY
+ {
+ retval =
+ rt_stub->effective_client_protocol (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ ACE_CATCH (CORBA::INV_POLICY, ex)
+ {
+ if (r.inconsistent_policies ())
+ {
+ CORBA::PolicyList *p =
+ r.inconsistent_policies ();
+ p->length (1);
+ (*p)[0u] =
+ rt_stub->client_protocol ();
+ }
+ ACE_RE_THROW;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (CORBA::Policy::_nil ());
+
+ return retval;
+}
+
#endif /* TAO_HAS_CORBA_MESSAGING && TAO_HAS_CORBA_MESSAGING != 0 */
diff --git a/TAO/tao/RTCORBA/RT_Endpoint_Utils.h b/TAO/tao/RTCORBA/RT_Endpoint_Utils.h
index 1e8965df3eb..1b02d707897 100644
--- a/TAO/tao/RTCORBA/RT_Endpoint_Utils.h
+++ b/TAO/tao/RTCORBA/RT_Endpoint_Utils.h
@@ -29,6 +29,11 @@
class TAO_GIOP_Invocation;
+namespace TAO
+{
+ class Profile_Transport_Resolver;
+};
+
/**
* @class RT_Endpoint_Utils
*
@@ -41,9 +46,15 @@ public:
static CORBA::Policy *priority_bands_policy (TAO_GIOP_Invocation *invocation
ACE_ENV_ARG_DECL);
+ static CORBA::Policy *priority_bands_policy (TAO::Profile_Transport_Resolver &r
+ ACE_ENV_ARG_DECL);
+
static CORBA::Policy *client_protocol_policy (TAO_GIOP_Invocation *invocation
ACE_ENV_ARG_DECL);
+ static CORBA::Policy *client_protocol_policy (TAO::Profile_Transport_Resolver &r
+ ACE_ENV_ARG_DECL);
+
private:
/// ctor.
TAO_RT_Endpoint_Utils ();
diff --git a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp
index 0c478241fd1..c7d36ca4e1e 100644
--- a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp
+++ b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.cpp
@@ -4,17 +4,19 @@
#include "RT_Invocation_Endpoint_Selectors.i"
#endif /* __ACE_INLINE__ */
-#include "tao/Invocation.h"
+
#include "RT_Policy_i.h"
-#include "tao/Stub.h"
-#include "tao/Profile.h"
-#include "tao/Endpoint.h"
#include "RT_Stub.h"
#include "RT_Transport_Descriptor.h"
#include "RT_Transport_Descriptor_Property.h"
#include "RT_Endpoint_Utils.h"
#include "RT_Protocols_Hooks.h"
#include "tao/debug.h"
+#include "tao/Profile.h"
+#include "tao/Endpoint.h"
+#include "tao/Invocation.h"
+#include "tao/Profile_Transport_Resolver.h"
+#include "tao/ORB_Core.h"
ACE_RCSID (RTCORBA,
@@ -66,6 +68,55 @@ TAO_RT_Invocation_Endpoint_Selector::select_endpoint (
}
void
+TAO_RT_Invocation_Endpoint_Selector::select_endpoint (
+ TAO::Profile_Transport_Resolver *r,
+ ACE_Time_Value *val
+ ACE_ENV_ARG_DECL)
+{
+ if (r == 0)
+ ACE_THROW (CORBA::INTERNAL ());
+
+ CORBA::Policy_var client_protocol_policy_base =
+ TAO_RT_Endpoint_Utils::client_protocol_policy (*r
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (client_protocol_policy_base.ptr () == 0)
+ {
+ this->TAO_Default_Endpoint_Selector::select_endpoint (
+ r,
+ val
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+ else
+ {
+ RTCORBA::ClientProtocolPolicy_var client_protocol_policy =
+ RTCORBA::ClientProtocolPolicy::_narrow (
+ client_protocol_policy_base.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ /// Cast to TAO_ClientProtocolPolicy
+ TAO_ClientProtocolPolicy *tao_client_protocol_policy =
+ ACE_static_cast (TAO_ClientProtocolPolicy *,
+ client_protocol_policy.in ());
+
+ /// Get the ProtocolList
+ RTCORBA::ProtocolList &client_protocols =
+ tao_client_protocol_policy->protocols_rep ();
+
+ this->select_endpoint_based_on_client_protocol_policy (
+ *r,
+ client_protocol_policy.in (),
+ client_protocols,
+ val
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+}
+
+void
TAO_RT_Invocation_Endpoint_Selector::select_endpoint_based_on_client_protocol_policy (
TAO_GIOP_Invocation *invocation,
RTCORBA::ClientProtocolPolicy_ptr client_protocol_policy,
@@ -134,6 +185,79 @@ TAO_RT_Invocation_Endpoint_Selector::select_endpoint_based_on_client_protocol_po
}
+void
+TAO_RT_Invocation_Endpoint_Selector::select_endpoint_based_on_client_protocol_policy (
+ TAO::Profile_Transport_Resolver &r,
+ RTCORBA::ClientProtocolPolicy_ptr client_protocol_policy,
+ RTCORBA::ProtocolList &client_protocols,
+ ACE_Time_Value *val
+ ACE_ENV_ARG_DECL)
+{
+ CORBA::Boolean valid_profile_found = 0;
+
+ // Even though cycling through all the protocols is the correct
+ // things to do to find a match, starting from the start of the
+ // profile list is not. In addition, this code is also ignoring the
+ // forwarded reference (if it exists). This behavior is caused by
+ // problems with the profile management in TAO which are documented
+ // in bugzilla bugs 1237, 1238, and 1239. Once the above problems
+ // are fixed, this behavior should be fixed to do the right thing.
+ for (CORBA::ULong protocol_index = 0;
+ protocol_index < client_protocols.length ();
+ ++protocol_index)
+ {
+ // Find the profiles that match the current protocol.
+ TAO_Profile *profile = 0;
+ TAO_MProfile &mprofile = r.stub ()->base_profiles ();
+
+ for (TAO_PHandle i = 0;
+ i < mprofile.profile_count ();
+ ++i)
+ {
+ profile = mprofile.get_profile (i);
+
+ if (profile->tag () == client_protocols[protocol_index].protocol_type)
+ {
+ valid_profile_found = 1;
+
+ r.profile (profile);
+
+ int status =
+ this->endpoint_from_profile (r,
+ val
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+
+ if (status == 1)
+ return;
+ // @@ Else we should check for potential forwarding here.
+ }
+ }
+ }
+
+ // We have tried all the profiles specified in the client protocol
+ // policy with no success. Throw exception.
+ if (!valid_profile_found)
+ {
+ if (r.inconsistent_policies ())
+ {
+ CORBA::PolicyList *p =
+ r.inconsistent_policies ();
+
+ p->length (1);
+ (*p)[0u] =
+ CORBA::Policy::_duplicate (client_protocol_policy);
+ }
+ ACE_THROW (CORBA::INV_POLICY ());
+ }
+
+ // If we get here, we found at least one pertinent profile, but no
+ // usable endpoints.
+ ACE_THROW (CORBA::TRANSIENT (CORBA::OMGVMCID | 2,
+ CORBA::COMPLETED_NO));
+
+}
+
int
TAO_RT_Invocation_Endpoint_Selector::endpoint_from_profile (
TAO_GIOP_Invocation *invocation
@@ -341,3 +465,223 @@ TAO_RT_Invocation_Endpoint_Selector::endpoint_from_profile (
return 0;
}
+
+int
+TAO_RT_Invocation_Endpoint_Selector::endpoint_from_profile (
+ TAO::Profile_Transport_Resolver &r,
+ ACE_Time_Value *val
+ ACE_ENV_ARG_DECL)
+{
+ // Narrow to the RT Stub.
+ TAO_RT_Stub *rt_stub =
+ dynamic_cast <TAO_RT_Stub *> (r.stub ());
+
+ if (rt_stub == 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Unexpected error narrowing stub to TAO_RT_Stub"));
+
+ ACE_THROW_RETURN (CORBA::INTERNAL (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ EINVAL),
+ CORBA::COMPLETED_NO),
+ 0);
+ }
+
+ // Get the priority model policy.
+ CORBA::Policy_var priority_model_policy =
+ rt_stub->exposed_priority_model (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ // Get the bands policy.
+ CORBA::Policy_var bands_policy =
+ TAO_RT_Endpoint_Utils::priority_bands_policy (r
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ int all_endpoints_are_valid = 0;
+ int match_priority = 0;
+ int match_bands = 0;
+ CORBA::Short client_thread_priority = 0;
+ CORBA::Short min_priority = 0;
+ CORBA::Short max_priority = 0;
+
+ // If the priority model policy is not set.
+ if (priority_model_policy.ptr () == 0)
+ {
+ // Bands without priority model do not make sense.
+ if (bands_policy.ptr () != 0)
+ {
+ if (r.inconsistent_policies ())
+ {
+ CORBA::PolicyList *p =
+ r.inconsistent_policies ();
+
+ p->length (1);
+ (*p)[0u] =
+ CORBA::Policy::_duplicate (bands_policy.in ());
+ }
+ // Indicate error.
+ ACE_THROW_RETURN (CORBA::INV_POLICY (), 0);
+ }
+
+ // No priority model policy (and no bands policy): all endpoints
+ // are fair game.
+ all_endpoints_are_valid = 1;
+ }
+ // If the priority model policy is set.
+ else
+ {
+ // Get the protocol hooks.
+ TAO_Protocols_Hooks *protocol_hooks =
+ r.stub ()->orb_core ()->get_protocols_hooks (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+
+ CORBA::Short server_priority = 0;
+ CORBA::Boolean is_client_propagated = 0;
+
+ // Check the priority model policy to see if it is client
+ // propagated.
+ protocol_hooks->get_selector_hook (priority_model_policy.in (),
+ is_client_propagated,
+ server_priority);
+
+ if (!is_client_propagated)
+ {
+ // Server declared: all endpoints are fair game.
+ all_endpoints_are_valid = 1;
+ }
+ // Client propagated.
+ else
+ {
+ // Get client thread priority.
+ int status =
+ protocol_hooks->get_thread_CORBA_priority (
+ client_thread_priority // side effect
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (0);
+ if (status == -1)
+ {
+ ACE_THROW_RETURN (CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 1,
+ CORBA::COMPLETED_NO),
+ 0);
+ }
+
+ // If there are no bands.
+ if (bands_policy.ptr () == 0)
+ {
+ // Match the priority of the client thread with the
+ // endpoint.
+ match_priority = 1;
+ }
+ // There are bands.
+ else
+ {
+ // Check which band range we fall in.
+ int in_range = 0;
+ protocol_hooks->get_selector_bands_policy_hook (
+ bands_policy.in (),
+ client_thread_priority,
+ min_priority,
+ max_priority,
+ in_range);
+
+ // If priority doesn't fall into any of the bands.
+ if (!in_range)
+ {
+ if (r.inconsistent_policies ())
+ {
+ CORBA::PolicyList *p =
+ r.inconsistent_policies ();
+ p->length (2);
+ (*p)[0u] =
+ CORBA::Policy::_duplicate (bands_policy.in ());
+ (*p)[1u] =
+ CORBA::Policy::_duplicate (
+ priority_model_policy.in ());
+ }
+
+ // Indicate error.
+ ACE_THROW_RETURN (CORBA::INV_POLICY (),
+ 0);
+ }
+
+ // Match the priority of the band with the endpoint.
+ match_bands = 1;
+ }
+ }
+ }
+
+ TAO_Endpoint *ep =
+ r.profile ()->endpoint ();
+
+ while (ep != 0)
+ {
+ // Get the priority of the endpoint.
+ CORBA::Short endpoint_priority =
+ ep->priority ();
+
+ // If <all_endpoints_are_valid> or match the priority of the
+ // client thread or match the priority of the band or
+ // profile contains just one endpoint. This happens when:
+ // a) we are talking to a nonTAO server (which doesn't have
+ // the concept of multiple endpoints per profile)
+ // or
+ // b) we have TAO server with a non-lane threadpool, in which
+ // case there is only one acceptor
+ // In both cases we should use the endpoint regardless of its priority.
+
+ if (all_endpoints_are_valid ||
+ (match_priority &&
+ client_thread_priority == endpoint_priority) ||
+ (match_bands &&
+ endpoint_priority <= max_priority &&
+ endpoint_priority >= min_priority) ||
+ r.profile ()->endpoint_count () == 1 &&
+ endpoint_priority == TAO_INVALID_PRIORITY)
+ {
+ TAO_RT_Transport_Descriptor_Private_Connection_Property
+ private_connection_descriptor_property;
+
+ TAO_RT_Transport_Descriptor_Banded_Connection_Property
+ banded_connection_descriptor_property;
+
+ TAO_RT_Transport_Descriptor
+ rt_transport_descriptor (ep);
+
+ if (rt_stub->private_connection ())
+ {
+ private_connection_descriptor_property.init
+ (ACE_static_cast (long,
+ ACE_reinterpret_cast (ptrdiff_t,
+ r.stub ())));
+ rt_transport_descriptor.insert
+ (&private_connection_descriptor_property);
+ }
+
+ if (match_bands)
+ {
+ banded_connection_descriptor_property.init
+ (min_priority, max_priority);
+
+ rt_transport_descriptor.insert
+ (&banded_connection_descriptor_property);
+ }
+
+ bool status =
+ r.try_connect (&rt_transport_descriptor,
+ val
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (-1);
+
+ // Check if the invocation has completed.
+ if (status == true)
+ return 1;
+ }
+
+ // Go to the next endpoint in this profile.
+ ep = r.profile ()->endpoint ()->next();
+ }
+
+ return 0;
+}
diff --git a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h
index a3e8ea2b307..ddbad4d6d28 100644
--- a/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h
+++ b/TAO/tao/RTCORBA/RT_Invocation_Endpoint_Selectors.h
@@ -51,6 +51,11 @@ public:
void select_endpoint (TAO_GIOP_Invocation *invocation
ACE_ENV_ARG_DECL);
+ void select_endpoint (TAO::Profile_Transport_Resolver *r,
+ ACE_Time_Value *val
+ ACE_ENV_ARG_DECL);
+
+protected:
void select_endpoint_based_on_client_protocol_policy (TAO_GIOP_Invocation *invocation,
RTCORBA::ClientProtocolPolicy_ptr client_protocol_policy,
RTCORBA::ProtocolList &protocols
@@ -58,6 +63,16 @@ public:
int endpoint_from_profile (TAO_GIOP_Invocation *invocation
ACE_ENV_ARG_DECL);
+
+ void select_endpoint_based_on_client_protocol_policy (TAO::Profile_Transport_Resolver &r,
+ RTCORBA::ClientProtocolPolicy_ptr client_protocol_policy,
+ RTCORBA::ProtocolList &protocols,
+ ACE_Time_Value *v
+ ACE_ENV_ARG_DECL);
+
+ int endpoint_from_profile (TAO::Profile_Transport_Resolver &r,
+ ACE_Time_Value *v
+ ACE_ENV_ARG_DECL);
};
#if defined (__ACE_INLINE__)
diff --git a/TAO/tao/RTPortableServer/RTPortableServerC.h b/TAO/tao/RTPortableServer/RTPortableServerC.h
index 21b62d7bab8..49374a20a10 100644
--- a/TAO/tao/RTPortableServer/RTPortableServerC.h
+++ b/TAO/tao/RTPortableServer/RTPortableServerC.h
@@ -68,31 +68,29 @@
TAO_NAMESPACE RTPortableServer
{
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_interface.cpp:567
#if !defined (_RTPORTABLESERVER_POA__ODDS_N_ENDS_CH_)
#define _RTPORTABLESERVER_POA__ODDS_N_ENDS_CH_
-
+
class POA;
typedef POA *POA_ptr;
struct tao_POA_life;
-
+
typedef
TAO_Objref_Var_T<
- POA,
- tao_POA_life
+ POA
>
POA_var;
-
+
typedef
TAO_Objref_Out_T<
- POA,
- tao_POA_life
+ POA
>
POA_out;
-
+
struct TAO_RTPortableServer_Export tao_POA_life
{
static POA_ptr tao_duplicate (POA_ptr);
@@ -103,7 +101,7 @@ TAO_NAMESPACE RTPortableServer
TAO_OutputCDR &
);
};
-
+
struct TAO_RTPortableServer_Export tao_POA_cast
{
static POA_ptr tao_narrow (
@@ -114,13 +112,13 @@ TAO_NAMESPACE RTPortableServer
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:54
#if !defined (_RTPORTABLESERVER_POA_CH_)
#define _RTPORTABLESERVER_POA_CH_
-
+
class TAO_RTPortableServer_Export POA
: public virtual PortableServer::POA
{
@@ -128,30 +126,30 @@ TAO_NAMESPACE RTPortableServer
typedef POA_ptr _ptr_type;
typedef POA_var _var_type;
static int _tao_class_id;
-
+
// The static operations.
static POA_ptr _duplicate (POA_ptr obj);
-
+
static POA_ptr _narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static POA_ptr _unchecked_narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static POA_ptr _nil (void)
{
return (POA_ptr)0;
}
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46
-
+
virtual CORBA::Object_ptr create_reference_with_priority (
const char * intf,
RTCORBA::Priority priority
@@ -161,10 +159,10 @@ TAO_NAMESPACE RTPortableServer
CORBA::SystemException
, PortableServer::POA::WrongPolicy
)) = 0;
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46
-
+
virtual CORBA::Object_ptr create_reference_with_id_and_priority (
const PortableServer::ObjectId & oid,
const char * intf,
@@ -175,10 +173,10 @@ TAO_NAMESPACE RTPortableServer
CORBA::SystemException
, PortableServer::POA::WrongPolicy
)) = 0;
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::PortableServer::ObjectId * activate_object_with_priority (
PortableServer::Servant p_servant,
RTCORBA::Priority priority
@@ -189,10 +187,10 @@ TAO_NAMESPACE RTPortableServer
, PortableServer::POA::ServantAlreadyActive
, PortableServer::POA::WrongPolicy
)) = 0;
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_operation/operation_ch.cpp:46
-
+
virtual void activate_object_with_id_and_priority (
const PortableServer::ObjectId & oid,
PortableServer::Servant p_servant,
@@ -205,29 +203,29 @@ TAO_NAMESPACE RTPortableServer
, PortableServer::POA::ObjectAlreadyActive
, PortableServer::POA::WrongPolicy
)) = 0;
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_ch.cpp:211
-
+
virtual void *_tao_QueryInterface (ptrdiff_t type);
-
+
virtual const char* _interface_repository_id (void) const;
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
-
+
protected:
POA (void);
virtual ~POA (void);
-
+
private:
POA (const POA &);
void operator= (const POA &);
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_typecode/typecode_decl.cpp:44
-
+
TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_POA;
// TAO_IDL - Generated from
@@ -272,4 +270,3 @@ TAO_RTPortableServer_Export CORBA::Boolean operator>>= (const CORBA::Any &, RTPo
#include /**/ "ace/post.h"
#endif /* ifndef */
-
diff --git a/TAO/tao/RTScheduling/RTSchedulerC.h b/TAO/tao/RTScheduling/RTSchedulerC.h
index 8ad7e0c1741..cda6997860e 100644
--- a/TAO/tao/RTScheduling/RTSchedulerC.h
+++ b/TAO/tao/RTScheduling/RTSchedulerC.h
@@ -92,31 +92,29 @@ TAO_NAMESPACE_CLOSE // module CORBA
TAO_NAMESPACE RTScheduling
{
-
+
// TAO_IDL - Generated from
// be/be_interface.cpp:570
#if !defined (_RTSCHEDULING_THREADACTION__ODDS_N_ENDS_CH_)
#define _RTSCHEDULING_THREADACTION__ODDS_N_ENDS_CH_
-
+
class ThreadAction;
typedef ThreadAction *ThreadAction_ptr;
struct tao_ThreadAction_life;
-
+
typedef
TAO_Objref_Var_T<
- ThreadAction,
- tao_ThreadAction_life
+ ThreadAction
>
ThreadAction_var;
-
+
typedef
TAO_Objref_Out_T<
- ThreadAction,
- tao_ThreadAction_life
+ ThreadAction
>
ThreadAction_out;
-
+
struct TAO_RTScheduler_Export tao_ThreadAction_life
{
static ThreadAction_ptr tao_duplicate (ThreadAction_ptr);
@@ -127,7 +125,7 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
);
};
-
+
struct TAO_RTScheduler_Export tao_ThreadAction_cast
{
static ThreadAction_ptr tao_narrow (
@@ -138,13 +136,13 @@ TAO_NAMESPACE RTScheduling
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:50
#if !defined (_RTSCHEDULING_THREADACTION_CH_)
#define _RTSCHEDULING_THREADACTION_CH_
-
+
class TAO_RTScheduler_Export ThreadAction
: public virtual CORBA::Object
{
@@ -152,30 +150,30 @@ TAO_NAMESPACE RTScheduling
typedef ThreadAction_ptr _ptr_type;
typedef ThreadAction_var _var_type;
static int _tao_class_id;
-
+
// The static operations.
static ThreadAction_ptr _duplicate (ThreadAction_ptr obj);
-
+
static ThreadAction_ptr _narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static ThreadAction_ptr _unchecked_narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static ThreadAction_ptr _nil (void)
{
return (ThreadAction_ptr)0;
}
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void _cxx_do (
CORBA::VoidData data
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -183,55 +181,53 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:207
-
+
virtual void *_tao_QueryInterface (ptrdiff_t type);
-
+
virtual const char* _interface_repository_id (void) const;
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
-
+
protected:
ThreadAction (void);
virtual ~ThreadAction (void);
-
+
private:
ThreadAction (const ThreadAction &);
void operator= (const ThreadAction &);
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_ThreadAction;
-
+
// TAO_IDL - Generated from
// be/be_interface.cpp:570
#if !defined (_RTSCHEDULING_DISTRIBUTABLETHREAD__ODDS_N_ENDS_CH_)
#define _RTSCHEDULING_DISTRIBUTABLETHREAD__ODDS_N_ENDS_CH_
-
+
class DistributableThread;
typedef DistributableThread *DistributableThread_ptr;
struct tao_DistributableThread_life;
-
+
typedef
TAO_Objref_Var_T<
- DistributableThread,
- tao_DistributableThread_life
+ DistributableThread
>
DistributableThread_var;
-
+
typedef
TAO_Objref_Out_T<
- DistributableThread,
- tao_DistributableThread_life
+ DistributableThread
>
DistributableThread_out;
-
+
struct TAO_RTScheduler_Export tao_DistributableThread_life
{
static DistributableThread_ptr tao_duplicate (DistributableThread_ptr);
@@ -242,7 +238,7 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
);
};
-
+
struct TAO_RTScheduler_Export tao_DistributableThread_cast
{
static DistributableThread_ptr tao_narrow (
@@ -253,13 +249,13 @@ TAO_NAMESPACE RTScheduling
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:50
#if !defined (_RTSCHEDULING_DISTRIBUTABLETHREAD_CH_)
#define _RTSCHEDULING_DISTRIBUTABLETHREAD_CH_
-
+
class TAO_RTScheduler_Export DistributableThread
: public virtual CORBA::Object
{
@@ -267,111 +263,109 @@ TAO_NAMESPACE RTScheduling
typedef DistributableThread_ptr _ptr_type;
typedef DistributableThread_var _var_type;
static int _tao_class_id;
-
+
// The static operations.
static DistributableThread_ptr _duplicate (DistributableThread_ptr obj);
-
+
static DistributableThread_ptr _narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static DistributableThread_ptr _unchecked_narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static DistributableThread_ptr _nil (void)
{
return (DistributableThread_ptr)0;
}
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// be/be_visitor_enum/enum_ch.cpp:57
-
+
enum DT_State
{
ACTIVE,
CANCELLED
};
-
+
typedef DT_State &DT_State_out;
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
static ::CORBA::TypeCode_ptr _tc_DT_State;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void cancel (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::RTScheduling::DistributableThread::DT_State state (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:207
-
+
virtual void *_tao_QueryInterface (ptrdiff_t type);
-
+
virtual const char* _interface_repository_id (void) const;
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
-
+
protected:
DistributableThread (void);
virtual ~DistributableThread (void);
-
+
private:
DistributableThread (const DistributableThread &);
void operator= (const DistributableThread &);
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_DistributableThread;
-
+
// TAO_IDL - Generated from
// be/be_interface.cpp:570
#if !defined (_RTSCHEDULING_CURRENT__ODDS_N_ENDS_CH_)
#define _RTSCHEDULING_CURRENT__ODDS_N_ENDS_CH_
-
+
class Current;
typedef Current *Current_ptr;
struct tao_Current_life;
-
+
typedef
TAO_Objref_Var_T<
- Current,
- tao_Current_life
+ Current
>
Current_var;
-
+
typedef
TAO_Objref_Out_T<
- Current,
- tao_Current_life
+ Current
>
Current_out;
-
+
struct TAO_RTScheduler_Export tao_Current_life
{
static Current_ptr tao_duplicate (Current_ptr);
@@ -382,7 +376,7 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
);
};
-
+
struct TAO_RTScheduler_Export tao_Current_cast
{
static Current_ptr tao_narrow (
@@ -393,7 +387,7 @@ TAO_NAMESPACE RTScheduling
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:50
@@ -403,29 +397,29 @@ TAO_NAMESPACE RTScheduling
// TAO_IDL - Generated from
// C:\ACE_wrappers\TAO\TAO_IDL\be\be_interface.cpp:571
-
+
class TAO_RTScheduler_Export Current_var : public TAO_Base_var
{
public:
Current_var (void); // default constructor
- Current_var (Current_ptr p) : ptr_ (p) {}
+ Current_var (Current_ptr p) : ptr_ (p) {}
Current_var (const Current_var &); // copy constructor
~Current_var (void); // destructor
-
+
Current_var &operator= (Current_ptr);
Current_var &operator= (const Current_var &);
Current_ptr operator-> (void) const;
-
+
operator const Current_ptr &() const;
operator Current_ptr &();
- // in, inout, out, _retn
+ // in, inout, out, _retn
Current_ptr in (void) const;
Current_ptr &inout (void);
Current_ptr &out (void);
Current_ptr _retn (void);
Current_ptr ptr (void) const;
-
+
// Hooks used by template sequence and object manager classes
// for non-defined forward declared interfaces.
static Current_ptr tao_duplicate (Current_ptr);
@@ -436,7 +430,7 @@ TAO_NAMESPACE RTScheduling
ACE_ENV_ARG_DECL_NOT_USED
);
static CORBA::Object * tao_upcast (void *);
-
+
private:
Current_ptr ptr_;
// Unimplemented - prevents widening assignment.
@@ -448,7 +442,7 @@ TAO_NAMESPACE RTScheduling
#if !defined (_RTSCHEDULING_CURRENT_CH_)
#define _RTSCHEDULING_CURRENT_CH_
-
+
class TAO_RTScheduler_Export Current
: public virtual RTCORBA::Current
{
@@ -456,30 +450,30 @@ TAO_NAMESPACE RTScheduling
typedef Current_ptr _ptr_type;
typedef Current_var _var_type;
static int _tao_class_id;
-
+
// The static operations.
static Current_ptr _duplicate (Current_ptr obj);
-
+
static Current_ptr _narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static Current_ptr _unchecked_narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static Current_ptr _nil (void)
{
return (Current_ptr)0;
}
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::RTScheduling::DistributableThread_ptr spawn (
RTScheduling::ThreadAction_ptr start,
CORBA::VoidData data,
@@ -493,25 +487,25 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_exception/exception_ch.cpp:51
#if !defined (_RTSCHEDULING_CURRENT_UNSUPPORTED_SCHEDULING_DISCIPLINE_CH_)
#define _RTSCHEDULING_CURRENT_UNSUPPORTED_SCHEDULING_DISCIPLINE_CH_
-
+
class TAO_RTScheduler_Export UNSUPPORTED_SCHEDULING_DISCIPLINE : public CORBA::UserException
{
public:
-
+
UNSUPPORTED_SCHEDULING_DISCIPLINE (void);
UNSUPPORTED_SCHEDULING_DISCIPLINE (const UNSUPPORTED_SCHEDULING_DISCIPLINE &);
~UNSUPPORTED_SCHEDULING_DISCIPLINE (void);
UNSUPPORTED_SCHEDULING_DISCIPLINE &operator= (const UNSUPPORTED_SCHEDULING_DISCIPLINE &);
-
+
static void _tao_any_destructor (void *);
-
+
static UNSUPPORTED_SCHEDULING_DISCIPLINE *_downcast (CORBA::Exception *);
static CORBA::Exception *_alloc (void);
@@ -523,28 +517,28 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
ACE_ENV_ARG_DECL_NOT_USED
) const;
-
+
virtual void _tao_decode (
TAO_InputCDR &
ACE_ENV_ARG_DECL_NOT_USED
);
-
+
// TAO_IDL - Generated from
// be/be_visitor_exception/exception_ch.cpp:125
-
+
virtual CORBA::TypeCode_ptr _type (void) const;
};
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
static ::CORBA::TypeCode_ptr _tc_UNSUPPORTED_SCHEDULING_DISCIPLINE;
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void begin_scheduling_segment (
const char * name,
CORBA::Policy_ptr sched_param,
@@ -555,10 +549,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, RTScheduling::Current::UNSUPPORTED_SCHEDULING_DISCIPLINE
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void update_scheduling_segment (
const char * name,
CORBA::Policy_ptr sched_param,
@@ -569,10 +563,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, RTScheduling::Current::UNSUPPORTED_SCHEDULING_DISCIPLINE
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void end_scheduling_segment (
const char * name
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -580,22 +574,22 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_sequence/sequence_ch.cpp:91
#if !defined (_RTSCHEDULING_CURRENT_IDTYPE_CH_)
#define _RTSCHEDULING_CURRENT_IDTYPE_CH_
-
+
class IdType;
-
+
typedef
TAO_FixedSeq_Var_T<
IdType,
CORBA::Octet
>
IdType_var;
-
+
typedef
TAO_Seq_Out_T<
IdType,
@@ -603,7 +597,7 @@ TAO_NAMESPACE RTScheduling
CORBA::Octet
>
IdType_out;
-
+
class TAO_RTScheduler_Export IdType
: public
TAO_Unbounded_Sequence<
@@ -616,14 +610,14 @@ TAO_NAMESPACE RTScheduling
IdType (
CORBA::ULong max,
CORBA::ULong length,
- CORBA::Octet* buffer,
+ CORBA::Octet* buffer,
CORBA::Boolean release = 0
);
IdType (const IdType &);
~IdType (void);
-
+
static void _tao_any_destructor (void *);
-
+
typedef IdType_var _var_type;
#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)
@@ -636,25 +630,25 @@ TAO_NAMESPACE RTScheduling
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
static ::CORBA::TypeCode_ptr _tc_IdType;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::RTScheduling::Current::IdType * id (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::RTScheduling::DistributableThread_ptr lookup (
const RTScheduling::Current::IdType & id
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -662,42 +656,42 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::CORBA::Policy_ptr scheduling_parameter (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::CORBA::Policy_ptr implicit_scheduling_parameter (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_sequence/sequence_ch.cpp:91
#if !defined (_RTSCHEDULING_CURRENT_NAMELIST_CH_)
#define _RTSCHEDULING_CURRENT_NAMELIST_CH_
-
+
class NameList;
-
+
typedef
TAO_MngSeq_Var_T<
NameList,
TAO_SeqElem_String_Manager
>
NameList_var;
-
+
typedef
TAO_MngSeq_Out_T<
NameList,
@@ -705,7 +699,7 @@ TAO_NAMESPACE RTScheduling
TAO_SeqElem_String_Manager
>
NameList_out;
-
+
class TAO_RTScheduler_Export NameList
: public
TAO_Unbounded_String_Sequence
@@ -716,82 +710,80 @@ TAO_NAMESPACE RTScheduling
NameList (
CORBA::ULong max,
CORBA::ULong length,
- char ** buffer,
+ char ** buffer,
CORBA::Boolean release = 0
);
NameList (const NameList &);
~NameList (void);
-
+
static void _tao_any_destructor (void *);
-
+
typedef NameList_var _var_type;
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
static ::CORBA::TypeCode_ptr _tc_NameList;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::RTScheduling::Current::NameList * current_scheduling_segment_names (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:207
-
+
virtual void *_tao_QueryInterface (ptrdiff_t type);
-
+
virtual const char* _interface_repository_id (void) const;
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
-
+
protected:
Current (void);
virtual ~Current (void);
-
+
private:
Current (const Current &);
void operator= (const Current &);
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_Current;
-
+
// TAO_IDL - Generated from
// be/be_interface.cpp:570
#if !defined (_RTSCHEDULING_RESOURCEMANAGER__ODDS_N_ENDS_CH_)
#define _RTSCHEDULING_RESOURCEMANAGER__ODDS_N_ENDS_CH_
-
+
class ResourceManager;
typedef ResourceManager *ResourceManager_ptr;
struct tao_ResourceManager_life;
-
+
typedef
TAO_Objref_Var_T<
- ResourceManager,
- tao_ResourceManager_life
+ ResourceManager
>
ResourceManager_var;
-
+
typedef
TAO_Objref_Out_T<
- ResourceManager,
- tao_ResourceManager_life
+ ResourceManager
>
ResourceManager_out;
-
+
struct TAO_RTScheduler_Export tao_ResourceManager_life
{
static ResourceManager_ptr tao_duplicate (ResourceManager_ptr);
@@ -802,7 +794,7 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
);
};
-
+
struct TAO_RTScheduler_Export tao_ResourceManager_cast
{
static ResourceManager_ptr tao_narrow (
@@ -813,13 +805,13 @@ TAO_NAMESPACE RTScheduling
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:50
#if !defined (_RTSCHEDULING_RESOURCEMANAGER_CH_)
#define _RTSCHEDULING_RESOURCEMANAGER_CH_
-
+
class TAO_RTScheduler_Export ResourceManager
: public virtual RTCORBA::Mutex
{
@@ -827,75 +819,73 @@ TAO_NAMESPACE RTScheduling
typedef ResourceManager_ptr _ptr_type;
typedef ResourceManager_var _var_type;
static int _tao_class_id;
-
+
// The static operations.
static ResourceManager_ptr _duplicate (ResourceManager_ptr obj);
-
+
static ResourceManager_ptr _narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static ResourceManager_ptr _unchecked_narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static ResourceManager_ptr _nil (void)
{
return (ResourceManager_ptr)0;
}
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:207
-
+
virtual void *_tao_QueryInterface (ptrdiff_t type);
-
+
virtual const char* _interface_repository_id (void) const;
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
-
+
protected:
ResourceManager (void);
virtual ~ResourceManager (void);
-
+
private:
ResourceManager (const ResourceManager &);
void operator= (const ResourceManager &);
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_ResourceManager;
-
+
// TAO_IDL - Generated from
// be/be_interface.cpp:570
#if !defined (_RTSCHEDULING_SCHEDULER__ODDS_N_ENDS_CH_)
#define _RTSCHEDULING_SCHEDULER__ODDS_N_ENDS_CH_
-
+
class Scheduler;
typedef Scheduler *Scheduler_ptr;
struct tao_Scheduler_life;
-
+
typedef
TAO_Objref_Var_T<
- Scheduler,
- tao_Scheduler_life
+ Scheduler
>
Scheduler_var;
-
+
typedef
TAO_Objref_Out_T<
- Scheduler,
- tao_Scheduler_life
+ Scheduler
>
Scheduler_out;
-
+
struct TAO_RTScheduler_Export tao_Scheduler_life
{
static Scheduler_ptr tao_duplicate (Scheduler_ptr);
@@ -906,7 +896,7 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
);
};
-
+
struct TAO_RTScheduler_Export tao_Scheduler_cast
{
static Scheduler_ptr tao_narrow (
@@ -917,13 +907,13 @@ TAO_NAMESPACE RTScheduling
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:50
#if !defined (_RTSCHEDULING_SCHEDULER_CH_)
#define _RTSCHEDULING_SCHEDULER_CH_
-
+
class TAO_RTScheduler_Export Scheduler
: public virtual CORBA::Object
{
@@ -931,45 +921,45 @@ TAO_NAMESPACE RTScheduling
typedef Scheduler_ptr _ptr_type;
typedef Scheduler_var _var_type;
static int _tao_class_id;
-
+
// The static operations.
static Scheduler_ptr _duplicate (Scheduler_ptr obj);
-
+
static Scheduler_ptr _narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static Scheduler_ptr _unchecked_narrow (
CORBA::Object_ptr obj
ACE_ENV_ARG_DECL_WITH_DEFAULTS
);
-
+
static Scheduler_ptr _nil (void)
{
return (Scheduler_ptr)0;
}
-
+
static void _tao_any_destructor (void *);
-
+
// TAO_IDL - Generated from
// be/be_visitor_exception/exception_ch.cpp:51
#if !defined (_RTSCHEDULING_SCHEDULER_INCOMPATIBLE_SCHEDULING_DISCIPLINES_CH_)
#define _RTSCHEDULING_SCHEDULER_INCOMPATIBLE_SCHEDULING_DISCIPLINES_CH_
-
+
class TAO_RTScheduler_Export INCOMPATIBLE_SCHEDULING_DISCIPLINES : public CORBA::UserException
{
public:
-
+
INCOMPATIBLE_SCHEDULING_DISCIPLINES (void);
INCOMPATIBLE_SCHEDULING_DISCIPLINES (const INCOMPATIBLE_SCHEDULING_DISCIPLINES &);
~INCOMPATIBLE_SCHEDULING_DISCIPLINES (void);
INCOMPATIBLE_SCHEDULING_DISCIPLINES &operator= (const INCOMPATIBLE_SCHEDULING_DISCIPLINES &);
-
+
static void _tao_any_destructor (void *);
-
+
static INCOMPATIBLE_SCHEDULING_DISCIPLINES *_downcast (CORBA::Exception *);
static CORBA::Exception *_alloc (void);
@@ -981,38 +971,38 @@ TAO_NAMESPACE RTScheduling
TAO_OutputCDR &
ACE_ENV_ARG_DECL_NOT_USED
) const;
-
+
virtual void _tao_decode (
TAO_InputCDR &
ACE_ENV_ARG_DECL_NOT_USED
);
-
+
// TAO_IDL - Generated from
// be/be_visitor_exception/exception_ch.cpp:125
-
+
virtual CORBA::TypeCode_ptr _type (void) const;
};
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
static ::CORBA::TypeCode_ptr _tc_INCOMPATIBLE_SCHEDULING_DISCIPLINES;
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::CORBA::PolicyList * scheduling_policies (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void scheduling_policies (
const CORBA::PolicyList & scheduling_policies
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1020,30 +1010,30 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::CORBA::PolicyList * poa_policies (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual char * scheduling_discipline_name (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual ::RTScheduling::ResourceManager_ptr create_resource_manager (
const char * name,
CORBA::Policy_ptr scheduling_parameter
@@ -1052,10 +1042,10 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void set_scheduling_parameter (
PortableServer::Servant & resource,
const char * name,
@@ -1065,10 +1055,10 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void begin_new_scheduling_segment (
const RTScheduling::Current::IdType & guid,
const char * name,
@@ -1080,10 +1070,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, RTScheduling::Current::UNSUPPORTED_SCHEDULING_DISCIPLINE
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void begin_nested_scheduling_segment (
const RTScheduling::Current::IdType & guid,
const char * name,
@@ -1095,10 +1085,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, RTScheduling::Current::UNSUPPORTED_SCHEDULING_DISCIPLINE
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void update_scheduling_segment (
const RTScheduling::Current::IdType & guid,
const char * name,
@@ -1110,10 +1100,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, RTScheduling::Current::UNSUPPORTED_SCHEDULING_DISCIPLINE
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void end_scheduling_segment (
const RTScheduling::Current::IdType & guid,
const char * name
@@ -1122,10 +1112,10 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void end_nested_scheduling_segment (
const RTScheduling::Current::IdType & guid,
const char * name,
@@ -1135,10 +1125,10 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void send_request (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1147,10 +1137,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, PortableInterceptor::ForwardRequest
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void receive_request (
PortableInterceptor::ServerRequestInfo_ptr ri,
RTScheduling::Current::IdType_out guid,
@@ -1163,10 +1153,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, PortableInterceptor::ForwardRequest
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void send_reply (
PortableInterceptor::ServerRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1174,10 +1164,10 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void send_exception (
PortableInterceptor::ServerRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1186,10 +1176,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, PortableInterceptor::ForwardRequest
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void send_other (
PortableInterceptor::ServerRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1198,10 +1188,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, PortableInterceptor::ForwardRequest
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void receive_reply (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1209,10 +1199,10 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void receive_exception (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1221,10 +1211,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, PortableInterceptor::ForwardRequest
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void receive_other (
PortableInterceptor::ClientRequestInfo_ptr ri
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1233,10 +1223,10 @@ TAO_NAMESPACE RTScheduling
CORBA::SystemException
, PortableInterceptor::ForwardRequest
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_operation/operation_ch.cpp:46
-
+
virtual void cancel (
const RTScheduling::Current::IdType & guid
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -1244,29 +1234,29 @@ TAO_NAMESPACE RTScheduling
ACE_THROW_SPEC ((
CORBA::SystemException
)) = 0;
-
+
// TAO_IDL - Generated from
// be/be_visitor_interface/interface_ch.cpp:207
-
+
virtual void *_tao_QueryInterface (ptrdiff_t type);
-
+
virtual const char* _interface_repository_id (void) const;
virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
-
+
protected:
Scheduler (void);
virtual ~Scheduler (void);
-
+
private:
Scheduler (const Scheduler &);
void operator= (const Scheduler &);
};
#endif /* end #if !defined */
-
+
// TAO_IDL - Generated from
// be/be_visitor_typecode/typecode_decl.cpp:44
-
+
TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_Scheduler;
// TAO_IDL - Generated from
@@ -1375,4 +1365,3 @@ TAO_RTScheduler_Export CORBA::Boolean operator>>= (const CORBA::Any &, const RTS
#include /**/ "ace/post.h"
#endif /* ifndef */
-
diff --git a/TAO/tao/Remote_Invocation.cpp b/TAO/tao/Remote_Invocation.cpp
index 2fdb2e46130..ac51813b8c0 100644
--- a/TAO/tao/Remote_Invocation.cpp
+++ b/TAO/tao/Remote_Invocation.cpp
@@ -30,6 +30,22 @@ namespace TAO
Remote_Invocation::init_target_spec (TAO_Target_Specification &target_spec
ACE_ENV_ARG_DECL)
{
+
+ /**
+ * Mega hack for RTCORBA start. I don't think that
+ * PortableInterceptor would work here esp. for RTCORBA. PI needs
+ * to be improved to help our cause.
+ */
+ this->resolver_.stub ()->orb_core ()->service_context_list (
+ this->resolver_.stub (),
+ this->details_.request_service_context (),
+ 0
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK;
+ /**
+ * Mega hack for RTCORBA END
+ */
+
TAO_Profile *pfile =
this->resolver_.profile ();
diff --git a/TAO/tao/Synch_Invocation.cpp b/TAO/tao/Synch_Invocation.cpp
index ff3a8b1a3c7..38242303394 100644
--- a/TAO/tao/Synch_Invocation.cpp
+++ b/TAO/tao/Synch_Invocation.cpp
@@ -58,6 +58,8 @@ namespace TAO
}
+
+
TAO_Target_Specification tspec;
this->init_target_spec (tspec ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (TAO_INVOKE_FAILURE);
diff --git a/TAO/tao/TODO b/TAO/tao/TODO
index a57556e2a8f..6afaff79a4f 100644
--- a/TAO/tao/TODO
+++ b/TAO/tao/TODO
@@ -55,4 +55,7 @@
. Complete documentation
+. Add the BAD_PARAM exception for bounded strings
+
+. Different versions of GIOP
diff --git a/TAO/tao/Transport_Connector.cpp b/TAO/tao/Transport_Connector.cpp
index 8d118dbb0c2..07111771506 100644
--- a/TAO/tao/Transport_Connector.cpp
+++ b/TAO/tao/Transport_Connector.cpp
@@ -267,15 +267,14 @@ TAO_Connector::connect (TAO_GIOP_Invocation *invocation,
TAO_Transport*
TAO_Connector::connect (TAO::Profile_Transport_Resolver *r,
- TAO_Endpoint *ep,
+ TAO_Transport_Descriptor_Interface *desc,
ACE_Time_Value *timeout
ACE_ENV_ARG_DECL_NOT_USED)
{
- if (this->set_validate_endpoint (ep) == -1)
+ if ((this->set_validate_endpoint (desc->endpoint ()) == -1) ||
+ desc == 0)
return 0;
- TAO_Base_Transport_Property desc (ep);
-
TAO_Transport *base_transport = 0;
// Check the Cache first for connections
@@ -283,7 +282,7 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r,
// @@todo: We need to send the timeout value to the cache registry
// too. That should be the next step!
if (this->orb_core ()->lane_resources ().transport_cache ().find_transport (
- &desc,
+ desc,
base_transport) == 0)
{
if (TAO_debug_level > 2)
@@ -302,7 +301,7 @@ TAO_Connector::connect (TAO::Profile_Transport_Resolver *r,
this->orb_core_->lane_resources ().transport_cache ().purge ();
return this->make_connection (r,
- desc,
+ *desc,
timeout);
}
diff --git a/TAO/tao/Transport_Connector.h b/TAO/tao/Transport_Connector.h
index f53e51fabe0..0da20ecb238 100644
--- a/TAO/tao/Transport_Connector.h
+++ b/TAO/tao/Transport_Connector.h
@@ -101,7 +101,7 @@ public:
* Call is very similar to the previous one but with a timeout.
*/
virtual TAO_Transport* connect (TAO::Profile_Transport_Resolver *r,
- TAO_Endpoint *ep,
+ TAO_Transport_Descriptor_Interface *desc,
ACE_Time_Value *timeout
ACE_ENV_ARG_DECL);