6#include "azure/core/amqp/internal/models/amqp_error.hpp"
7#include "azure/core/amqp/models/amqp_value.hpp"
8#include "common/async_operation_queue.hpp"
9#include "connection_string_credential.hpp"
10#include "endpoint.hpp"
11#include "models/message_source.hpp"
12#include "models/message_target.hpp"
19#if defined(_azure_TESTING_BUILD)
21namespace Azure {
namespace Core {
namespace Amqp {
namespace Tests {
22 namespace MessageTests {
24 class MockServiceEndpoint;
25 class MessageListenerEvents;
28 class TestSessions_SimpleSession_Test;
29 class TestSessions_SessionProperties_Test;
30 class TestSessions_SessionBeginEnd_Test;
31 class TestSessions_MultipleSessionBeginEnd_Test;
32 class TestLinks_LinkAttachDetach_Test;
33 class TestSocketListenerEvents;
34 class LinkSocketListenerEvents;
35 class TestMessages_SenderSendAsync_Test;
38#if defined(SAMPLES_BUILD)
39namespace LocalServerSample {
44namespace Azure {
namespace Core {
namespace Amqp {
namespace _detail {
49namespace Azure {
namespace Core {
namespace Amqp {
namespace _internal {
52 enum class SessionRole;
54 struct MessageSenderOptions;
55 class MessageSenderEvents;
56 class MessageReceiver;
57 struct MessageReceiverOptions;
58 class MessageReceiverEvents;
59 class ManagementClient;
60 struct ManagementClientOptions;
61 class ManagementClientEvents;
63 enum class ExpiryPolicy
71 enum class SessionState
83 enum class SessionSendTransferResult
93 ~SessionEvents() =
default;
96 virtual bool OnLinkAttached(
97 Session
const& session,
98 LinkEndpoint& newLink,
99 std::string
const& name,
101 Models::AmqpValue
const& source,
102 Models::AmqpValue
const& target,
103 Models::AmqpValue
const& properties)
107 struct SessionOptions final
112 Nullable<uint32_t> InitialIncomingWindowSize;
116 Nullable<uint32_t> InitialOutgoingWindowSize;
122 Nullable<uint32_t> MaximumLinkCount;
125 class Session final {
139 MessageSender CreateMessageSender(
140 Models::_internal::MessageTarget const& target,
141 MessageSenderOptions const& options,
142 MessageSenderEvents* events) const;
153 MessageReceiver CreateMessageReceiver(
154 Models::_internal::MessageSource const& receiverSource,
155 MessageReceiverOptions const& options,
156 MessageReceiverEvents* receiverEvents =
nullptr) const;
158 ManagementClient CreateManagementClient(
159 std::
string const& managementInstancePath,
160 ManagementClientOptions const& options,
161 ManagementClientEvents* managementEvents =
nullptr) const;
168 uint32_t GetIncomingWindow() const;
173 uint32_t GetOutgoingWindow() const;
179 uint32_t GetHandleMax() const;
195 void End(std::
string const& condition_value = {}, std::string
const& description = {});
208 LinkEndpoint
const& linkEndpoint,
210 Models::_internal::AmqpError
const& error)
const;
225 MessageSender CreateMessageSender(
226 LinkEndpoint& endpoint,
227 Models::_internal::MessageTarget
const& target,
228 MessageSenderOptions
const& options,
229 MessageSenderEvents* events)
const;
240 MessageReceiver CreateMessageReceiver(
241 LinkEndpoint& linkEndpoint,
242 Models::_internal::MessageSource
const& receiverSource,
243 MessageReceiverOptions
const& options,
244 MessageReceiverEvents* receiverEvents =
nullptr)
const;
246 friend class _detail::SessionFactory;
248#if _azure_TESTING_BUILD
249 friend class Azure::Core::Amqp::Tests::MessageTests::AmqpServerMock;
250 friend class Azure::Core::Amqp::Tests::MessageTests::MockServiceEndpoint;
251 friend class Azure::Core::Amqp::Tests::MessageTests::MessageListenerEvents;
252 friend class Azure::Core::Amqp::Tests::TestSocketListenerEvents;
253 friend class Azure::Core::Amqp::Tests::LinkSocketListenerEvents;
254 friend class Azure::Core::Amqp::Tests::TestSessions_SimpleSession_Test;
255 friend class Azure::Core::Amqp::Tests::TestSessions_SessionProperties_Test;
256 friend class Azure::Core::Amqp::Tests::TestSessions_SessionBeginEnd_Test;
257 friend class Azure::Core::Amqp::Tests::TestSessions_MultipleSessionBeginEnd_Test;
258 friend class Azure::Core::Amqp::Tests::TestLinks_LinkAttachDetach_Test;
260 friend class Azure::Core::Amqp::Tests::TestMessages_SenderSendAsync_Test;
263 friend class LocalServerSample::SampleEvents;
273 Session(std::shared_ptr<_detail::SessionImpl> impl) : m_impl{impl} {}
275 std::shared_ptr<_detail::SessionImpl> m_impl;