Make UserSubscription as shared_ptr in Subscription
Currently UserSubscription are used as value in Subscription. This
causes the copy of the object between subscriptionsMap and
subscriptionConfigMap when doing PATCH.
Using a shared_ptr for UserSubscription avoids the memory copy of it.
Tested:
- Using Redfish Event Listener, test subscriptions and eventing.
- Redfish Service Validator passes
Change-Id: I5821b72f28ba737a5c9b75288d377766c84c6a6a
Signed-off-by: Myung Bae <myungbae@us.ibm.com>
diff --git a/redfish-core/lib/eventservice_sse.hpp b/redfish-core/lib/eventservice_sse.hpp
index 80c0a3a..8625c63 100644
--- a/redfish-core/lib/eventservice_sse.hpp
+++ b/redfish-core/lib/eventservice_sse.hpp
@@ -47,12 +47,19 @@
std::shared_ptr<Subscription> subValue =
std::make_shared<Subscription>(conn);
- // GET on this URI means, Its SSE subscriptionType.
- subValue->userSub.subscriptionType = redfish::subscriptionTypeSSE;
+ if (subValue->userSub == nullptr)
+ {
+ BMCWEB_LOG_ERROR("Subscription data is null");
+ conn.close("Internal Error");
+ return;
+ }
- subValue->userSub.protocol = "Redfish";
- subValue->userSub.retryPolicy = "TerminateAfterRetries";
- subValue->userSub.eventFormatType = "Event";
+ // GET on this URI means, Its SSE subscriptionType.
+ subValue->userSub->subscriptionType = redfish::subscriptionTypeSSE;
+
+ subValue->userSub->protocol = "Redfish";
+ subValue->userSub->retryPolicy = "TerminateAfterRetries";
+ subValue->userSub->eventFormatType = "Event";
std::string id = manager.addSSESubscription(subValue, lastEventId);
if (id.empty())