buffet: Add State property to Manager

BUG=chromium:356368
TEST=Modified buffet_BasicDBusAPI verifies that Get and GetAll work.

Change-Id: I3af7cbbdee6d47405786420b0d00a71b0f883ec7
Reviewed-on: https://chromium-review.googlesource.com/192002
Tested-by: Christopher Wiley <wiley@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Christopher Wiley <wiley@chromium.org>
diff --git a/buffet/manager.h b/buffet/manager.h
index d373a5e..cc65868 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -9,6 +9,9 @@
 #include <base/memory/scoped_ptr.h>
 #include <dbus/message.h>
 
+#include "buffet/dbus_constants.h"
+#include "buffet/exported_property_set.h"
+
 namespace buffet {
 
 class DBusManager;
@@ -22,6 +25,16 @@
   ~Manager();
 
  private:
+  struct Properties: public dbus_utils::ExportedPropertySet {
+   public:
+    dbus_utils::ExportedProperty<std::string> state_;
+    Properties(dbus::ExportedObject *manager_object)
+        : dbus_utils::ExportedPropertySet(manager_object) {
+      RegisterProperty(dbus_constants::kManagerInterface, "State", &state_);
+    }
+    virtual ~Properties() {}
+  };
+
   // Handles calls to org.chromium.Buffet.Manager.RegisterDevice().
   scoped_ptr<dbus::Response> HandleRegisterDevice(
       dbus::MethodCall* method_call);
@@ -30,6 +43,7 @@
       dbus::MethodCall* method_call);
 
   DBusManager* dbus_manager_;  // Weak;  DBusManager should outlive Manager.
+  scoped_ptr<Properties> properties_;
 
   DISALLOW_COPY_AND_ASSIGN(Manager);
 };