void OnlineTimeAward::acceptAward(const std::function<bool(bool,int, int)>& callback) { if (_leftDuration == 0 && callback(true, _awardsNum, _itemType)) { restartCount(); }else{ callback(false, _awardsNum, _itemType); } }
void IntervalAward::acceptAward(const std::function<bool(bool,int, int)>& callback) { if (_lefttime == 0 && callback(true, _awardsNum, _itemType)) { restartCount(); }else{ callback(false, _awardsNum, _itemType); } }
QueryData genOsqueryEvents(QueryContext& context) { QueryData results; auto publishers = EventFactory::publisherTypes(); for (const auto& publisher : publishers) { Row r; r["name"] = publisher; r["publisher"] = publisher; r["type"] = "publisher"; auto pubref = EventFactory::getEventPublisher(publisher); if (pubref != nullptr) { r["subscriptions"] = INTEGER(pubref->numSubscriptions()); r["events"] = INTEGER(pubref->numEvents()); r["restarts"] = INTEGER(pubref->restartCount()); r["active"] = (pubref->hasStarted() && !pubref->isEnding()) ? "1" : "0"; } else { r["subscriptions"] = "0"; r["events"] = "0"; r["restarts"] = "0"; r["active"] = "-1"; } results.push_back(r); } auto subscribers = EventFactory::subscriberNames(); for (const auto& subscriber : subscribers) { Row r; r["name"] = subscriber; r["type"] = "subscriber"; // Subscribers will never 'restart'. r["restarts"] = "0"; auto subref = EventFactory::getEventSubscriber(subscriber); if (subref != nullptr) { r["publisher"] = subref->getType(); r["subscriptions"] = INTEGER(subref->numSubscriptions()); r["events"] = INTEGER(subref->numEvents()); // Subscribers are always active, even if their publisher is not. r["active"] = (subref->state() == SUBSCRIBER_RUNNING) ? "1" : "0"; } else { r["subscriptions"] = "0"; r["events"] = "0"; r["active"] = "-1"; } results.push_back(r); } return results; }
void IntervalAward::loadAward(const rapidjson::Value& value) { _id = value["id"].GetInt(); _interval = value["interval"].GetInt() * 60; ///cast minutes to secs _awardsNum = value["awardsNum"].GetInt(); _itemType = value["itemType"].GetInt(); auto& doc = LOCAL_VAR->getDocument(config_file); sprintf(_key, "interval_%d", _id); if (doc.HasMember(_key)) { _starttime_solid = doc[_key].GetUint64(); }else { restartCount(); } }