LocalObject.cpp

Go to the documentation of this file.
00001 // LocalObject.cpp,v 1.42 2006/03/10 07:19:05 jtc Exp
00002 
00003 #include "tao/LocalObject.h"
00004 
00005 #if !defined (__ACE_INLINE__)
00006 # include "tao/LocalObject.i"
00007 #endif /* ! __ACE_INLINE__ */
00008 
00009 #include "tao/SystemException.h"
00010 #include "tao/debug.h"
00011 #include "tao/ORB_Constants.h"
00012 
00013 #include "ace/Log_Msg.h"
00014 #include "ace/Guard_T.h"
00015 
00016 ACE_RCSID (tao,
00017            LocalObject,
00018            "LocalObject.cpp,v 1.42 2006/03/10 07:19:05 jtc Exp")
00019 
00020 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00021 
00022 CORBA::LocalObject::~LocalObject (void)
00023 {
00024 }
00025 
00026 void
00027 CORBA::LocalObject::_add_ref (void)
00028 {
00029   // Do nothing as per CCM spec.
00030 }
00031 
00032 void
00033 CORBA::LocalObject::_remove_ref (void)
00034 {
00035   // Do nothing as per CCM spec.
00036 }
00037 
00038 // Quickly hash an object reference's representation data.  Used to
00039 // create hash tables.
00040 
00041 CORBA::ULong
00042 CORBA::LocalObject::_hash (CORBA::ULong maximum
00043                            ACE_ENV_ARG_DECL_NOT_USED)
00044 {
00045   // Note that we reinterpret_cast to an "ptrdiff_t" instead of
00046   // CORBA::ULong since we need to first cast to an integer large
00047   // enough to hold an address to avoid compile-time warnings on some
00048   // 64-bit platforms.
00049 
00050   CORBA::ULong const hash =
00051     static_cast<CORBA::ULong> (reinterpret_cast<ptrdiff_t> (this));
00052 
00053   return hash % maximum;
00054 }
00055 
00056 // Compare two object references to see if they point to the same
00057 // object.  Used in linear searches, as in hash buckets.
00058 //
00059 // XXX would be useful to also have a trivalued comparison predicate,
00060 // such as strcmp(), to allow more comparison algorithms.
00061 
00062 CORBA::Boolean
00063 CORBA::LocalObject::_is_equivalent (CORBA::Object_ptr other_obj
00064                                     ACE_ENV_ARG_DECL_NOT_USED)
00065   ACE_THROW_SPEC (())
00066 {
00067   return (other_obj == this) ? true : false;
00068 }
00069 
00070 // TAO's extensions
00071 
00072 
00073 TAO::ObjectKey *
00074 CORBA::LocalObject::_key (ACE_ENV_SINGLE_ARG_DECL)
00075 {
00076   if (TAO_debug_level > 0)
00077     ACE_ERROR ((LM_ERROR,
00078                 ACE_TEXT ("(%P|%t) Cannot get _key from a LocalObject!\n")));
00079 
00080   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00081 }
00082 
00083 #if (TAO_HAS_MINIMUM_CORBA == 0)
00084 
00085 // NON_EXISTENT ... send a simple call to the object, which will
00086 // either elicit a FALSE response or a OBJECT_NOT_EXIST exception.  In
00087 // the latter case, return FALSE.
00088 
00089 CORBA::Boolean
00090 CORBA::LocalObject::_non_existent (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
00091 {
00092   // Always return false.
00093   return false;
00094 }
00095 
00096 void
00097 CORBA::LocalObject::_create_request (CORBA::Context_ptr,
00098                                      const char *,
00099                                      CORBA::NVList_ptr,
00100                                      CORBA::NamedValue_ptr,
00101                                      CORBA::Request_ptr &,
00102                                      CORBA::Flags
00103                                      ACE_ENV_ARG_DECL)
00104 {
00105   ACE_THROW (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 4,
00106                                   CORBA::COMPLETED_NO));
00107 }
00108 
00109 void
00110 CORBA::LocalObject::_create_request (CORBA::Context_ptr,
00111                                      const char *,
00112                                      CORBA::NVList_ptr,
00113                                      CORBA::NamedValue_ptr,
00114                                      CORBA::ExceptionList_ptr,
00115                                      CORBA::ContextList_ptr,
00116                                      CORBA::Request_ptr &,
00117                                      CORBA::Flags
00118                                      ACE_ENV_ARG_DECL)
00119 {
00120   ACE_THROW (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 4,
00121                                   CORBA::COMPLETED_NO));
00122 }
00123 
00124 CORBA::Request_ptr
00125 CORBA::LocalObject::_request (const char *
00126                               ACE_ENV_ARG_DECL)
00127 {
00128   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 4,
00129                                          CORBA::COMPLETED_NO),
00130                     0);
00131 }
00132 
00133 CORBA::Object_ptr
00134 CORBA::LocalObject::_get_component (ACE_ENV_SINGLE_ARG_DECL)
00135 {
00136   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00137                                          CORBA::COMPLETED_NO),
00138                     0);
00139 }
00140 
00141 char *
00142 CORBA::LocalObject::_repository_id (ACE_ENV_SINGLE_ARG_DECL)
00143 {
00144   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00145                                          CORBA::COMPLETED_NO),
00146                     0);
00147 }
00148 
00149 CORBA::InterfaceDef_ptr
00150 CORBA::LocalObject::_get_interface (ACE_ENV_SINGLE_ARG_DECL)
00151 {
00152   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00153                                          CORBA::COMPLETED_NO),
00154                     0);
00155 }
00156 
00157 CORBA::ImplementationDef_ptr
00158 CORBA::LocalObject::_get_implementation (ACE_ENV_SINGLE_ARG_DECL)
00159 {
00160   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00161 }
00162 
00163 #endif /* TAO_HAS_MINIMUM_CORBA */
00164 
00165 #if (TAO_HAS_CORBA_MESSAGING == 1)
00166 
00167 CORBA::Policy_ptr
00168 CORBA::LocalObject::_get_policy (CORBA::PolicyType
00169                                  ACE_ENV_ARG_DECL)
00170 {
00171   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00172                                          CORBA::COMPLETED_NO),
00173                     0);
00174 }
00175 
00176 CORBA::Policy_ptr
00177 CORBA::LocalObject::_get_cached_policy (TAO_Cached_Policy_Type
00178                                         ACE_ENV_ARG_DECL)
00179 {
00180   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0);
00181 }
00182 
00183 CORBA::Object_ptr
00184 CORBA::LocalObject::_set_policy_overrides (const CORBA::PolicyList &,
00185                                            CORBA::SetOverrideType
00186                                            ACE_ENV_ARG_DECL)
00187 {
00188   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00189                                          CORBA::COMPLETED_NO),
00190                     0);
00191 }
00192 
00193 CORBA::PolicyList *
00194 CORBA::LocalObject::_get_policy_overrides (const CORBA::PolicyTypeSeq &
00195                                            ACE_ENV_ARG_DECL)
00196 {
00197   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00198                                          CORBA::COMPLETED_NO),
00199                     0);
00200 }
00201 
00202 CORBA::Boolean
00203 CORBA::LocalObject::_validate_connection (CORBA::PolicyList_out
00204                                           ACE_ENV_ARG_DECL)
00205 {
00206   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00207                                          CORBA::COMPLETED_NO),
00208                     false);
00209 }
00210 
00211 #endif /* TAO_HAS_CORBA_MESSAGING == 1 */
00212 
00213 CORBA::ORB_ptr
00214 CORBA::LocalObject::_get_orb (ACE_ENV_SINGLE_ARG_DECL)
00215 {
00216   ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (CORBA::OMGVMCID | 8,
00217                                          CORBA::COMPLETED_NO),
00218                     0);
00219 }
00220 
00221 // ****************************************************************
00222 
00223 TAO_Local_RefCounted_Object::~TAO_Local_RefCounted_Object (void)
00224 {
00225 }
00226 
00227 void
00228 TAO_Local_RefCounted_Object::_add_ref (void)
00229 {
00230   ++this->refcount_;
00231 }
00232 
00233 void
00234 TAO_Local_RefCounted_Object::_remove_ref (void)
00235 {
00236   const CORBA::ULong new_count = --this->refcount_;
00237 
00238   if (new_count == 0)
00239     delete this;
00240 }
00241 
00242 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 11:54:15 2006 for TAO by doxygen 1.3.6