Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef NamingH
00033 #define NamingH
00034
00035 #include <zeusbase/Remote/Interfaces/INaming.hpp>
00036 #include <zeusbase/Remote/AbstractStub.h>
00037 #include <zeusbase/System/ZObject.h>
00038 #include <zeusbase/System/StringMap.hpp>
00039
00040 BEGIN_NAMESPACE_Zeus
00041
00043 #define Naming TNaming::getInstance()
00044
00045 class TCriticalSection;
00046 class TXMLStream;
00047
00048
00059
00060 zeusbase_class TNaming : public TZObject, public INamedContext
00061 {
00062 public:
00063 static TNaming& getInstance();
00064 static Retval createNewInstance(TNaming*& rpObject);
00065
00066 Retval connect(const TString& rAddress, Uint uiPort);
00067 void disconnect();
00068 Retval getLocalContext(INamedContext*& rpContext);
00069 void setDelegationInterface(INaming* pIface);
00070
00071
00072 virtual bool MQUALIFIER hasRemoteContext() const;
00073 virtual bool MQUALIFIER isConnected() const;
00074 virtual void MQUALIFIER releaseLocalContext();
00075
00076
00077 virtual Retval MQUALIFIER bind(const IString& rName, const IRemoteObject& rObject);
00078 virtual Retval MQUALIFIER rebind(const IString& rName, const IRemoteObject& rObject);
00079 virtual Retval MQUALIFIER unbind(const IString& rName);
00080 virtual Retval MQUALIFIER lookup(const IString& rQuery, IRemoteObject*& rpObject);
00081 virtual Retval MQUALIFIER lookupObjects(const IString& rQuery, IRemoteObjectList& rObjects);
00082 virtual Retval MQUALIFIER lookupAny(const IString& rQuery, IRemoteObject*& rpObject);
00083
00084 virtual Retval MQUALIFIER getObjectNames(const IString& rQuery, IStringList& rNames);
00085
00086
00087
00088 MEMORY_MANAGER_DECL
00089
00090 protected:
00091 void createLocalContext();
00092 bool checkAndCreateLocalContext();
00093
00095
00096 #ifdef _MSC_VER
00097 public:
00098 #endif
00099
00100
00101 TNaming();
00102 virtual ~TNaming();
00103
00104 private:
00106 static TAutoPtr<TNaming> m_ptrNaming;
00108 TCriticalSection& m_rLock;
00110 TAutoPtr<INaming> m_ptrDelegationInterface;
00112 TAutoPtr<INamedContext> m_ptrRemoteContext;
00114 TAutoPtr<INamedContext> m_ptrLocalContext;
00116 TXMLStream* m_pLocalXMLData;
00117 };
00118
00119
00120
00124
00125 inline TNaming& TNaming::getInstance()
00126 {
00127 return *m_ptrNaming;
00128 }
00129
00130
00133
00134 inline bool TNaming::checkAndCreateLocalContext()
00135 {
00136 if (m_ptrLocalContext == NULL)
00137 {
00138 createLocalContext();
00139 }
00140 return (m_ptrLocalContext != NULL);
00141 }
00142
00143
00146
00147 inline bool MQUALIFIER TNaming::hasRemoteContext() const
00148 {
00149 bool bRetval = false;
00150 if (m_ptrDelegationInterface != NULL)
00151 {
00152 bRetval = m_ptrDelegationInterface->hasRemoteContext();
00153 }
00154 else
00155 {
00156 bRetval = (m_ptrRemoteContext != NULL);
00157 }
00158 return bRetval;
00159 }
00160
00161
00164
00165 inline bool MQUALIFIER TNaming::isConnected() const
00166 {
00167 bool bRetval = false;
00168 if (m_ptrDelegationInterface != NULL)
00169 {
00170 bRetval = m_ptrDelegationInterface->isConnected();
00171 }
00172 else
00173 {
00174 bRetval = false;
00175 }
00176 return bRetval;
00177 }
00178
00179
00180 END_NAMESPACE_Zeus
00181
00182 #endif