[dss-commits] r8851 - dss/trunk/core
dss-commits at forum.digitalstrom.org
dss-commits at forum.digitalstrom.org
Mon Oct 19 13:39:02 CEST 2009
Author: pstaehlin
Date: 2009-10-19 13:39:02 +0200 (Mon, 19 Oct 2009)
New Revision: 8851
Modified:
dss/trunk/core/model.cpp
dss/trunk/core/propertysystem.cpp
dss/trunk/core/propertysystem.h
Log:
Yell abuse but don't crash when a device node is already there
Modified: dss/trunk/core/model.cpp
===================================================================
--- dss/trunk/core/model.cpp 2009-10-16 09:52:09 UTC (rev 8850)
+++ dss/trunk/core/model.cpp 2009-10-19 11:39:02 UTC (rev 8851)
@@ -238,7 +238,16 @@
if((m_pPropertyNode != NULL) && (m_pApartment->getPropertyNode() != NULL)) {
std::string basePath = "zones/zone" + intToString(m_ZoneID);
if(m_pAliasNode == NULL) {
+ PropertyNodePtr node = m_pApartment->getPropertyNode()->getProperty(basePath + "/" + m_DSID.toString());
+ if(node != NULL) {
+ Logger::getInstance()->log("Device::setZoneID: Target node for device " + m_DSID.toString() + " already exists", lsError);
+ if(node->size() > 0) {
+ Logger::getInstance()->log("Device::setZoneID: Target node for device " + m_DSID.toString() + " has children", lsFatal);
+ return;
+ }
+ }
m_pAliasNode = m_pApartment->getPropertyNode()->createProperty(basePath + "/" + m_DSID.toString());
+
m_pAliasNode->alias(m_pPropertyNode);
} else {
PropertyNodePtr base = m_pApartment->getPropertyNode()->getProperty(basePath);
Modified: dss/trunk/core/propertysystem.cpp
===================================================================
--- dss/trunk/core/propertysystem.cpp 2009-10-16 09:52:09 UTC (rev 8850)
+++ dss/trunk/core/propertysystem.cpp 2009-10-19 11:39:02 UTC (rev 8851)
@@ -467,6 +467,10 @@
return result;
}
} // count
+
+ int PropertyNode::size() const {
+ return m_ChildNodes.size();
+ } // size
void PropertyNode::clearValue() {
if(m_PropVal.valueType == vTypeString) {
Modified: dss/trunk/core/propertysystem.h
===================================================================
--- dss/trunk/core/propertysystem.h 2009-10-16 09:52:09 UTC (rev 8850)
+++ dss/trunk/core/propertysystem.h 2009-10-19 11:39:02 UTC (rev 8851)
@@ -367,6 +367,7 @@
* @return The child or NULL if not found */
PropertyNodePtr getProperty(const std::string& _propPath);
int count(const std::string& _propertyName);
+ int size() const;
/** Sets the value as string. */
void setStringValue(const char* _value);
More information about the dss-commits
mailing list