/// <summary> /// Adds an IOutputDataStream to the end of the sequence. /// </summary> /// <param name="stream">Stream to add to the end of the sequence</param> public virtual void Add(IOutputDataStream stream) { if (IsAddingCompleted) throw new InvalidOperationException("Stream marked as adding complete"); if (stream.SampleRate != null && SampleRate != null && !Equals(stream.SampleRate, SampleRate)) throw new ArgumentException("Sample rate mismatch"); if (stream == this) throw new ArgumentException("Cannot add a sequence stream to itself"); if (!stream.IsAtEnd) { UnendedStreams.Enqueue(stream); } }
public override void Add(IOutputDataStream stream) { lock (_syncLock) _stream.Add(stream); }
public void SetUp() { const int srate = 1000; IList<IMeasurement> list = Enumerable.Range(0, srate * 2).Select(i => new Measurement(i, "V") as IMeasurement).ToList(); var data = new OutputData(list, new Measurement(srate, "Hz")); var stim1 = new RenderedStimulus("stim1", new Dictionary<string, object>(), data); stream1 = new StimulusOutputDataStream(stim1, TimeSpan.FromSeconds(0.1)); var stim2 = new RenderedStimulus("stim2", new Dictionary<string, object>(), data); stream2 = new StimulusOutputDataStream(stim2, TimeSpan.FromSeconds(0.1)); seqData = data.Concat(data); seqStream = new SequenceOutputDataStream(); seqStream.Add(stream1); seqStream.Add(stream2); }