casa
$Rev:20696$
|
00001 #ifndef CASA_DBUS_BASE_H__ 00002 #define CASA_DBUS_BASE_H__ 00003 00004 #include <boost/thread/thread.hpp> 00005 #include <dbus-c++/dbus.h> 00006 00007 namespace casa { 00008 00009 class Record; 00010 00011 class DBusThreadedBase 00012 { 00013 public: 00014 DBusThreadedBase(); 00015 ~DBusThreadedBase(); 00016 00017 void stopService(); 00018 00019 /* Methods to make translating to/from the map easy */ 00020 static std::map<std::string,DBus::Variant> fromRecord(Record); 00021 static Record toRecord(std::map<std::string,DBus::Variant>); 00022 00023 private: 00024 00025 void serviceLoop(); 00026 boost::thread *itsThread; 00027 }; 00028 00029 class DBusService : public DBus::IntrospectableAdaptor, 00030 public DBus::ObjectAdaptor, 00031 public DBusThreadedBase 00032 { 00033 public: 00034 DBusService(const std::string &serviceName); 00035 ~DBusService(); 00036 }; 00037 00038 class ServiceProxy : public DBus::IntrospectableProxy, 00039 public DBus::ObjectProxy, 00040 public DBusThreadedBase 00041 { 00042 public: 00043 ServiceProxy(const std::string& serviceName); 00044 ~ServiceProxy(); 00045 }; 00046 00047 } 00048 00049 #endif