Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef ctrlplane_ifmap_table_h 6 : #define ctrlplane_ifmap_table_h 7 : 8 : #include "db/db_graph_table.h" 9 : 10 : class IFMapNode; 11 : class IFMapNodeTableListShowEntry; 12 : class IFMapObject; 13 : 14 : class IFMapTable : public DBGraphTable { 15 : public: 16 : static const int kPartitionCount = 1; 17 : struct RequestKey : DBRequestKey { 18 : std::string id_type; 19 : std::string id_name; 20 : uint64_t id_seq_num; 21 : }; 22 : 23 : IFMapTable(DB *db, const std::string &name, DBGraph *graph); 24 : 25 2449874 : virtual int PartitionCount() const { 26 2449874 : return kPartitionCount; 27 : } 28 : 29 : virtual const char *Typename() const = 0; 30 : 31 : // Allocate an IFMapObject 32 : virtual IFMapObject *AllocObject() = 0; 33 : 34 : IFMapNode *FindNode(const std::string &name); 35 : IFMapNode *FindNextNode(const std::string &name); 36 : 37 : virtual void Clear() = 0; 38 : 39 : static IFMapTable *FindTable(DB *db, const std::string &element_type); 40 : static void ClearTables(DB *db); 41 : static void FillNodeTableList(DB *db, 42 : std::vector<IFMapNodeTableListShowEntry> *table_list); 43 : }; 44 : #endif