syncd/RedisClient.h (127 lines of code) (raw):

#pragma once extern "C" { #include "saimetadata.h" } #include "swss/table.h" #include <string> #include <unordered_map> #include <set> #include <memory> #include <vector> namespace syncd { class RedisClient { public: RedisClient( _In_ std::shared_ptr<swss::DBConnector> dbAsic); virtual ~RedisClient(); public: void clearLaneMap( _In_ sai_object_id_t switchVid) const; std::unordered_map<sai_uint32_t, sai_object_id_t> getLaneMap( _In_ sai_object_id_t switchVid) const; void saveLaneMap( _In_ sai_object_id_t switchVid, _In_ const std::unordered_map<sai_uint32_t, sai_object_id_t>& map) const; std::unordered_map<sai_object_id_t, sai_object_id_t> getVidToRidMap( _In_ sai_object_id_t switchVid) const; std::unordered_map<sai_object_id_t, sai_object_id_t> getRidToVidMap( _In_ sai_object_id_t switchVid) const; std::unordered_map<sai_object_id_t, sai_object_id_t> getVidToRidMap() const; std::unordered_map<sai_object_id_t, sai_object_id_t> getRidToVidMap() const; void setDummyAsicStateObject( _In_ sai_object_id_t objectVid); void saveColdBootDiscoveredVids( _In_ sai_object_id_t switchVid, _In_ const std::set<sai_object_id_t>& coldVids); std::shared_ptr<std::string> getSwitchHiddenAttribute( _In_ sai_object_id_t switchVid, _In_ const std::string& attrIdName); void saveSwitchHiddenAttribute( _In_ sai_object_id_t switchVid, _In_ const std::string& attrIdName, _In_ sai_object_id_t objectRid); std::set<sai_object_id_t> getColdVids( _In_ sai_object_id_t switchVid); void setPortLanes( _In_ sai_object_id_t switchVid, _In_ sai_object_id_t portRid, _In_ const std::vector<uint32_t>& lanes); size_t getAsicObjectsSize( _In_ sai_object_id_t switchVid) const; int removePortFromLanesMap( _In_ sai_object_id_t switchVid, _In_ sai_object_id_t portRid) const; void removeAsicObject( _In_ sai_object_id_t objectVid) const; void removeAsicObject( _In_ const sai_object_meta_key_t& metaKey); void removeTempAsicObject( _In_ const sai_object_meta_key_t& metaKey); void removeAsicObjects( _In_ const std::vector<std::string>& keys); void removeTempAsicObjects( _In_ const std::vector<std::string>& keys); void createAsicObject( _In_ const sai_object_meta_key_t& metaKey, _In_ const std::vector<swss::FieldValueTuple>& attrs); void createTempAsicObject( _In_ const sai_object_meta_key_t& metaKey, _In_ const std::vector<swss::FieldValueTuple>& attrs); void createAsicObjects( _In_ const std::unordered_map<std::string, std::vector<swss::FieldValueTuple>>& multiHash); void createTempAsicObjects( _In_ const std::unordered_map<std::string, std::vector<swss::FieldValueTuple>>& multiHash); void setVidAndRidMap( _In_ const std::unordered_map<sai_object_id_t, sai_object_id_t>& map); std::vector<std::string> getAsicStateKeys() const; std::vector<std::string> getAsicStateSwitchesKeys() const; void removeColdVid( _In_ sai_object_id_t vid); std::unordered_map<std::string, std::string> getAttributesFromAsicKey( _In_ const std::string& key) const; bool hasNoHiddenKeysDefined() const; void removeVidAndRid( _In_ sai_object_id_t vid, _In_ sai_object_id_t rid); void insertVidAndRid( _In_ sai_object_id_t vid, _In_ sai_object_id_t rid); sai_object_id_t getVidForRid( _In_ sai_object_id_t rid); sai_object_id_t getRidForVid( _In_ sai_object_id_t vid); void removeAsicStateTable(); void removeTempAsicStateTable(); std::map<sai_object_id_t, swss::TableDump> getAsicView(); std::map<sai_object_id_t, swss::TableDump> getTempAsicView(); void setAsicObject( _In_ const sai_object_meta_key_t& metaKey, _In_ const std::string& attr, _In_ const std::string& value); void setTempAsicObject( _In_ const sai_object_meta_key_t& metaKey, _In_ const std::string& attr, _In_ const std::string& value); void processFlushEvent( _In_ sai_object_id_t switchVid, _In_ sai_object_id_t portVid, _In_ sai_object_id_t bvId, _In_ sai_fdb_flush_entry_type_t type); private: std::map<sai_object_id_t, swss::TableDump> getAsicView( _In_ const std::string &tableName); std::string getRedisLanesKey( _In_ sai_object_id_t switchVid) const; std::string getRedisColdVidsKey( _In_ sai_object_id_t switchVid) const; std::string getRedisHiddenKey( _In_ sai_object_id_t switchVid) const; std::unordered_map<sai_object_id_t, sai_object_id_t> getObjectMap( _In_ const std::string& key) const; private: std::shared_ptr<swss::DBConnector> m_dbAsic; std::string m_fdbFlushSha; }; }