7#include <aws/core/client/ClientConfiguration.h>
8#include <aws/queues/Queues_EXPORTS.h>
18 static const char*
MEM_TAG =
"Aws::Queues::Queue";
24 template<
typename MESSAGE_TYPE>
27 typedef std::function<void(
const Queue*,
const MESSAGE_TYPE&,
bool&)> MessageReceivedEventHandler;
28 typedef std::function<void(
const Queue*,
const MESSAGE_TYPE&)> MessageDeleteFailedEventHandler;
29 typedef std::function<void(
const Queue*,
const MESSAGE_TYPE&)> MessageDeleteSuccessEventHandler;
30 typedef std::function<void(
const Queue*,
const MESSAGE_TYPE&)> MessageSendFailedEventHandler;
31 typedef std::function<void(
const Queue*,
const MESSAGE_TYPE&)> MessageSendSuccessEventHandler;
40 Queue(
unsigned pollingFrequency) :
41 m_continue(true), m_pollingFrequencyMs(pollingFrequency), m_pollingThread(nullptr)
50 virtual MESSAGE_TYPE
Top()
const = 0;
51 virtual void Delete(
const MESSAGE_TYPE&) = 0;
52 virtual void Push(
const MESSAGE_TYPE&) = 0;
79 m_pollingThread->join();
80 m_pollingThread =
nullptr;
110 auto start = std::chrono::system_clock::now();
127 auto stop = std::chrono::system_clock::now();
130 if (m_pollingFrequencyMs >=
timeTaken.count())
132 std::this_thread::sleep_for(std::chrono::milliseconds(m_pollingFrequencyMs -
timeTaken.count()));
138 unsigned m_pollingFrequencyMs;
142 MessageReceivedEventHandler m_messageReceivedHandler;
143 MessageDeleteFailedEventHandler m_messageDeleteFailedHandler;
144 MessageDeleteSuccessEventHandler m_messageDeleteSuccessHandler;
145 MessageSendFailedEventHandler m_messageSendFailedHandler;
146 MessageSendSuccessEventHandler m_messageSendSuccessHandler;
const MessageDeleteFailedEventHandler & GetMessageDeleteFailedEventHandler() const
void SetMessageDeleteSuccessEventHandler(const MessageDeleteSuccessEventHandler &messageHandler)
const MessageSendFailedEventHandler & GetMessageSendFailedEventHandler() const
const MessageDeleteSuccessEventHandler & GetMessageDeleteSuccessEventHandler() const
virtual MESSAGE_TYPE Top() const =0
void SetMessageSendFailedEventHandler(const MessageSendFailedEventHandler &messageHandler)
const MessageSendSuccessEventHandler & GetMessageSendSuccessEventHandler() const
virtual void Delete(const MESSAGE_TYPE &)=0
void SetMessageSendSuccessEventHandler(const MessageSendSuccessEventHandler &messageHandler)
Queue(unsigned pollingFrequency)
void SetMessageReceivedEventHandler(MessageReceivedEventHandler &&messageHandler)
void SetMessageDeleteFailedEventHandler(const MessageDeleteFailedEventHandler &messageHandler)
void SetMessageDeleteSuccessEventHandler(MessageDeleteSuccessEventHandler &&messageHandler)
virtual void Push(const MESSAGE_TYPE &)=0
void SetMessageReceivedEventHandler(const MessageReceivedEventHandler &messageHandler)
void SetMessageSendSuccessEventHandler(MessageSendSuccessEventHandler &&messageHandler)
std::atomic< bool > m_continue
void SetMessageDeleteFailedEventHandler(MessageDeleteFailedEventHandler &&messageHandler)
const MessageReceivedEventHandler & GetMessageReceivedEventHandler() const
void SetMessageSendFailedEventHandler(MessageSendFailedEventHandler &&messageHandler)
static const char * MEM_TAG
UniquePtr< T > MakeUnique(const char *allocationTag, ArgTypes &&... args)
std::unique_ptr< T, D > UniquePtr