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 AbstractRemoteObjectH
00033 #define AbstractRemoteObjectH
00034
00035 #include <zeusbase/System/ZObject.h>
00036 #include <zeusbase/Remote/Interfaces/IRemoteObject.hpp>
00037 #include <zeusbase/Remote/AbstractSkel.h>
00038
00039
00040
00045
00046 #define REMOTE_OBJECT_DECL \
00047 virtual void MQUALIFIER getClassName(IString& rName) const; \
00048 virtual void MQUALIFIER getCodeModuleName(IString& rName) const; \
00049 virtual Retval connect(const IString& rAddress, Uint uiPort); \
00050 virtual Retval connect();
00051
00052
00053
00054
00063
00064 #define REMOTE_OBJECT_IMPL(classid, __classname, __codemodule, skel_class) \
00065 void MQUALIFIER classid::getClassName(IString& rName) const\
00066 { \
00067 rName.assign(__classname); \
00068 } \
00069 void MQUALIFIER classid::getCodeModuleName(IString& rName) const\
00070 { \
00071 rName.assign(__codemodule); \
00072 } \
00073 Retval classid::connect(const IString& rAddress, Uint uiPort)\
00074 { \
00075 m_strAddress = rAddress; \
00076 m_uiPort = uiPort; \
00077 m_ptrSkeleton.attach(new skel_class(*this)); \
00078 return m_ptrSkeleton->startSkeleton(m_strAddress, m_uiPort, false); \
00079 } \
00080 \
00081 Retval classid::connect() \
00082 { \
00083 m_strAddress = L"127.0.0.1"; \
00084 m_uiPort = 0; \
00085 m_ptrSkeleton.attach(new skel_class(*this)); \
00086 return m_ptrSkeleton->startSkeleton(m_strAddress, m_uiPort, true); \
00087 } \
00088
00089
00090 BEGIN_NAMESPACE_Zeus
00091
00092 class TAbstractSkel;
00093
00094
00095
00099
00100 zeusbase_class TAbstractRemoteObject : public TZObject, public IRemoteObject
00101 {
00102 public:
00103 TAbstractRemoteObject();
00104
00105 virtual Retval connect()=0;
00106 virtual Retval connect(const IString& rAddress, Uint uiPort)=0;
00107 virtual Retval disconnect();
00108 bool isRunning() const;
00109
00110
00111 virtual void MQUALIFIER getClassName(IString& rName) const=0;
00112 virtual void MQUALIFIER getCodeModuleName(IString& rName) const=0;
00113 virtual Retval MQUALIFIER getConnectionParam(IString& rAddress, Uint& rPort) const;
00114
00115
00116 MEMORY_MANAGER_DECL
00117
00118 protected:
00120 TAutoPtr<TAbstractSkel> m_ptrSkeleton;
00122 TString m_strAddress;
00124 Uint m_uiPort;
00125
00126 virtual ~TAbstractRemoteObject();
00127 Retval getClientSocket(Uint uiThreadID, TSocket*& rpSocket) const;
00128
00129 private:
00130 virtual Retval MQUALIFIER createStub(IRemoteObject*& ) { return RET_METHOD_NOT_IMPL; }
00131 };
00132
00133 END_NAMESPACE_Zeus
00134
00135 #endif