00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef TAO_CORBA_LOCALOBJECT_H
00021 #define TAO_CORBA_LOCALOBJECT_H
00022
00023 #include "ace/pre.h"
00024
00025 #include "ace/Thread_Mutex.h"
00026 #include "ace/Atomic_Op.h"
00027
00028 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00029 # pragma once
00030 #endif
00031
00032 #include "tao/Object.h"
00033
00034 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00035
00036 namespace CORBA
00037 {
00038 class LocalObject;
00039 typedef LocalObject *LocalObject_ptr;
00040 typedef TAO_Pseudo_Var_T<LocalObject> LocalObject_var;
00041 typedef TAO_Pseudo_Out_T<LocalObject> LocalObject_out;
00042
00043
00044
00045
00046 class TAO_Export LocalObject : public virtual CORBA::Object
00047 {
00048 public:
00049
00050
00051 virtual ~LocalObject (void);
00052
00053
00054 static LocalObject_ptr _duplicate (LocalObject_ptr obj);
00055
00056
00057 static LocalObject_ptr _nil (void);
00058
00059
00060
00061
00062
00063
00064
00065
00066 static LocalObject_ptr _narrow (CORBA::Object_ptr obj
00067 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00068
00069 #if (TAO_HAS_MINIMUM_CORBA == 0)
00070
00071
00072 virtual CORBA::Boolean _non_existent (
00073 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
00074 );
00075
00076
00077 virtual CORBA::ImplementationDef_ptr _get_implementation (
00078 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
00079 );
00080
00081
00082 virtual CORBA::InterfaceDef_ptr _get_interface (
00083 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
00084 );
00085
00086
00087 virtual CORBA::Object_ptr _get_component (
00088 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
00089 );
00090
00091
00092 virtual char * _repository_id (
00093 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
00094 );
00095
00096 virtual void _create_request (CORBA::Context_ptr ctx,
00097 const char * operation,
00098 CORBA::NVList_ptr arg_list,
00099 CORBA::NamedValue_ptr result,
00100 CORBA::Request_ptr & request,
00101 CORBA::Flags req_flags
00102 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00103
00104 virtual void _create_request (CORBA::Context_ptr ctx,
00105 const char * operation,
00106 CORBA::NVList_ptr arg_list,
00107 CORBA::NamedValue_ptr result,
00108 CORBA::ExceptionList_ptr exclist,
00109 CORBA::ContextList_ptr ctxtlist,
00110 CORBA::Request_ptr & request,
00111 CORBA::Flags req_flags
00112 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00113
00114
00115 virtual CORBA::Request_ptr _request (const char * operation
00116 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00117
00118 #endif
00119
00120 #if (TAO_HAS_CORBA_MESSAGING == 1)
00121
00122
00123 CORBA::Policy_ptr _get_policy (CORBA::PolicyType type
00124 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00125
00126
00127 CORBA::Policy_ptr _get_cached_policy (TAO_Cached_Policy_Type type
00128 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00129
00130
00131 CORBA::Object_ptr _set_policy_overrides (
00132 const CORBA::PolicyList & policies,
00133 CORBA::SetOverrideType set_add
00134 ACE_ENV_ARG_DECL_WITH_DEFAULTS
00135 );
00136
00137
00138 CORBA::PolicyList * _get_policy_overrides (
00139 const CORBA::PolicyTypeSeq & types
00140 ACE_ENV_ARG_DECL_WITH_DEFAULTS
00141 );
00142
00143
00144 CORBA::Boolean _validate_connection (
00145 CORBA::PolicyList_out inconsistent_policies
00146 ACE_ENV_ARG_DECL_WITH_DEFAULTS
00147 );
00148
00149 #endif
00150
00151
00152
00153
00154
00155
00156 virtual CORBA::ULong _hash (CORBA::ULong maximum
00157 ACE_ENV_ARG_DECL_WITH_DEFAULTS);
00158
00159
00160
00161
00162
00163
00164
00165
00166 virtual CORBA::Boolean _is_equivalent (CORBA::Object_ptr other_obj
00167 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00168 ACE_THROW_SPEC (());
00169
00170
00171
00172 virtual void _add_ref (void);
00173
00174
00175 virtual void _remove_ref (void);
00176
00177 virtual CORBA::ORB_ptr _get_orb (
00178 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
00179 );
00180
00181
00182
00183
00184 virtual TAO::ObjectKey * _key (ACE_ENV_SINGLE_ARG_DECL);
00185
00186
00187 typedef LocalObject_ptr _ptr_type;
00188 typedef LocalObject_var _var_type;
00189 typedef LocalObject_out _out_type;
00190
00191 protected:
00192
00193
00194
00195
00196
00197 LocalObject (void);
00198
00199 private:
00200
00201
00202
00203
00204
00205 LocalObject (const LocalObject &);
00206 LocalObject & operator = (const LocalObject &);
00207
00208
00209 };
00210 }
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221 class TAO_Export TAO_Local_RefCounted_Object
00222 : public virtual CORBA::LocalObject
00223 {
00224 public:
00225
00226
00227 virtual ~TAO_Local_RefCounted_Object (void);
00228
00229
00230 virtual void _add_ref (void);
00231
00232
00233 virtual void _remove_ref (void);
00234
00235 protected:
00236
00237
00238
00239
00240
00241 TAO_Local_RefCounted_Object (void);
00242
00243 private:
00244
00245
00246
00247
00248
00249 TAO_Local_RefCounted_Object (const TAO_Local_RefCounted_Object &);
00250 TAO_Local_RefCounted_Object & operator = (
00251 const TAO_Local_RefCounted_Object &
00252 );
00253
00254
00255 protected:
00256
00257 ACE_Atomic_Op<TAO_SYNCH_MUTEX, CORBA::ULong> refcount_;
00258 };
00259
00260 TAO_END_VERSIONED_NAMESPACE_DECL
00261
00262 #if defined (__ACE_INLINE__)
00263 # include "tao/LocalObject.i"
00264 #endif
00265
00266 #include "ace/post.h"
00267
00268 #endif