-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathIMessageTransmittingFacade.cs
More file actions
145 lines (139 loc) · 6.4 KB
/
IMessageTransmittingFacade.cs
File metadata and controls
145 lines (139 loc) · 6.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// =================================================================================================================================
// Copyright (c) RapidField LLC. Licensed under the MIT License. See LICENSE.txt in the project root for license information.
// =================================================================================================================================
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace RapidField.SolidInstruments.Messaging
{
/// <summary>
/// Facilitates implementation-specific transmission operations for a message bus.
/// </summary>
/// <typeparam name="TSender">
/// The type of the implementation-specific send client.
/// </typeparam>
/// <typeparam name="TReceiver">
/// The type of the implementation-specific receive client.
/// </typeparam>
/// <typeparam name="TAdaptedMessage">
/// The type of implementation-specific adapted messages.
/// </typeparam>
public interface IMessageTransmittingFacade<TSender, TReceiver, TAdaptedMessage> : IMessageTransmittingFacade, IMessagingFacade<TSender, TReceiver, TAdaptedMessage>
where TAdaptedMessage : class
{
}
/// <summary>
/// Facilitates implementation-specific transmission operations for a message bus.
/// </summary>
public interface IMessageTransmittingFacade : IMessagingFacade
{
/// <summary>
/// Asynchronously transmits the specified message to a queue.
/// </summary>
/// <typeparam name="TMessage">
/// The type of the message to transmit.
/// </typeparam>
/// <param name="message">
/// The message to transmit.
/// </param>
/// <param name="pathLabels">
/// An ordered collection of as many as three non-null, non-empty alphanumeric textual labels to append to the path, or
/// <see langword="null" /> to omit path labels. The default value is <see langword="null" />.
/// </param>
/// <returns>
/// A task representing the asynchronous operation.
/// </returns>
/// <exception cref="ArgumentException">
/// <paramref name="pathLabels" /> contains one or more null or empty labels and/or labels with non-alphanumeric characters,
/// or contains more than three elements.
/// </exception>
/// <exception cref="ArgumentNullException">
/// <paramref name="message" /> is <see langword="null" />.
/// </exception>
/// <exception cref="MessageTransmissionException">
/// An exception was raised while attempting to transmit <paramref name="message" />.
/// </exception>
/// <exception cref="ObjectDisposedException">
/// The object is disposed.
/// </exception>
public Task TransmitToQueueAsync<TMessage>(TMessage message, IEnumerable<String> pathLabels)
where TMessage : class, IMessageBase;
/// <summary>
/// Asynchronously transmits the specified message to a queue.
/// </summary>
/// <typeparam name="TMessage">
/// The type of the message to transmit.
/// </typeparam>
/// <param name="message">
/// The message to transmit.
/// </param>
/// <returns>
/// A task representing the asynchronous operation.
/// </returns>
/// <exception cref="ArgumentNullException">
/// <paramref name="message" /> is <see langword="null" />.
/// </exception>
/// <exception cref="MessageTransmissionException">
/// An exception was raised while attempting to transmit <paramref name="message" />.
/// </exception>
/// <exception cref="ObjectDisposedException">
/// The object is disposed.
/// </exception>
public Task TransmitToQueueAsync<TMessage>(TMessage message)
where TMessage : class, IMessageBase;
/// <summary>
/// Asynchronously transmits the specified message to a topic.
/// </summary>
/// <typeparam name="TMessage">
/// The type of the message to transmit.
/// </typeparam>
/// <param name="message">
/// The message to transmit.
/// </param>
/// <param name="pathLabels">
/// An ordered collection of as many as three non-null, non-empty alphanumeric textual labels to append to the path, or
/// <see langword="null" /> to omit path labels. The default value is <see langword="null" />.
/// </param>
/// <returns>
/// A task representing the asynchronous operation.
/// </returns>
/// <exception cref="ArgumentException">
/// <paramref name="pathLabels" /> contains one or more null or empty labels and/or labels with non-alphanumeric characters,
/// or contains more than three elements.
/// </exception>
/// <exception cref="ArgumentNullException">
/// <paramref name="message" /> is <see langword="null" />.
/// </exception>
/// <exception cref="MessageTransmissionException">
/// An exception was raised while attempting to transmit <paramref name="message" />.
/// </exception>
/// <exception cref="ObjectDisposedException">
/// The object is disposed.
/// </exception>
public Task TransmitToTopicAsync<TMessage>(TMessage message, IEnumerable<String> pathLabels)
where TMessage : class, IMessageBase;
/// <summary>
/// Asynchronously transmits the specified message to a topic.
/// </summary>
/// <typeparam name="TMessage">
/// The type of the message to transmit.
/// </typeparam>
/// <param name="message">
/// The message to transmit.
/// </param>
/// <returns>
/// A task representing the asynchronous operation.
/// </returns>
/// <exception cref="ArgumentNullException">
/// <paramref name="message" /> is <see langword="null" />.
/// </exception>
/// <exception cref="MessageTransmissionException">
/// An exception was raised while attempting to transmit <paramref name="message" />.
/// </exception>
/// <exception cref="ObjectDisposedException">
/// The object is disposed.
/// </exception>
public Task TransmitToTopicAsync<TMessage>(TMessage message)
where TMessage : class, IMessageBase;
}
}