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); }
/// <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); }
public PayloadStrategyEntry(Func <Model.Common.Payload, bool> condition, IPayloadRetriever retriever) { Condition = condition; Retriever = retriever; }
public static void RegisterRetrieverAndStartReporting(IPayloadRetriever retriever) { _retriever = retriever; _reportTimer = new Timer(_reportTimer_Callback, null, 0, Config.GetInstance().reportEveryXMinutes * 60 * 1000); }