public bool TryNewSampleProducer(out IProducerV2 <SampleRecord> newProducer, int?targetCnt = null) { Sampler sampler; if (TryNewSampler(out sampler)) { newProducer = new SampleProducerV2(sampler, GeneralConfigurations.Get().QueueSize, targetCnt); if (GeneralConfigurations.Get().SaveSample) { var newSampleWriter = FactoryHolder.Get().NewSampleWriter(); newProducer.NewProduct += record => { newSampleWriter.Write(record); }; } return(true); } newProducer = null; return(false); }
public IConsumerV2 NewConsumer([NotNull] IProducerV2 <SampleRecord> producer, [NotNull] DisplayAdapterV2 adapter, int?targetCnt) { var timeout = MiscellaneousConfigurations.Get().WaitEmptyProducerMsTimeout; var configurations = GeneralConfigurations.Get(); if (configurations.ViewPhase) { return(new PhaseVisualizer(producer.BlockingQueue, NewPhaseReader(), adapter as PhaseDisplayAdapter, null, timeout, targetCnt)); } var threadNum = configurations.ThreadNum; if (SliceConfigurations.Get().Reference) { var splitters = new List <ISplitter>(threadNum); for (var i = 0; i < threadNum; i++) { splitters.Add(NewRefProcessor()); } return(new RefSpectroscopyVisualizer(producer.BlockingQueue, splitters, adapter as SpectrumDisplayAdapter, NewSpectrumWriter(), timeout, targetCnt, configurations.SaveSpec, configurations.SaveAcc)); } var accumulators = new List <IAccumulator>(threadNum); for (var i = 0; i < threadNum; i++) { accumulators.Add(NewPulseSequenceProcessor()); } return(new ParralelSpectroscopyVisualizerV2(producer.BlockingQueue, accumulators, adapter as SpectrumDisplayAdapter, NewSpectrumWriter(), timeout, targetCnt, configurations.SaveSpec, configurations.SaveAcc)); }
/// <summary>Initializes a new instance of the <see cref="T:System.Object" /> class.</summary> public SampleProducerV2(Sampler sampler, int?maxCapacity, int?targetCnt) { _sampler = sampler; _producer = new SerialProducerV2 <SampleRecord>(this, maxCapacity, targetCnt); }
/// <summary> /// Create a scheduler. /// </summary> /// <param name="producer"></param> /// <param name="consumer"></param> public Scheduler(IProducerV2 <SampleRecord> producer, IConsumerV2 consumer) { Producer = producer; Consumer = consumer; }