meta/NotificationTwampSessionEvent.cpp (58 lines of code) (raw):
#include "NotificationTwampSessionEvent.h"
#include "swss/logger.h"
#include "meta/sai_serialize.h"
using namespace sairedis;
NotificationTwampSessionEvent::NotificationTwampSessionEvent(
_In_ const std::string& serializedNotification):
Notification(
SAI_SWITCH_NOTIFICATION_TYPE_TWAMP_SESSION_EVENT,
serializedNotification),
m_twampSessionEventNotificationData(nullptr)
{
SWSS_LOG_ENTER();
sai_deserialize_twamp_session_event_ntf(
serializedNotification,
m_count,
&m_twampSessionEventNotificationData);
}
NotificationTwampSessionEvent::~NotificationTwampSessionEvent()
{
SWSS_LOG_ENTER();
sai_deserialize_free_twamp_session_event_ntf(m_count, m_twampSessionEventNotificationData);
}
sai_object_id_t NotificationTwampSessionEvent::getSwitchId() const
{
SWSS_LOG_ENTER();
// this notification don't contain switch id field
return SAI_NULL_OBJECT_ID;
}
sai_object_id_t NotificationTwampSessionEvent::getAnyObjectId() const
{
SWSS_LOG_ENTER();
if (m_twampSessionEventNotificationData == nullptr)
{
return SAI_NULL_OBJECT_ID;
}
for (uint32_t idx = 0; idx < m_count; idx++)
{
if (m_twampSessionEventNotificationData[idx].twamp_session_id != SAI_NULL_OBJECT_ID)
{
return m_twampSessionEventNotificationData[idx].twamp_session_id;
}
}
return SAI_NULL_OBJECT_ID;
}
void NotificationTwampSessionEvent::processMetadata(
_In_ std::shared_ptr<saimeta::Meta> meta) const
{
SWSS_LOG_ENTER();
meta->meta_sai_on_twamp_session_event(m_count, m_twampSessionEventNotificationData);
}
void NotificationTwampSessionEvent::executeCallback(
_In_ const sai_switch_notifications_t& switchNotifications) const
{
SWSS_LOG_ENTER();
if (switchNotifications.on_twamp_session_event)
{
switchNotifications.on_twamp_session_event(m_count, m_twampSessionEventNotificationData);
}
}