OpenSDN source code
forwarding_class.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_FORWARDING_CLASS_H
6 #define __AGENT_OPER_FORWARDING_CLASS_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;
15 
18  uuid_(uuid) {}
19 
21  uuid_(rhs.uuid_) {}
22 
23  bool IsLess(const ForwardingClassKey &rhs) const {
24  return uuid_ < rhs.uuid_;
25  }
26 
28 };
29 
31 
33  uint32_t dscp, uint32_t vlan_priority,
34  uint32_t mpls_exp, uint32_t id,
35  const boost::uuids::uuid &qos_queue_uuid,
36  const std::string &name):
37  AgentOperDBData(agent, node), dscp_(dscp), vlan_priority_(vlan_priority),
38  mpls_exp_(mpls_exp), id_(id), qos_queue_uuid_(qos_queue_uuid) {}
39 
40  uint32_t dscp_;
41  uint32_t vlan_priority_;
42  uint32_t mpls_exp_;
43  uint32_t id_;
45  std::string name_;
46 };
47 
49  AgentRefCount<ForwardingClass>, public AgentOperDBEntry {
50  public:
52  virtual ~ForwardingClass();
53 
54  KeyPtr GetDBRequestKey() const;
55  std::string ToString() const;
56  virtual bool IsLess(const DBEntry &rhs) const;
57  virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const;
58 
59  virtual bool Change(const DBRequest *req);
60  virtual void Delete(const DBRequest *req);
61  virtual void SetKey(const DBRequestKey *key);
62 
63  virtual bool DeleteOnZeroRefCount() const {
64  return false;
65  }
66  virtual void OnZeroRefCount() {};
67  uint32_t GetRefCount() const {
69  }
70 
71  uint32_t dscp() const {return dscp_;}
72  uint32_t vlan_priority() const {return vlan_priority_;}
73  uint32_t mpls_exp() const { return mpls_exp_;}
74  uint32_t id() const {return id_;}
75  const QosQueue* qos_queue_ref() const {
76  return qos_queue_ref_.get();
77  }
78  const boost::uuids::uuid& uuid() const {
79  return uuid_;
80  }
81  const std::string& name() const {
82  return name_;
83  }
84 
85  uint16_t nic_queue_id() const {
86  return nic_queue_id_;
87  }
88 
89 private:
91  uint32_t id_;
92  uint32_t dscp_;
93  uint32_t vlan_priority_;
94  uint32_t mpls_exp_;
96  std::string name_;
97  uint16_t nic_queue_id_;
99 };
100 
102 public:
103  ForwardingClassTable(Agent *agent, DB *db, const std::string &name);
104  virtual ~ForwardingClassTable();
105  static const uint32_t kInvalidIndex=0xFF;
106 
107  static DBTableBase *CreateTable(Agent *agent, DB *db,
108  const std::string &name);
109 
110  virtual std::unique_ptr<DBEntry> AllocEntry(const DBRequestKey *k) const;
111 
112  virtual size_t Hash(const DBEntry *entry) const {return 0;}
113  virtual size_t Hash(const DBRequestKey *key) const {return 0;}
114 
115  virtual DBEntry *OperDBAdd(const DBRequest *req);
116  virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req);
117  virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req);
118  virtual bool OperDBResync(DBEntry *entry, const DBRequest *req);
119 
120  virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req,
121  const boost::uuids::uuid &u);
122  virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u);
123  virtual bool ProcessConfig(IFMapNode *node, DBRequest &req,
124  const boost::uuids::uuid &u);
126  const std::string &context);
128 private:
130 };
131 #endif
boost::intrusive_ptr< const QosQueue > QosQueueConstRef
Definition: agent.h:184
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
Definition: agent_db.h:18
Agent * agent() const
Definition: agent_db.h:213
uint32_t GetRefCount() const
Definition: agent_db.h:54
Definition: agent.h:360
std::unique_ptr< DBRequestKey > KeyPtr
Definition: db_entry.h:25
void Delete()
Definition: db_entry.cc:131
const std::string & name() const
Definition: db_table.h:110
Definition: db.h:24
virtual DBEntry * OperDBAdd(const DBRequest *req)
ForwardingClassData * BuildData(IFMapNode *node)
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
ForwardingClassTable(Agent *agent, DB *db, const std::string &name)
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
virtual bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
DISALLOW_COPY_AND_ASSIGN(ForwardingClassTable)
static const uint32_t kInvalidIndex
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
virtual size_t Hash(const DBRequestKey *key) const
virtual size_t Hash(const DBEntry *entry) const
const std::string & name() const
std::string name_
DISALLOW_COPY_AND_ASSIGN(ForwardingClass)
const QosQueue * qos_queue_ref() const
virtual bool DeleteOnZeroRefCount() const
boost::uuids::uuid uuid_
uint16_t nic_queue_id_
virtual void SetKey(const DBRequestKey *key)
virtual ~ForwardingClass()
virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const
KeyPtr GetDBRequestKey() const
virtual bool Change(const DBRequest *req)
uint32_t id() const
uint32_t vlan_priority() const
QosQueueConstRef qos_queue_ref_
virtual void OnZeroRefCount()
uint16_t nic_queue_id() const
virtual bool IsLess(const DBEntry &rhs) const
std::string ToString() const
uint32_t mpls_exp() const
uint32_t dscp() const
ForwardingClass(const boost::uuids::uuid &uuid)
uint32_t vlan_priority_
uint32_t GetRefCount() const
const boost::uuids::uuid & uuid() const
const Agent * agent() const
Definition: oper_db.h:65
ForwardingClassData(const Agent *agent, IFMapNode *node, uint32_t dscp, uint32_t vlan_priority, uint32_t mpls_exp, uint32_t id, const boost::uuids::uuid &qos_queue_uuid, const std::string &name)
boost::uuids::uuid qos_queue_uuid_
bool IsLess(const ForwardingClassKey &rhs) const
ForwardingClassKey(const ForwardingClassKey &rhs)
boost::uuids::uuid uuid_
ForwardingClassKey(const boost::uuids::uuid &uuid)
boost::uuids::uuid uuid