@@ -23,39 +23,12 @@ extern sai_object_id_t gSwitchId;
2323extern size_t gMaxBulkSize ;
2424extern CrmOrch *gCrmOrch ;
2525extern Directory<Orch*> gDirectory ;
26- extern bool gTraditionalFlexCounter ;
2726
28- #define METER_FLEX_COUNTER_UPD_INTERVAL 1
29-
30- DashMeterOrch::DashMeterOrch (DBConnector *db, const vector<string> &tables, DashOrch *dash_orch, DBConnector *app_state_db, ZmqServer *zmqServer) :
31- m_meter_stat_manager(METER_STAT_COUNTER_FLEX_COUNTER_GROUP, StatsMode::READ, METER_STAT_FLEX_COUNTER_POLLING_INTERVAL_MS, false ),
27+ DashMeterOrch::DashMeterOrch (DBConnector *db, const vector<string> &tables, DBConnector *app_state_db, ZmqServer *zmqServer) :
3228 meter_rule_bulker_(sai_dash_meter_api, gSwitchId , gMaxBulkSize ),
33- ZmqOrch(db, tables, zmqServer),
34- m_dash_orch(dash_orch)
29+ ZmqOrch(db, tables, zmqServer)
3530{
3631 SWSS_LOG_ENTER ();
37-
38- m_counter_db = std::shared_ptr<DBConnector>(new DBConnector (" COUNTERS_DB" , 0 ));
39- m_asic_db = std::shared_ptr<DBConnector>(new DBConnector (" ASIC_DB" , 0 ));
40-
41- if (gTraditionalFlexCounter )
42- {
43- m_vid_to_rid_table = std::make_unique<Table>(m_asic_db.get (), " VIDTORID" );
44- }
45-
46- auto intervT = timespec { .tv_sec = METER_FLEX_COUNTER_UPD_INTERVAL , .tv_nsec = 0 };
47- m_meter_fc_update_timer = new SelectableTimer (intervT);
48- auto executorT = new ExecutableTimer (m_meter_fc_update_timer, this , " METER_FLEX_COUNTER_UPD_TIMER" );
49- Orch::addExecutor (executorT);
50-
51- /* Fetch the meter bucket counter Ids */
52- m_meter_counter_stats.clear ();
53- auto stat_enum_list = queryAvailableCounterStats ((sai_object_type_t )SAI_OBJECT_TYPE_METER_BUCKET_ENTRY);
54- for (auto &stat_enum: stat_enum_list)
55- {
56- auto counter_id = static_cast <sai_meter_bucket_entry_stat_t >(stat_enum);
57- m_meter_counter_stats.emplace (sai_serialize_meter_bucket_entry_stat (counter_id));
58- }
5932}
6033
6134sai_object_id_t DashMeterOrch::getMeterPolicyOid (const string& meter_policy) const
@@ -619,88 +592,3 @@ void DashMeterOrch::doTask(ConsumerBase& consumer)
619592 SWSS_LOG_ERROR (" Unknown table: %s" , tn.c_str ());
620593 }
621594}
622-
623- void DashMeterOrch::addEniToMeterFC (sai_object_id_t oid, const string &name)
624- {
625- if (!m_meter_fc_status)
626- {
627- return ;
628- }
629- auto was_empty = m_meter_stat_work_queue.empty ();
630- m_meter_stat_work_queue[oid] = name;
631- if (was_empty)
632- {
633- m_meter_fc_update_timer->start ();
634- }
635- }
636-
637- void DashMeterOrch::removeEniFromMeterFC (sai_object_id_t oid, const string &name)
638- {
639- SWSS_LOG_ENTER ();
640-
641- if (oid == SAI_NULL_OBJECT_ID)
642- {
643- SWSS_LOG_WARN (" Cannot remove meter counter on NULL OID for eni %s" , name.c_str ());
644- return ;
645- }
646- if (m_meter_stat_work_queue.find (oid) != m_meter_stat_work_queue.end ())
647- {
648- m_meter_stat_work_queue.erase (oid);
649- return ;
650- }
651-
652- m_meter_stat_manager.clearCounterIdList (oid);
653- SWSS_LOG_INFO (" Unregistering FC for ENI %s, oid %s" , name.c_str (), sai_serialize_object_id (oid).c_str ());
654- }
655-
656- void DashMeterOrch::handleMeterFCStatusUpdate (bool enabled)
657- {
658- DashOrch *dash_orch = gDirectory .get <DashOrch*>();
659- bool prev_enabled = m_meter_fc_status;
660- m_meter_fc_status = enabled; /* Update the status */
661- if (!enabled && prev_enabled)
662- {
663- m_meter_fc_update_timer->stop ();
664- dash_orch->refreshMeterFCStats (false ); /* Clear any existing FC entries */
665- }
666- else if (enabled && !prev_enabled)
667- {
668- dash_orch->refreshMeterFCStats (true );
669- m_meter_fc_update_timer->start ();
670- }
671- }
672-
673- void DashMeterOrch::doTask (SelectableTimer &timer)
674- {
675- SWSS_LOG_ENTER ();
676-
677- if (!m_meter_fc_status)
678- {
679- m_meter_fc_update_timer->stop ();
680- return ;
681- }
682-
683- for (auto it = m_meter_stat_work_queue.begin (); it != m_meter_stat_work_queue.end (); )
684- {
685- string value;
686- const auto id = sai_serialize_object_id (it->first );
687- if (!gTraditionalFlexCounter || m_vid_to_rid_table->hget (" " , id, value))
688- {
689- SWSS_LOG_INFO (" Registering FC for ENI %s, oid %s" , it->second .c_str (), id.c_str ());
690- std::vector<FieldValueTuple> eniNameFvs;
691- eniNameFvs.emplace_back (it->second , id);
692-
693- m_meter_stat_manager.setCounterIdList (it->first , CounterType::DASH_METER, m_meter_counter_stats);
694- it = m_meter_stat_work_queue.erase (it);
695- }
696- else
697- {
698- ++it;
699- }
700- }
701-
702- if (m_meter_stat_work_queue.empty ())
703- {
704- m_meter_fc_update_timer->stop ();
705- }
706- }
0 commit comments