Ejemplo n.º 1
0
        private async Task <Stream> RetrievePayloadContentsAsync(Payload payload)
        {
            IPayloadRetriever retriever = _resolvePayloadRetriever(payload);

            if (retriever == null)
            {
                throw new ArgumentNullException(
                          nameof(retriever),
                          $@"No {nameof(IPayloadRetriever)} can be retrieved for Submit payload {{Id={payload.Id}}}");
            }

            Task <Stream> retrievePayloadAsync = retriever.RetrievePayloadAsync(payload.Location);

            if (retrievePayloadAsync == null)
            {
                throw new ArgumentNullException(
                          nameof(retrievePayloadAsync),
                          $@"Asynchronous function for Submit payload {{Id={payload.Id}}} to retrieve it contents was 'null'");
            }

            Stream content = await retrievePayloadAsync.ConfigureAwait(false);

            if (content == null)
            {
                throw new ArgumentNullException(
                          nameof(content),
                          $@"No valid (<> null) stream content for Submit payload {{Id={payload.Id}}} was retrieved");
            }

            return(content);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Accept a new <see cref="IPayloadRetriever"/>
        /// </summary>
        /// <param name="condition">Condition which couples the kind of Payload with a <see cref="IPayloadRetriever"/> implementation</param>
        /// <param name="retriever"></param>
        public void Accept(Func <Model.Common.Payload, bool> condition, IPayloadRetriever retriever)
        {
            if (condition == null)
            {
                throw new ArgumentNullException(nameof(condition));
            }

            if (retriever == null)
            {
                throw new ArgumentNullException(nameof(retriever));
            }

            var entry = new PayloadStrategyEntry(condition, retriever);

            _entries.Add(entry);
        }
Ejemplo n.º 3
0
 public PayloadStrategyEntry(Func <Model.Common.Payload, bool> condition, IPayloadRetriever retriever)
 {
     Condition = condition;
     Retriever = retriever;
 }
Ejemplo n.º 4
0
 public static void RegisterRetrieverAndStartReporting(IPayloadRetriever retriever)
 {
     _retriever   = retriever;
     _reportTimer = new Timer(_reportTimer_Callback, null, 0, Config.GetInstance().reportEveryXMinutes * 60 * 1000);
 }