Line data Source code
1 : /* 2 : * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #ifndef vnsw_agent_resource_backup_hpp 6 : #define vnsw_agent_resource_backup_hpp 7 : 8 : 9 : #include "resource_manager/resource_manager.h" 10 : #include "resource_manager/sandesh_map.h" 11 : 12 : class Timer; 13 : class ResourceSandeshMaps; 14 : class ResourceManager; 15 : class ResourceTable; 16 : class ResourceData; 17 : 18 : class ResourceBackupReq { 19 : public: 20 : enum Op { 21 : ADD = 1, 22 : DEL, 23 : }; 24 : 25 : ResourceBackupReq(ResourceManager::KeyPtr key, 26 : ResourceManager::DataPtr data, 27 : Op op); 28 : virtual ~ResourceBackupReq(); 29 : void Process(); 30 : ResourceManager::KeyPtr key() {return key_;} 31 : ResourceManager::DataPtr data() {return data_;} 32 : 33 : 34 : private: 35 : ResourceManager::KeyPtr key_; 36 : ResourceManager::DataPtr data_; 37 : Op op_; 38 : DISALLOW_COPY_AND_ASSIGN(ResourceBackupReq); 39 : }; 40 : //Backup manager is to Process the Resource data and store 41 : //it in to a file using Sandesh encoding. 42 : class ResourceBackupManager { 43 : public: 44 : typedef boost::shared_ptr<ResourceBackupReq> ResourceBackupReqPtr; 45 : ResourceBackupManager(ResourceManager *mgr); 46 : virtual ~ResourceBackupManager(); 47 : 48 : void Init(); 49 : ResourceSandeshMaps& sandesh_maps(); 50 : static uint32_t ReadResourceDataFromFile(const std::string &file_name, 51 : std::unique_ptr<uint8_t> *buf); 52 : 53 0 : Agent *agent() {return agent_;} 54 0 : ResourceManager *resource_manager() {return resource_manager_;} 55 : bool WorkQueueBackUpProcess(ResourceBackupReqPtr backup_data); 56 : void BackupResource(ResourceManager::KeyPtr key, 57 : ResourceManager::DataPtr data, 58 : ResourceBackupReq::Op op); 59 : void AuditDone(); 60 : 61 : private: 62 : ResourceManager *resource_manager_; 63 : Agent *agent_; 64 : ResourceSandeshMaps sandesh_maps_; 65 : // Work queue to backup the data. 66 : WorkQueue<ResourceBackupReqPtr> backup_work_queue_; 67 : EventNotifyHandle::Ptr audit_handle_; 68 : DISALLOW_COPY_AND_ASSIGN(ResourceBackupManager); 69 : }; 70 : 71 : #endif