common/redis_table_waiter.h (32 lines of code) (raw):
#pragma once
#include <functional>
#include <string>
#include "dbconnector.h"
namespace swss
{
class RedisTableWaiter
{
public:
typedef std::function<bool(const std::string &)> ConditionFunc;
typedef std::function<bool(const KeyOpFieldsValuesTuple &)> CheckFunc;
static bool waitUntilFieldSet(DBConnector &db,
const std::string &tableName,
const std::string &key,
const std::string &fieldName,
unsigned int maxWaitSec,
ConditionFunc &cond);
static bool waitUntilKeySet(DBConnector &db,
const std::string &tableName,
const std::string &key,
unsigned int maxWaitSec);
static bool waitUntilKeyDel(DBConnector &db,
const std::string &tableName,
const std::string &key,
unsigned int maxWaitSec);
static bool waitUntil(
DBConnector &db,
const std::string &tableName,
unsigned int maxWaitSec,
CheckFunc &checkFunc);
};
}