using System; using System.Collections.Generic; using System.Reflection; using System.Threading.Tasks; namespace Tapeti.Config { public interface IConfig { IDependencyResolver DependencyResolver { get; } IReadOnlyList MessageMiddleware { get; } IEnumerable Queues { get; } IBinding GetBinding(Delegate method); } public interface IQueue { bool Dynamic { get; } string Name { get; } IEnumerable Bindings { get; } } public interface IBinding { Type Controller { get; } MethodInfo Method { get; } Type MessageClass { get; } string QueueName { get; } IReadOnlyList MessageMiddleware { get; } IReadOnlyList BindingFilters { get; } Task Accept(IMessageContext context, object message); Task Invoke(IMessageContext context, object message); } public interface IDynamicQueueBinding : IBinding { void SetQueueName(string queueName); } }