OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
virtual DBEntry * OperDBAdd(const DBRequest *req)
virtual bool IsLess(const DBEntry &rhs) const
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
uint32_t GetRefCount() const
Definition: agent_db.h:54
std::string ToString() const
virtual bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
boost::uuids::uuid uuid_
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
virtual bool DeleteOnZeroRefCount() const
const QosQueue * qos_queue_ref() const
virtual void OnZeroRefCount()
Agent * agent() const
Definition: agent_db.h:213
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
const std::string & name() const
ForwardingClassKey(const boost::uuids::uuid &uuid)
boost::uuids::uuid uuid
ForwardingClassKey(const ForwardingClassKey &rhs)
DISALLOW_COPY_AND_ASSIGN(ForwardingClass)
virtual bool Change(const DBRequest *req)
std::unique_ptr< DBRequestKey > KeyPtr
Definition: db_entry.h:25
uint32_t vlan_priority_
boost::intrusive_ptr< const QosQueue > QosQueueConstRef
Definition: agent.h:184
KeyPtr GetDBRequestKey() const
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
Definition: db.h:24
uint32_t id() const
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)
uint32_t dscp() const
Definition: agent.h:358
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
ForwardingClass(const boost::uuids::uuid &uuid)
std::string name_
static const uint32_t kInvalidIndex
uint32_t mpls_exp() const
boost::uuids::uuid uuid_
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
Definition: agent_db.h:18
const std::string & name() const
Definition: db_table.h:110
uint32_t GetRefCount() const
uint32_t vlan_priority() const
void Delete()
Definition: db_entry.cc:131
ForwardingClassTable(Agent *agent, DB *db, const std::string &name)
uint16_t nic_queue_id_
const boost::uuids::uuid & uuid() const
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
QosQueueConstRef qos_queue_ref_
const Agent * agent() const
Definition: oper_db.h:65
ForwardingClassData * BuildData(IFMapNode *node)
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
virtual ~ForwardingClass()
bool IsLess(const ForwardingClassKey &rhs) const
virtual size_t Hash(const DBRequestKey *key) const
DISALLOW_COPY_AND_ASSIGN(ForwardingClassTable)
virtual size_t Hash(const DBEntry *entry) const
uint16_t nic_queue_id() const
virtual void SetKey(const DBRequestKey *key)
virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const
boost::uuids::uuid qos_queue_uuid_