using System; namespace ZeroLevel.Network.Microservices { public abstract class ExchangeAttribute : Attribute { } /// /// Отмечает метод который является обработчиком сообщений по умолчанию /// public sealed class ExchangeMainHandlerAttribute : ExchangeAttribute { } /// /// Отмечает метод который является обработчиком запросов по умолчанию /// public sealed class ExchangeMainReplierAttribute : ExchangeAttribute { } /// /// Отмечает метод-обработчик сообщений для inbox'а с указанным именем /// public sealed class ExchangeHandlerAttribute : ExchangeAttribute { public string Inbox { get; } public ExchangeHandlerAttribute(string inbox) { this.Inbox = inbox; } } /// /// Отмечает метод-обработчик запросов для inbox'а с указанным именем /// public sealed class ExchangeReplierAttribute : ExchangeAttribute { public string Inbox { get; } public ExchangeReplierAttribute(string inbox) { this.Inbox = inbox; } } /// /// Отмечает метод-обработчик сообщений для inbox'а с указанным именем /// public sealed class ExchangeMainReplierWithoutArgAttribute : ExchangeAttribute { } /// /// Отмечает метод-обработчик запросов для inbox'а с указанным именем /// public sealed class ExchangeReplierWithoutArgAttribute : ExchangeAttribute { public string Inbox { get; } public ExchangeReplierWithoutArgAttribute(string inbox) { this.Inbox = inbox; } } public class ExchangeServerAttribute : Attribute { public string Protocol { get; } public ExchangeServerAttribute(string protocol) { if (string.IsNullOrWhiteSpace(protocol)) throw new ArgumentNullException(nameof(protocol)); this.Protocol = protocol; } } public class ExchangeClientAttribute : Attribute { public string Protocol { get; } public ExchangeClientAttribute(string protocol) { if (string.IsNullOrWhiteSpace(protocol)) throw new ArgumentNullException(nameof(protocol)); this.Protocol = protocol; } } }