using System; using System.Collections.Generic; using System.Reflection; using System.Threading.Tasks; namespace Tapeti.Config { public interface IConfig { bool UsePublisherConfirms { get; } IDependencyResolver DependencyResolver { get; } IReadOnlyList MessageMiddleware { get; } IReadOnlyList CleanupMiddleware { get; } IReadOnlyList PublishMiddleware { get; } IEnumerable Queues { get; } IBinding GetBinding(Delegate method); } public interface IQueue { bool Dynamic { get; } string Name { get; } IEnumerable Bindings { get; } } public interface IDynamicQueue : IQueue { string GetDeclareQueueName(); void SetName(string name); } public interface IBinding { Type Controller { get; } MethodInfo Method { get; } Type MessageClass { get; } string QueueName { get; } QueueBindingMode QueueBindingMode { get; set; } IReadOnlyList MessageFilterMiddleware { get; } IReadOnlyList MessageMiddleware { get; } bool Accept(Type messageClass); bool Accept(IMessageContext context, object message); Task Invoke(IMessageContext context, object message); } public interface IBuildBinding : IBinding { void SetQueueName(string queueName); } }