Ejemplo n.º 1
0
    /// <summary>
    /// Chains instances of <see cref="MiddlewareBase{TContext, TOut}"/> together using
    /// the given inner as the inner middleware.
    /// </summary>
    /// <param name="inner">The innermost instance of <see cref="MiddlewareBase{TContext, TOut}"/>.</param>
    /// <param name="middleware">The instances of <see cref="MiddlewareBase{TContext, TOut}"/> to add to the
    /// returned composite <see cref="MiddlewareBase{TContext, TOut}"/>.</param>
    /// <returns>A composite <see cref="MiddlewareBase{TContext, TOut}"/>.</returns>
    public static MiddlewareBase <TIn, TOut> WithAsync <TIn, TOut>(
        this MiddlewareBase <TIn, TOut> inner,
        params MiddlewareBase <TIn, TOut>[] middleware)
    {
        if (inner == null)
        {
            throw new ArgumentNullException(nameof(inner));
        }
        if (middleware == null)
        {
            throw new ArgumentNullException(nameof(middleware));
        }
        if (middleware.Any(x => x == null))
        {
            throw new ArgumentException("All provided middlewares should be non-null", nameof(middleware));
        }

        var policy = inner;

        foreach (var m in middleware)
        {
            policy = m.WithNext(policy);
        }

        return(policy);
    }
Ejemplo n.º 2
0
        public MessageReceiveBuffer(
            int prefetch,
            int bufferSize,
            TimeSpan readTimeout,
            TimeSpan sqsWaitTime,
            ISqsQueue sqsQueue,
            MiddlewareBase <ReceiveMessagesContext, IList <Message> > sqsMiddleware,
            IMessageMonitor monitor,
            ILogger <IMessageReceiveBuffer> logger,
            IMessageBackoffStrategy messageBackoffStrategy = null)
        {
            _prefetch    = prefetch;
            _bufferSize  = bufferSize;
            _readTimeout = readTimeout;
            _sqsWaitTime = sqsWaitTime;
            if (sqsQueue == null)
            {
                throw new ArgumentNullException(nameof(sqsQueue));
            }
            _sqsQueueReader      = new SqsQueueReader(sqsQueue);
            _sqsMiddleware       = sqsMiddleware ?? throw new ArgumentNullException(nameof(sqsMiddleware));
            _monitor             = monitor ?? throw new ArgumentNullException(nameof(monitor));
            _logger              = logger ?? throw new ArgumentNullException(nameof(logger));
            _backoffStrategyName = messageBackoffStrategy?.GetType()?.Name;

            _channel = Channel.CreateBounded <IQueueMessageContext>(bufferSize);

            if (messageBackoffStrategy != null)
            {
                _requestMessageAttributeNames.Add(MessageSystemAttributeName.ApproximateReceiveCount);
            }
        }
Ejemplo n.º 3
0
        public void UseMiddleware <TMiddleware>(params object[] args) where TMiddleware : MiddlewareBase
        {
            List <object> newArgs = new List <object>();

            newArgs.Add((RequestDelegate)_current.InvokeAsync);
            newArgs.AddRange(args);
            _current = (TMiddleware)Activator.CreateInstance(typeof(TMiddleware), newArgs.ToArray());
        }
Ejemplo n.º 4
0
 void Start()
 {
     feedback   = GetComponent <BMLFeedback>();
     middleware = GetComponent <MiddlewareBase>();
     if (middleware != null)
     {
         middleware.Register(this);
     }
 }
Ejemplo n.º 5
0
 void Start()
 {
     clipLib    = new Dictionary <string, AsapAudioClipSource>();
     middleware = GetComponent <MiddlewareBase>();
     if (middleware != null)
     {
         middleware.Register(this);
     }
 }
 void Awake()
 {
     agents        = new Dictionary <string, ASAPAgent>();
     agentRequests = new Dictionary <string, AgentSpecRequest>();
     worldObjects  = new Dictionary <string, VJoint>();
     middleware    = GetComponent <MiddlewareBase>();
     if (middleware != null)
     {
         middleware.Register(this);
     }
 }
        private void GivenInternal()
        {
            SqsClient = Substitute.For <IAmazonSQS>();
            Queue     = Substitute.For <ISqsQueue>();
            Queue.Uri.Returns(new Uri("http://test.com"));
            Queue.Client.Returns(SqsClient);
            Monitor       = Substitute.For <IMessageMonitor>();
            SqsMiddleware = new DelegateMiddleware <GetMessagesContext, IList <Amazon.SQS.Model.Message> >();

            Given();
        }
        public StopwatchMiddlewareTests(ITestOutputHelper outputHelper)
        {
            var loggerFactory = LoggerFactory.Create(lf => lf.AddXUnit(outputHelper));

            _handler = new InspectableHandler <OrderAccepted>();
            _monitor = new TrackingLoggingMonitor(loggerFactory.CreateLogger <TrackingLoggingMonitor>());
            var serviceResolver = new FakeServiceResolver(c =>
                                                          c.AddSingleton <IHandlerAsync <OrderAccepted> >(_handler)
                                                          .AddSingleton <IMessageMonitor>(_monitor));

            _middleware = new HandlerMiddlewareBuilder(serviceResolver, serviceResolver)
                          .UseHandler <OrderAccepted>()
                          .UseStopwatch(_handler.GetType())
                          .Build();
        }
Ejemplo n.º 9
0
 protected void Register(MiddlewareBase middlewareBase)
 {
     _pipeline.Add(middlewareBase);
 }
Ejemplo n.º 10
0
 public MiddlewareBase <TContext, TOut> WithNext(MiddlewareBase <TContext, TOut> next)
 {
     _next = next;
     return(this);
 }
Ejemplo n.º 11
0
 public PollyMiddleware(MiddlewareBase <TContext, TOut> next, IAsyncPolicy policy) : base(next)
 {
     _policy = policy;
 }