[shill] the beginnings of the data model
Flesh out Manager a little, to add vectors of Device* and Service* and ways to look through them.
BUG=chromium-os:15347
TEST=unit tests
Change-Id: Iae5280f56bf58cf1580f0b87c465f4905459f07a
Reviewed-on: http://gerrit.chromium.org/gerrit/966
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/device.h b/device.h
index b2049a9..81eb781 100644
--- a/device.h
+++ b/device.h
@@ -5,30 +5,48 @@
#ifndef SHILL_DEVICE_
#define SHILL_DEVICE_
+#include <vector>
+
#include <base/memory/ref_counted.h>
+#include "shill/service.h"
#include "shill/shill_event.h"
namespace shill {
+class ControlInterface;
+class DeviceAdaptorInterface;
+class EventDispatcher;
+
// Device superclass. Individual network interfaces types will inherit from
// this class.
class Device : public base::RefCounted<Device> {
public:
- // A constructor for the Device object
- explicit Device(ControlInterface *control_interface,
- EventDispatcher *dispatcher);
+ enum Technology {
+ kEthernet,
+ kWifi,
+ kCellular,
+ kNumTechnologies
+ };
- void Start();
- void Stop();
+ // A constructor for the Device object
+ Device(ControlInterface *control_interface,
+ EventDispatcher *dispatcher);
+ virtual ~Device();
+
+ virtual void Start();
+ virtual void Stop();
+
+ virtual bool TechnologyIs(Technology type) = 0;
protected:
- virtual ~Device();
+ std::vector<scoped_refptr<Service> > services_;
private:
DeviceAdaptorInterface *adaptor_;
bool running_;
friend class DeviceAdaptorInterface;
+ DISALLOW_COPY_AND_ASSIGN(Device);
};
} // namespace shill