public PersistentTaskController(ChannelGraph graph, ILogger logger, ITaskMonitoringSource factory, IList<IPersistentTaskSource> sources)
        {
            _graph = graph;
            _logger = logger;
            _factory = factory;
            sources.Each(x => _sources[x.Protocol] = x);

            _agents.OnMissing = uri => {
                var persistentTask = FindTask(uri);
                return persistentTask == null ? null : _factory.BuildAgentFor(persistentTask);
            };

            _permanentTasks = sources.SelectMany(x => x.PermanentTasks()).ToArray();
        }
        public PersistentTaskController(ChannelGraph graph, ILogger logger, ITaskMonitoringSource factory, IList <IPersistentTaskSource> sources)
        {
            _graph   = graph;
            _logger  = logger;
            _factory = factory;
            sources.Each(x => _sources[x.Protocol] = x);

            _agents.OnMissing = uri => {
                var persistentTask = FindTask(uri);
                return(persistentTask == null ? null : _factory.BuildAgentFor(persistentTask));
            };

            _permanentTasks = sources.SelectMany(x => x.PermanentTasks()).ToArray();
        }