00001 #ifndef __CMWFWSUBSCRIBTIONMANAGER_H__ 00002 #define __CMWFWSUBSCRIBTIONMANAGER_H__ 00003 #include "cmwfwTypes.h" 00004 00005 00006 template <class T> class cmwfwList; 00007 typedef cmwfwList<cmwfwIOPoint*> subman_list_type; 00008 00009 00010 class cmwfwSubscribtionManager{ 00011 public: 00012 friend class cmwfwDeviceServer; 00013 friend class cmwfwForwarder; 00014 friend class cmwfwPoller; 00015 00016 cmwfwSubscribtionManager(); 00017 virtual ~cmwfwSubscribtionManager(); 00018 00019 00020 protected: 00021 void passOnIOPoints(bool(*att_func)(cmwfwSubscribtionManager*, 00022 const cmwfwIOPoint&), 00023 bool(*det_func)(cmwfwSubscribtionManager*, 00024 const cmwfwIOPoint&)); 00025 00026 bool find(const cmwfwIOPoint& iop, 00027 cmwfwIOPoint*& dst); 00028 00029 //Should be private, but for test purposes 00030 bool attach(const cmwfwIOPoint& iop); 00031 bool detach(const cmwfwIOPoint& iop); 00032 char* generateIOPString(const cmwfwIOPoint& iop); 00033 void heaperr(int line); 00034 private: 00035 00036 subman_list_type* iopoints; 00037 00038 bool (*attach_iop_func)(cmwfwSubscribtionManager*, 00039 const cmwfwIOPoint& iop); 00040 bool (*detach_iop_func)(cmwfwSubscribtionManager*, 00041 const cmwfwIOPoint& iop); 00042 }; 00043 00044 00045 #endif//#ifndef __CMWFWSUBSCRIBTIONMANAGER_H__