common/subscriberstatetable.h (26 lines of code) (raw):
#pragma once
#include <string>
#include <deque>
#include <memory.h>
#include "dbconnector.h"
#include "consumertablebase.h"
namespace swss {
class SubscriberStateTable : public ConsumerTableBase
{
public:
SubscriberStateTable(DBConnector *db, const std::string &tableName, int popBatchSize = DEFAULT_POP_BATCH_SIZE, int pri = 0);
/* Get all elements available */
void pops(std::deque<KeyOpFieldsValuesTuple> &vkco, const std::string &prefix = EMPTY_PREFIX);
/* Read keyspace event from redis */
uint64_t readData() override;
bool hasData() override;
bool hasCachedData() override;
bool initializedWithData() override
{
return !m_buffer.empty();
}
private:
/* Pop keyspace event from event buffer. Caller should free resources. */
std::shared_ptr<RedisReply> popEventBuffer();
std::string m_keyspace;
std::deque<std::shared_ptr<RedisReply>> m_keyspace_event_buffer;
Table m_table;
};
}