OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
resource_manager.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_resource_manager_hpp
6 #define vnsw_agent_resource_manager_hpp
7 
10 
11 
12 class Resource;
13 class ResourceKey;
14 class ResourceData;
15 class ResourceTable;
16 class ResourceRestoreReq;
18 
19 // Resource maanager is to restore the resources.
20 // and retain the old labels after reading form the File.
22 public:
23  typedef boost::shared_ptr<ResourceKey> KeyPtr;
24  typedef boost::shared_ptr<ResourceData> DataPtr;
25  typedef boost::shared_ptr<ResourceRestoreReq> ResourceRestoreReqPtr;
26 
29 
30  void Init();
31 
32  void ReserveIndex(Resource::Type, uint32_t index);
33  void ReleaseIndex(Resource::Type, uint32_t index);
34 
36  void EnqueueRestore(KeyPtr key, DataPtr data);
37  void RestoreResource(KeyPtr key, DataPtr data);
38  void Release(KeyPtr key);
39  void Release(Resource::Type, uint32_t index);
42  bool Audit();
43 
44  //Work queue to restore the data.
46  Agent *agent() {return agent_;}
47 private:
49  boost::scoped_ptr<ResourceTable>resource_table_[Resource::MAX];
51  boost::scoped_ptr<ResourceBackupManager> backup_mgr_;
53 };
54 // Restore request is to restore the Data & Key from File.
56 public:
59  virtual ~ResourceRestoreReq();
62 
63 private:
67 };
68 
69 #endif //resource_manager
bool WorkQueueRestoreProcess(ResourceRestoreReqPtr restore_data)
ResourceTable * resource_table(uint8_t type)
void EnqueueRestore(KeyPtr key, DataPtr data)
ResourceManager::DataPtr data_
boost::scoped_ptr< ResourceTable > resource_table_[Resource::MAX]
void Release(KeyPtr key)
DISALLOW_COPY_AND_ASSIGN(ResourceRestoreReq)
boost::shared_ptr< ResourceKey > KeyPtr
ResourceManager::KeyPtr key_
boost::shared_ptr< ResourceData > DataPtr
ResourceManager(Agent *agent)
void ReleaseIndex(Resource::Type, uint32_t index)
void ReserveIndex(Resource::Type, uint32_t index)
boost::scoped_ptr< ResourceBackupManager > backup_mgr_
ResourceManager::KeyPtr key()
WorkQueue< ResourceRestoreReqPtr > restore_work_queue_
uint8_t type
Definition: load_balance.h:109
Definition: agent.h:358
DISALLOW_COPY_AND_ASSIGN(ResourceManager)
boost::shared_ptr< ResourceRestoreReq > ResourceRestoreReqPtr
ResourceManager::DataPtr Allocate(KeyPtr key)
ResourceBackupManager * backup_mgr()
void RestoreResource(KeyPtr key, DataPtr data)
virtual ~ResourceRestoreReq()
ResourceRestoreReq(ResourceManager::KeyPtr key, ResourceManager::DataPtr data)
ResourceManager::DataPtr data()