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;
}
}
}