void TrackingSyncSource::checkStatus(SyncSourceReport &changes) { // use the most reliable (and most expensive) method by default ChangeMode mode = CHANGES_FULL; // assume that we do a regular sync, with reusing stored information // if possible string oldRevision = m_metaNode->readProperty("databaseRevision"); if (!oldRevision.empty()) { string newRevision = databaseRevision(); SE_LOG_DEBUG(this, NULL, "old database revision '%s', new revision '%s'", oldRevision.c_str(), newRevision.c_str()); if (newRevision == oldRevision) { SE_LOG_DEBUG(this, NULL, "revisions match, no item changes"); mode = CHANGES_NONE; } } if (mode == CHANGES_FULL) { SE_LOG_DEBUG(this, NULL, "using full item scan to detect changes"); } detectChanges(*m_trackingNode, mode); // copy our item counts into the report changes.setItemStat(ITEM_LOCAL, ITEM_ADDED, ITEM_TOTAL, getNewItems().size()); changes.setItemStat(ITEM_LOCAL, ITEM_UPDATED, ITEM_TOTAL, getUpdatedItems().size()); changes.setItemStat(ITEM_LOCAL, ITEM_REMOVED, ITEM_TOTAL, getDeletedItems().size()); changes.setItemStat(ITEM_LOCAL, ITEM_ANY, ITEM_TOTAL, getAllItems().size()); }
std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> DesuraJSBinding::getNewItems() { auto im = getItemManager(); if (!im) return std::vector<gcRefPtr<UserCore::Item::ItemInfoI>>(); std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> gList; im->getNewItems(gList); return gList; }