[shill] Enable objects to query an opaque RPC-system ID from Adaptors

This is needed for some properties.  For example Service has a property called Device, which is expected
to return a (in the current impl) a DBus path for the associated Device object.

BUG=chromium-os:16343
TEST=unit tests

Change-Id: I8bd32ab483331efabbfee05dbdeba045c7cb20da
Reviewed-on: http://gerrit.chromium.org/gerrit/3417
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/mock_adaptors.h b/mock_adaptors.h
index 1993dbb..56a070c 100644
--- a/mock_adaptors.h
+++ b/mock_adaptors.h
@@ -16,8 +16,12 @@
 // These are the functions that a Manager adaptor must support
 class ManagerMockAdaptor : public ManagerAdaptorInterface {
  public:
-  ManagerMockAdaptor() {}
-  virtual ~ManagerMockAdaptor() {}
+  static const char kRpcId[];
+
+  ManagerMockAdaptor();
+  virtual ~ManagerMockAdaptor();
+  virtual const std::string &GetRpcIdentifier();
+
   MOCK_METHOD0(UpdateRunning, void(void));
   MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
   MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
@@ -25,30 +29,47 @@
   MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
 
   MOCK_METHOD1(EmitStateChanged, void(const std::string&));
+
+ private:
+  const std::string rpc_id;
 };
 
 // These are the functions that a Service adaptor must support
 class ServiceMockAdaptor : public ServiceAdaptorInterface {
  public:
-  ServiceMockAdaptor() {}
-  virtual ~ServiceMockAdaptor() {}
+  static const char kRpcId[];
+
+  ServiceMockAdaptor();
+  virtual ~ServiceMockAdaptor();
+  virtual const std::string &GetRpcIdentifier();
+
   MOCK_METHOD0(UpdateConnected, void(void));
   MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
   MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
   MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
   MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
+
+ private:
+  const std::string rpc_id;
 };
 
 // These are the functions that a Device adaptor must support
 class DeviceMockAdaptor : public DeviceAdaptorInterface {
  public:
-  DeviceMockAdaptor() {}
-  virtual ~DeviceMockAdaptor() {}
+  static const char kRpcId[];
+
+  DeviceMockAdaptor();
+  virtual ~DeviceMockAdaptor();
+  virtual const std::string &GetRpcIdentifier();
+
   MOCK_METHOD0(UpdateEnabled, void(void));
   MOCK_METHOD2(EmitBoolChanged, void(const std::string&, bool));
   MOCK_METHOD2(EmitUintChanged, void(const std::string&, uint32));
   MOCK_METHOD2(EmitIntChanged, void(const std::string&, int));
   MOCK_METHOD2(EmitStringChanged, void(const std::string&, const std::string&));
+
+ private:
+  const std::string rpc_id;
 };
 
 }  // namespace shill