casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
DBusBase.h
Go to the documentation of this file.
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