VOM: Additions to allow uses to UT applications that use VOM
[vpp.git] / src / vpp-api / vom / route_domain.cpp
index 8ae5785..c723f9f 100644 (file)
 
 #include "vom/route_domain.hpp"
 #include "vom/cmd.hpp"
+#include "vom/route_domain_cmds.hpp"
 
 namespace VOM {
+
+route_domain::event_handler route_domain::m_evh;
+
 /**
  * A DB of al the interfaces, key on the name
  */
@@ -39,6 +43,12 @@ route_domain::route_domain(const route_domain& o)
 {
 }
 
+bool
+route_domain::operator==(const route_domain& r) const
+{
+  return (m_table_id == r.m_table_id);
+}
+
 route::table_id_t
 route_domain::table_id() const
 {
@@ -55,10 +65,12 @@ void
 route_domain::sweep()
 {
   if (m_hw_v4) {
-    HW::enqueue(new delete_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
+    HW::enqueue(
+      new route_domain_cmds::delete_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
   }
   if (m_hw_v6) {
-    HW::enqueue(new delete_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
+    HW::enqueue(
+      new route_domain_cmds::delete_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
   }
   HW::write();
 }
@@ -67,10 +79,12 @@ void
 route_domain::replay()
 {
   if (m_hw_v4) {
-    HW::enqueue(new create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
+    HW::enqueue(
+      new route_domain_cmds::create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
   }
   if (m_hw_v6) {
-    HW::enqueue(new create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
+    HW::enqueue(
+      new route_domain_cmds::create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
   }
 }
 
@@ -125,10 +139,12 @@ route_domain::update(const route_domain& desired)
  * create the table if it is not yet created
  */
   if (rc_t::OK != m_hw_v4.rc()) {
-    HW::enqueue(new create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
+    HW::enqueue(
+      new route_domain_cmds::create_cmd(m_hw_v4, l3_proto_t::IPV4, m_table_id));
   }
   if (rc_t::OK != m_hw_v6.rc()) {
-    HW::enqueue(new create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
+    HW::enqueue(
+      new route_domain_cmds::create_cmd(m_hw_v6, l3_proto_t::IPV6, m_table_id));
   }
 }
 
@@ -157,7 +173,38 @@ route_domain::dump(std::ostream& os)
 {
   m_db.dump(os);
 }
+
+void
+route_domain::event_handler::handle_populate(const client_db::key_t& key)
+{
+}
+
+route_domain::event_handler::event_handler()
+{
+  OM::register_listener(this);
+  inspect::register_handler({ "rd", "route-domain" }, "Route Domains", this);
 }
+
+void
+route_domain::event_handler::handle_replay()
+{
+  m_db.replay();
+}
+
+dependency_t
+route_domain::event_handler::order() const
+{
+  return (dependency_t::TABLE);
+}
+
+void
+route_domain::event_handler::show(std::ostream& os)
+{
+  m_db.dump(os);
+}
+
+}; // namespace VOPM
+
 /*
  * fd.io coding-style-patch-verification: ON
  *