16 #ifndef ALEXA_CLIENT_SDK_CAPABILITIESDELEGATE_INCLUDE_CAPABILITIESDELEGATE_DISCOVERYEVENTSENDER_H_
17 #define ALEXA_CLIENT_SDK_CAPABILITIESDELEGATE_INCLUDE_CAPABILITIESDELEGATE_DISCOVERYEVENTSENDER_H_
22 #include <unordered_map>
36 namespace capabilitiesDelegate {
43 ,
public std::enable_shared_from_this<DiscoveryEventSender> {
56 static std::shared_ptr<DiscoveryEventSender>
create(
57 const std::unordered_map<std::string, std::string>& addOrUpdateReportEndpoints,
58 const std::unordered_map<std::string, std::string>& deleteReportEndpoints,
59 const std::shared_ptr<avsCommon::sdkInterfaces::AuthDelegateInterface>& authDelegate,
60 const bool waitForEventProcessed =
true);
70 const std::shared_ptr<avsCommon::sdkInterfaces::MessageSenderInterface>& messageSender)
override;
97 const std::unordered_map<std::string, std::string>& addOrUpdateReportEndpoints,
98 const std::unordered_map<std::string, std::string>& deleteReportEndpoints,
99 const std::shared_ptr<avsCommon::sdkInterfaces::AuthDelegateInterface>& authDelegate,
100 const bool waitForEventProcessed);
112 bool sendDiscoveryEventWithRetries(
113 const std::shared_ptr<avsCommon::sdkInterfaces::MessageSenderInterface>& messageSender,
114 const std::vector<std::string>& endpointConfigurations,
115 bool isAddOrUpdateReportEvent =
true);
127 const std::shared_ptr<avsCommon::sdkInterfaces::MessageSenderInterface>& messageSender,
128 const std::string& eventString,
129 bool waitForEventProcessed =
true);
138 bool sendAddOrUpdateReportEvents(
139 const std::shared_ptr<avsCommon::sdkInterfaces::MessageSenderInterface>& messageSender);
148 bool sendDeleteReportEvents(
const std::shared_ptr<avsCommon::sdkInterfaces::MessageSenderInterface>& messageSender);
160 const std::vector<std::string>& endpointConfigurations,
161 const std::shared_ptr<avsCommon::sdkInterfaces::MessageSenderInterface>& messageSender,
162 bool isAddOrUpdateReportEvent =
true);
178 std::string getAuthToken();
188 std::unordered_map<std::string, std::string> m_addOrUpdateReportEndpoints;
191 std::unordered_map<std::string, std::string> m_deleteReportEndpoints;
194 std::shared_ptr<avsCommon::sdkInterfaces::AuthDelegateInterface> m_authDelegate;
200 std::mutex m_authStatusMutex;
207 std::string m_currentEventCorrelationToken;
222 std::shared_ptr<avsCommon::avs::WaitableMessageRequest> m_messageRequest;
225 std::mutex m_observerMutex;
228 std::shared_ptr<DiscoveryStatusObserverInterface> m_observer;
231 std::mutex m_isSendDiscoveryEventsInvokedMutex;
234 bool m_isSendDiscoveryEventsInvoked;
237 const bool m_waitForEventProcessed;
243 #endif // ALEXA_CLIENT_SDK_CAPABILITIESDELEGATE_INCLUDE_CAPABILITIESDELEGATE_DISCOVERYEVENTSENDER_H_