Esempio n. 1
0
        /// <summary>
        /// Decorator query handler delaying after the <see cref="IProjection"/> has been rebuilt
        /// <para>
        /// * redirect exceptions to <see cref="IErrorLog"/>
        /// </para>
        /// </summary>
        /// <param name="query">Typed query</param>
        /// <returns>Task representing the result of asynchronous query processing </returns>
        protected override async Task <TResult> Handle(TQuery query)
        {
            var tracked = new TrackedResult <TQuery, TResult>(query);
            await _queryFlow.SendAsync(tracked);

            return(await tracked.Task);
        }
Esempio n. 2
0
        /// <inheritdoc />
        public async Task <Task <string> > SubmitRequest(string url, CancellationToken token = default)
        {
            var tracked = new TrackedResult <string, string>(url, token);

            try
            {
                await _flow.SendAsync(tracked);
            }
            catch (Exception e)
            {
                _log.Errors.Add(e);
                _flow = new ConnectorFlow(Configuration.DataflowOptions, this);
                await _flow.SendAsync(tracked);
            }

            return(tracked.Task);
        }