示例#1
0
 internal ScheduledProducer(TimeSpan timespan,
                            Func <CancellationToken, IEnumerable <IWorkItem> > startupWorkFactoryMethod,
                            Func <CancellationToken, IEnumerable <IWorkItem> > workFactoryMethod,
                            IStartupBarrier startupBarrier = null)
     : base(startupBarrier)
 {
     _timespan = timespan;
     _startupWorkFactoryMethod = startupWorkFactoryMethod;
     _workItemFactoryMethod    = workFactoryMethod ?? throw new ArgumentNullException(nameof(workFactoryMethod));
 }
示例#2
0
        internal AbstractProducer(IThreadWrapper worker, IStartupBarrier startupBarrier = null)
        {
            _worker = worker;
            _worker.Setup(Loop,
                          cancellationToken =>
            {
                Startup(AddWork, cancellationToken);

                startupBarrier?.Wait(cancellationToken);
            });
        }
示例#3
0
 public WorkerPoolBuilder(IStartupBarrier startupBarrier = null)
 {
     _barrier    = startupBarrier;
     _workerPool = new WorkerPool();
     _workQueue  = new BlockingCollection <IWorkItem>();
 }
示例#4
0
 internal StartupWorkBatch(IWorkBatch workBatch, IStartupBarrier barrier)
 {
     _workBatch = workBatch;
     _barrier   = barrier;
 }
示例#5
0
 public WorkBatchFactory(IStartupBarrier startupBarrier = null)
 {
     _startupBarrier = startupBarrier;
 }
示例#6
0
 protected AbstractProducer(IStartupBarrier startupBarrier = null) : this(new ThreadWrapper(), startupBarrier)
 {
 }