OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
qos_queue.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __AGENT_OPER_QOS_QUEUE_H
6 #define __AGENT_OPER_QOS_QUEUE_H
7 
8 #include <cmn/agent.h>
9 #include <oper_db.h>
10 #include <cmn/index_vector.h>
11 
12 class Agent;
13 class DB;
14 
15 struct QosQueueKey : public AgentOperDBKey {
17  uuid_(uuid) {}
18 
19  QosQueueKey(const QosQueueKey &rhs):
20  uuid_(rhs.uuid_) {}
21 
22  bool IsLess(const QosQueueKey &rhs) const {
23  return uuid_ < rhs.uuid_;
24  }
25 
27 };
28 
29 struct QosQueueData : public AgentOperDBData {
30 
31  QosQueueData(const Agent *agent, IFMapNode *node, const std::string &name,
32  uint16_t id):
33  AgentOperDBData(agent, node), name_(name), id_(id) {}
34  std::string name_;
35  uint16_t id_;
36 };
37 
38 class QosQueue :
39  AgentRefCount<QosQueue>, public AgentOperDBEntry {
40 public:
42  virtual ~QosQueue();
43 
44  KeyPtr GetDBRequestKey() const;
45  std::string ToString() const;
46  virtual bool IsLess(const DBEntry &rhs) const;
47  virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const;
48 
49  virtual bool Change(const DBRequest *req);
50  virtual void Delete(const DBRequest *req);
51  virtual void SetKey(const DBRequestKey *key);
52  virtual void PostAdd();
53 
54  virtual bool DeleteOnZeroRefCount() const {
55  return false;
56  }
57  virtual void OnZeroRefCount() {};
58  uint32_t GetRefCount() const {
60  }
61 
62  const boost::uuids::uuid& uuid() const {return uuid_;}
63  uint32_t id() const {
64  return id_;
65  }
66  void set_id(uint32_t id) {
67  id_ = id;
68  }
69 
70  const std::string& name() const {
71  return name_;
72  }
73 
74  uint16_t nic_queue_id() const {
75  return nic_queue_id_;
76  }
77 
78 private:
80  uint16_t id_;
81  std::string name_;
82  uint16_t nic_queue_id_;
84 };
85 
87 public:
88  static const uint32_t kInvalidIndex=0xFF;
89  QosQueueTable(Agent *agent, DB *db, const std::string &name);
90  virtual ~QosQueueTable();
91 
92  static DBTableBase *CreateTable(Agent *agent, DB *db,
93  const std::string &name);
94 
95  virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *k) const;
96 
97  virtual size_t Hash(const DBEntry *entry) const {return 0;}
98  virtual size_t Hash(const DBRequestKey *key) const {return 0;}
99 
100  virtual DBEntry *OperDBAdd(const DBRequest *req);
101  virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req);
102  virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req);
103  virtual bool OperDBResync(DBEntry *entry, const DBRequest *req);
104 
105  virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req,
106  const boost::uuids::uuid &u);
107  virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u);
108  virtual bool ProcessConfig(IFMapNode *node, DBRequest &req,
109  const boost::uuids::uuid &u);
110  void ReleaseIndex(QosQueue *qos_queue);
112  const std::string &context);
113 private:
116 };
117 #endif
void set_id(uint32_t id)
Definition: qos_queue.h:66
uint16_t id_
Definition: qos_queue.h:80
std::string name_
Definition: qos_queue.h:81
virtual void PostAdd()
Definition: qos_queue.cc:50
uint32_t GetRefCount() const
Definition: agent_db.h:54
static const uint32_t kInvalidIndex
Definition: qos_queue.h:88
Agent * agent() const
Definition: agent_db.h:213
boost::uuids::uuid uuid
uint16_t nic_queue_id_
Definition: qos_queue.h:82
QosQueue(const boost::uuids::uuid &uuid)
Definition: qos_queue.cc:14
IndexVector< QosQueue * > index_table_
Definition: qos_queue.h:114
std::unique_ptr< DBRequestKey > KeyPtr
Definition: db_entry.h:25
KeyPtr GetDBRequestKey() const
Definition: qos_queue.cc:21
std::string name_
Definition: qos_queue.h:34
virtual void OnZeroRefCount()
Definition: qos_queue.h:57
Definition: db.h:24
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
Definition: qos_queue.cc:118
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
Definition: qos_queue.cc:131
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
Definition: qos_queue.cc:102
Definition: agent.h:358
DISALLOW_COPY_AND_ASSIGN(QosQueue)
void ReleaseIndex(QosQueue *qos_queue)
Definition: qos_queue.cc:169
QosQueueKey(const QosQueueKey &rhs)
Definition: qos_queue.h:19
uint16_t nic_queue_id() const
Definition: qos_queue.h:74
const std::string & name() const
Definition: qos_queue.h:70
virtual ~QosQueueTable()
Definition: qos_queue.cc:91
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
Definition: qos_queue.cc:173
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
Definition: agent_db.h:18
virtual ~QosQueue()
Definition: qos_queue.cc:18
virtual void SetKey(const DBRequestKey *key)
Definition: qos_queue.cc:79
const std::string & name() const
Definition: db_table.h:110
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
Definition: qos_queue.cc:123
std::string ToString() const
Definition: qos_queue.cc:26
QosQueueKey(const boost::uuids::uuid &uuid)
Definition: qos_queue.h:16
QosQueueTable(Agent *agent, DB *db, const std::string &name)
Definition: qos_queue.cc:85
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
Definition: qos_queue.cc:127
QosQueueData(const Agent *agent, IFMapNode *node, const std::string &name, uint16_t id)
Definition: qos_queue.h:31
void Delete()
Definition: db_entry.cc:131
const Agent * agent() const
Definition: oper_db.h:65
uint16_t id_
Definition: qos_queue.h:35
boost::uuids::uuid uuid_
Definition: qos_queue.h:79
virtual bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
Definition: qos_queue.cc:154
uint32_t id() const
Definition: qos_queue.h:63
virtual bool IsLess(const DBEntry &rhs) const
Definition: qos_queue.cc:45
virtual size_t Hash(const DBEntry *entry) const
Definition: qos_queue.h:97
virtual size_t Hash(const DBRequestKey *key) const
Definition: qos_queue.h:98
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
Definition: qos_queue.cc:95
const boost::uuids::uuid & uuid() const
Definition: qos_queue.h:62
bool IsLess(const QosQueueKey &rhs) const
Definition: qos_queue.h:22
virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const
Definition: qos_queue.cc:32
virtual DBEntry * OperDBAdd(const DBRequest *req)
Definition: qos_queue.cc:109
boost::uuids::uuid uuid_
Definition: qos_queue.h:26
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
Definition: qos_queue.cc:145
virtual bool DeleteOnZeroRefCount() const
Definition: qos_queue.h:54
virtual bool Change(const DBRequest *req)
Definition: qos_queue.cc:55
DISALLOW_COPY_AND_ASSIGN(QosQueueTable)
uint32_t GetRefCount() const
Definition: qos_queue.h:58