00001 #ifndef __CMWFWDEVICESERVER_H__ 00002 #define __CMWFWDEVICESERVER_H__ 00003 #include "cmwfwTypes.h" 00004 00005 00006 template <class T> class cmwfwList; 00007 typedef cmwfwList<class cmwfwIOValue*> iov_list_type; 00008 00009 00010 class cmwfwDeviceServer:public cmwfwDeviceServerBase{ 00011 public: 00012 friend class cmwfwPoller; 00013 friend class cmwfwIOValue; 00014 friend class cmwfwForwarder; 00015 friend class cmwfwDeviceAdapter; 00016 friend class cmwfwSubscriptionManager; 00017 friend int main(int argc, char** argv); 00018 00019 cmwfwDeviceServer(const char* srvName, 00020 int argc, char** argv); 00021 virtual ~cmwfwDeviceServer(); 00022 00023 protected: 00024 00025 private: 00026 cmwfwData* get(const cmwfwIOPoint& iop, const cmwfwData& ctx); 00027 void set(const cmwfwIOPoint& iop, 00028 const cmwfwData& ctx, 00029 const cmwfwData& value); 00030 void monitorOn(const cmwfwIOPoint& iop, 00031 cmwfwValueChangeListener* listener); 00032 void monitorOff(const cmwfwIOPoint& iop, 00033 cmwfwValueChangeListener* listener); 00034 00035 void Start(); 00036 void shutdownHook(); 00037 cmwfwIOValue* getIOValue(const cmwfwIOPoint& iop, 00038 bool useMutex = true); 00039 cmwfwIOValue* getIOValues(); 00040 cmwfwIOPoint* getIOPoints(); 00041 char* generateIOPString(const cmwfwIOPoint& iop); 00042 void heaperr(int line); 00043 00044 iov_list_type* iovalues; 00045 static bool server_exists; 00046 // bool isInitialized; 00047 int my_argc; 00048 char** my_argv; 00049 }; 00050 00051 #endif //ifndef __CMWFWDEVICESERVER_H__