azure-core-amqp
Loading...
Searching...
No Matches
management.hpp
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include "azure/core/amqp/internal/models/amqp_error.hpp"
7#include "azure/core/amqp/models/amqp_message.hpp"
8#include "session.hpp"
9
10#include <azure/core/context.hpp>
11
12#include <string>
13#include <tuple>
14#include <vector>
15
16namespace Azure { namespace Core { namespace Amqp { namespace _detail {
17 class ManagementClientImpl;
18 class ManagementClientFactory;
19}}}} // namespace Azure::Core::Amqp::_detail
20
21namespace Azure { namespace Core { namespace Amqp { namespace _internal {
22 enum class ManagementOperationStatus
23 {
24 Invalid,
25 Ok,
26 Error,
27 FailedBadStatus,
28 InstanceClosed,
29 Cancelled,
30 };
31
32 enum class ManagementOpenStatus
33 {
34 Invalid,
35 Ok,
36 Error,
37 Cancelled,
38 };
39
40 struct ManagementClientOptions final
41 {
55 std::string ExpectedStatusCodeKeyName = "statusCode";
56
72 std::string ExpectedStatusDescriptionKeyName = "statusDescription";
73
80 std::string ManagementNodeName = "$management";
81
85 bool EnableTrace{false};
86 };
87
91 class ManagementClientEvents {
92 protected:
93 ~ManagementClientEvents() {}
94
95 public:
101 virtual void OnError(Models::_internal::AmqpError const& error) = 0;
102 };
103
107 struct ManagementOperationResult final
108 {
112 ManagementOperationStatus Status = ManagementOperationStatus::Invalid;
113
117 std::shared_ptr<Models::AmqpMessage> Message;
118
123 Models::_internal::AmqpError Error;
124
128 uint32_t StatusCode = 0;
129 };
130
139 class ManagementClient final {
140 public:
144 ManagementClient() = default;
145
149 ~ManagementClient() noexcept = default;
150
154 ManagementClient(ManagementClient const&) = default;
155
159 ManagementClient& operator=(ManagementClient const&) = default;
160
164 ManagementClient(ManagementClient&&) = default;
165
169 ManagementClient& operator=(ManagementClient&&) = default;
170
176 _azure_NODISCARD ManagementOpenStatus Open(Context const& context = {});
177
183 void Close(Context const& context = {});
184
202 _azure_NODISCARD ManagementOperationResult ExecuteOperation(
203 std::string const& operationToPerform,
204 std::string const& typeOfOperation,
205 std::string const& locales,
206 Models::AmqpMessage messageToSend,
207 Context const& context = {});
208
209 private:
210 friend class Azure::Core::Amqp::_detail::ManagementClientFactory;
211 ManagementClient(std::shared_ptr<_detail::ManagementClientImpl> impl) : m_impl{impl} {}
212 std::shared_ptr<_detail::ManagementClientImpl> m_impl;
213 };
214
215}}}} // namespace Azure::Core::Amqp::_internal