AWS SDK for C++  0.12.9
AWS SDK for C++
SQSQueue.h
Go to the documentation of this file.
1 /*
2  * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  * http://aws.amazon.com/apache2.0
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 #pragma once
16 
17 #include <aws/queues/Queue.h>
18 #include <aws/sqs/model/Message.h>
20 #include <memory>
22 #include <aws/sqs/SQSClient.h>
23 
24 namespace Aws
25 {
26  namespace SQS
27  {
28  namespace Model
29  {
31  class SendMessageRequest;
32  }
33  }
34 
35  namespace Queues
36  {
37  namespace Sqs
38  {
42  class AWS_QUEUES_API SQSQueue : public Queue<Aws::SQS::Model::Message>
43  {
44 
45  typedef std::function<void(const SQSQueue*, const Aws::SQS::Model::GetQueueAttributesOutcome&)> QueueAttributeSuccessEventHandler;
46  typedef std::function<void(const SQSQueue*, const Aws::SQS::Model::GetQueueAttributesRequest&)> QueueAttributeFailedEventHandler;
47  typedef std::function<void(const SQSQueue*, const Aws::SQS::Model::GetQueueAttributesRequest&)> QueueArnFailedEventHandler;
48  typedef std::function<void(const SQSQueue*, const Aws::String&)> QueueArnSuccessEventHandler;
49 
50  public:
51 
55  inline void SetQueueArnSuccessEventHandler(const QueueArnSuccessEventHandler& messageHandler) { m_queueArnSuccessHandler = messageHandler; }
56  inline void SetQueueArnSuccessEventHandler(QueueArnSuccessEventHandler&& messageHandler) { m_queueArnSuccessHandler = messageHandler; }
57 
61  inline void SetQueueArnFailedEventHandler(const QueueArnFailedEventHandler& messageHandler) { m_queueArnFailedHandler = messageHandler; }
62  inline void SetQueueArnFailedEventHandler(QueueArnFailedEventHandler&& messageHandler) { m_queueArnFailedHandler = messageHandler; }
63 
67  inline void SetQueueAttributeSuccessEventHandler(const QueueAttributeSuccessEventHandler& messageHandler) { m_queueAttributeSuccessHandler = messageHandler; }
68  inline void SetQueueAttributeSuccessEventHandler(QueueAttributeSuccessEventHandler&& messageHandler) { m_queueAttributeSuccessHandler = messageHandler; }
69 
73  inline void SetQueueAttributeFailedEventHandler(const QueueAttributeFailedEventHandler& messageHandler) { m_queueAttributeFailedHandler = messageHandler; }
74  inline void SetQueueAttributeFailedEventHandler(QueueAttributeFailedEventHandler&& messageHandler) { m_queueAttributeFailedHandler = messageHandler; }
75 
76  inline const QueueArnSuccessEventHandler& GetQueueArnSuccessEventHandler() const { return m_queueArnSuccessHandler; }
77  inline const QueueArnFailedEventHandler& GetQueueArnFailedEventHandler() const { return m_queueArnFailedHandler; }
78 
79  inline const QueueAttributeSuccessEventHandler& GetQueueAttributeSuccessEventHandler() const { return m_queueAttributeSuccessHandler; }
80  inline const QueueAttributeFailedEventHandler& GetQueueAttributeFailedEventHandler() const { return m_queueAttributeFailedHandler; }
81 
82 
87  SQSQueue(const std::shared_ptr<SQS::SQSClient>& client, const char* queueName, unsigned visibilityTimeout, unsigned pollingFrequencyMs = 10000);
88 
92  Aws::SQS::Model::Message Top() const override;
93 
97  void Delete(const Aws::SQS::Model::Message&) override;
98 
102  void Push(const Aws::SQS::Model::Message&) override;
103 
107  void RequestArn();
108 
112  void EnsureQueueIsInitialized();
113 
114  inline bool IsInitialized() const { return !m_queueUrl.empty(); }
115  inline const Aws::String& GetQueueUrl() const { return m_queueUrl; }
116 
117  private:
118  std::shared_ptr<SQS::SQSClient> m_client;
119  Aws::String m_queueUrl;
120  Aws::String m_queueName;
121  unsigned m_visibilityTimeout;
122 
123  void OnMessageDeletedOutcomeReceived(const SQS::SQSClient*, const SQS::Model::DeleteMessageRequest&,
124  const SQS::Model::DeleteMessageOutcome& deleteMessageOutcome, const std::shared_ptr<const Client::AsyncCallerContext>&);
125 
126  void OnMessageSentOutcomeReceived(const SQS::SQSClient*, const SQS::Model::SendMessageRequest&,
127  const SQS::Model::SendMessageOutcome& deleteMessageOutcome, const std::shared_ptr<const Client::AsyncCallerContext>&);
128 
129  void OnGetQueueAttributesOutcomeReceived(const SQS::SQSClient*, const SQS::Model::GetQueueAttributesRequest&,
130  const SQS::Model::GetQueueAttributesOutcome& deleteMessageOutcome, const std::shared_ptr<const Client::AsyncCallerContext>&);
131 
132  QueueArnSuccessEventHandler m_queueArnSuccessHandler;
133  QueueArnFailedEventHandler m_queueArnFailedHandler;
134  QueueAttributeSuccessEventHandler m_queueAttributeSuccessHandler;
135  QueueAttributeFailedEventHandler m_queueAttributeFailedHandler;
136 
137  };
138  }
139  }
140 }
const QueueAttributeSuccessEventHandler & GetQueueAttributeSuccessEventHandler() const
Definition: SQSQueue.h:79
void SetQueueAttributeFailedEventHandler(const QueueAttributeFailedEventHandler &messageHandler)
Definition: SQSQueue.h:73
void SetQueueAttributeSuccessEventHandler(QueueAttributeSuccessEventHandler &&messageHandler)
Definition: SQSQueue.h:68
void Delete(T *pointerToT)
Definition: AWSMemory.h:79
void SetQueueAttributeFailedEventHandler(QueueAttributeFailedEventHandler &&messageHandler)
Definition: SQSQueue.h:74
void SetQueueArnFailedEventHandler(QueueArnFailedEventHandler &&messageHandler)
Definition: SQSQueue.h:62
#define AWS_QUEUES_API
const Aws::String & GetQueueUrl() const
Definition: SQSQueue.h:115
void SetQueueAttributeSuccessEventHandler(const QueueAttributeSuccessEventHandler &messageHandler)
Definition: SQSQueue.h:67
void SetQueueArnSuccessEventHandler(QueueArnSuccessEventHandler &&messageHandler)
Definition: SQSQueue.h:56
void SetQueueArnFailedEventHandler(const QueueArnFailedEventHandler &messageHandler)
Definition: SQSQueue.h:61
const QueueAttributeFailedEventHandler & GetQueueAttributeFailedEventHandler() const
Definition: SQSQueue.h:80
const QueueArnSuccessEventHandler & GetQueueArnSuccessEventHandler() const
Definition: SQSQueue.h:76
bool IsInitialized() const
Definition: SQSQueue.h:114
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition: AWSString.h:97
const QueueArnFailedEventHandler & GetQueueArnFailedEventHandler() const
Definition: SQSQueue.h:77
void SetQueueArnSuccessEventHandler(const QueueArnSuccessEventHandler &messageHandler)
Definition: SQSQueue.h:55
JSON (JavaScript Object Notation).