96 lines · 2.9 KB · C++
RawDownload
////  DeviceTracker.cpp//  interface/src/devices////  Created by Sam Cake on 6/20/14.//  Copyright 2014 High Fidelity, Inc.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html// #include "DeviceTracker.h" DeviceTracker::SingletonData::~SingletonData() {    // Destroy all the device registered    //TODO C++11 for (auto device = _devicesVector.begin(); device != _devicesVector.end(); device++) {    for (Vector::iterator device = _devicesVector.begin(); device != _devicesVector.end(); device++) {        delete (*device);    }} int DeviceTracker::getNumDevices() {    return Singleton::get()->_devicesMap.size();} DeviceTracker::ID DeviceTracker::getDeviceID(const Name& name) {    //TODO C++11 auto deviceIt = Singleton::get()->_devicesMap.find(name);    Map::iterator deviceIt = Singleton::get()->_devicesMap.find(name);    if (deviceIt != Singleton::get()->_devicesMap.end()) {        return (*deviceIt).second;    } else {        return INVALID_DEVICE;    }} DeviceTracker* DeviceTracker::getDevice(const Name& name) {    return getDevice(getDeviceID(name));} DeviceTracker* DeviceTracker::getDevice(DeviceTracker::ID deviceID) {    if ((deviceID >= 0) && (deviceID < (int)(Singleton::get()->_devicesVector.size()))) {        return Singleton::get()->_devicesVector[ deviceID ];    } else {        return NULL;    }} DeviceTracker::ID DeviceTracker::registerDevice(const Name& name, DeviceTracker* device) {    // Check that the device exists, if not exit    if (!device) {        return INVALID_DEVICE;    }     // Look if the name is not already used    ID deviceID = getDeviceID(name);    if (deviceID >= 0) {        return INVALID_DEVICE_NAME;    }     // Good to register the device    deviceID = Singleton::get()->_devicesVector.size();    Singleton::get()->_devicesMap.insert(Map::value_type(name, deviceID));    Singleton::get()->_devicesVector.push_back(device);    device->assignIDAndName(deviceID, name);     return deviceID;} void DeviceTracker::destroyDevice(const Name& name) {    DeviceTracker::ID deviceID = getDeviceID(name);    if (deviceID != INVALID_DEVICE) {        delete Singleton::get()->_devicesVector[getDeviceID(name)];        Singleton::get()->_devicesVector[getDeviceID(name)] = nullptr;    }} void DeviceTracker::updateAll() {    //TODO C++11 for (auto deviceIt = Singleton::get()->_devicesVector.begin(); deviceIt != Singleton::get()->_devicesVector.end(); deviceIt++) {    for (Vector::iterator deviceIt = Singleton::get()->_devicesVector.begin(); deviceIt != Singleton::get()->_devicesVector.end(); deviceIt++) {        if ((*deviceIt))            (*deviceIt)->update();    }} // Core features of the Device TrackerDeviceTracker::DeviceTracker() :    _ID(INVALID_DEVICE),    _name("Unkown"){} DeviceTracker::~DeviceTracker() {} void DeviceTracker::update() {}