if ((*it)->_changed) (*it)->_prevValue = (*it)->_node->getStringValue();
}
}
+
+void PropertyChangeObserver::uncheck()
+{
+ for (Entries_t::iterator it = _entries.begin(); it != _entries.end(); ++it) {
+ (*it)->_changed = false;
+ }
+}
+
const SGPropertyNode_ptr PropertyChangeObserver::addObservation( const string propertyName)
{
for (Entries_t::iterator it = _entries.begin(); it != _entries.end(); ++it) {
return empty;
}
-bool PropertyChangeObserver::getChangedValue(const SGPropertyNode_ptr node, string & out)
+bool PropertyChangeObserver::isChangedValue(const SGPropertyNode_ptr node)
{
for (Entries_t::iterator it = _entries.begin(); it != _entries.end(); ++it) {
PropertyChangeObserverEntryRef entry = *it;
if( entry->_node == node && entry->_changed ) {
- out = entry->_node->getStringValue();
- entry->_changed = false;
return true;
}
}
virtual ~PropertyChangeObserver();
const SGPropertyNode_ptr addObservation( const std::string propertyName);
- bool getChangedValue(const SGPropertyNode_ptr node, std::string & out);
+ bool isChangedValue(const SGPropertyNode_ptr node);
void check();
+ void uncheck();
private:
typedef std::vector<PropertyChangeObserverEntryRef> Entries_t;
SGPropertyNode_ptr node = *it;
string newValue;
- if (_propertyChangeObserver->getChangedValue(node, newValue)) {
- SG_LOG(SG_NETWORK, SG_ALERT, "httpd: new Value for " << node->getPath(true) << " '" << newValue << "' #" << id);
+ if (_propertyChangeObserver->isChangedValue(node)) {
+ SG_LOG(SG_NETWORK, SG_ALERT, "httpd: new Value for " << node->getPath(true) << " '" << node->getStringValue() << "' #" << id);
writer.writeText( JSON::toJsonString( false, node, 0 ) );
}
}
_propertyChangeObserver.check();
mg_poll_server(_server, 0);
mg_iterate_over_connections(_server, &MongooseHttpd::staticIterateCallback);
+ _propertyChangeObserver.uncheck();
}
class MongooseHTTPRequest: public HTTPRequest {