[shill] Begin wiring SetProperty

Create a PropertyStoreInterface that can be implemented by Device,
Service, Manager, etc to handle getting/setting of properties.  The
various DBusAdaptor subclasses can dispatch incoming calls to their
associated implementation object based on the names of the properties
and/or the types of the arguments.

BUG=chromium-os:16343
TEST=unit tests

Change-Id: If7abb0ffa623e59288943b4ed1f49832a92524ea
Reviewed-on: http://gerrit.chromium.org/gerrit/2408
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/device.h b/device.h
index e8105b6..e258517 100644
--- a/device.h
+++ b/device.h
@@ -8,10 +8,12 @@
 #include <string>
 #include <vector>
 
+#include <base/basictypes.h>
 #include <base/memory/ref_counted.h>
 #include <base/memory/scoped_ptr.h>
 
 #include "shill/device_config_interface.h"
+#include "shill/property_store_interface.h"
 #include "shill/service.h"
 #include "shill/shill_event.h"
 
@@ -21,8 +23,9 @@
 class Device;
 class DeviceAdaptorInterface;
 class DeviceInfo;
-class EventDispatcher;
 class Endpoint;
+class Error;
+class EventDispatcher;
 class Manager;
 
 typedef scoped_refptr<const Device> DeviceConstRefPtr;
@@ -30,7 +33,7 @@
 
 // Device superclass.  Individual network interfaces types will inherit from
 // this class.
-class Device : public DeviceConfigInterface {
+class Device : public DeviceConfigInterface, public PropertyStoreInterface {
  public:
   enum Technology {
     kEthernet,
@@ -59,6 +62,16 @@
   // Implementation of DeviceConfigInterface
   virtual void ConfigIP() {}
 
+  // Implementation of PropertyStoreInterface
+  bool SetBoolProperty(const std::string& name, bool value, Error *error);
+  bool SetInt16Property(const std::string& name, int16 value, Error *error);
+  bool SetInt32Property(const std::string& name, int32 value, Error *error);
+  bool SetStringProperty(const std::string& name,
+                         const std::string& value,
+                         Error *error);
+  bool SetUint16Property(const std::string& name, uint16 value, Error *error);
+  bool SetUint32Property(const std::string& name, uint32 value, Error *error);
+
   // Returns a string that is guaranteed to uniquely identify this
   // Device instance.
   const std::string& UniqueName() const;