void EndRecording() { if (_recording) { System.Diagnostics.Debug.WriteLine("End recording"); var record = new Record(); foreach (var input in InputPorts.OfType <NodeSystemLib2.FormatData1D.InputPortData1D>().Where(c => c.Connection != null)) { var writer = _writers[input]; var line = new RecordLineStream1D( DateTime.Now, writer.FirstWritten, writer.LastWritten, GetRelativePath(writer.Path, WorkingDirectory), input.Samplerate ); record.Lines.Add(line); } foreach (var input in InputPorts.OfType <NodeSystemLib2.FormatValue.InputPortValueDouble>().Where(c => c.Connection != null && c != _portEn)) { var writer = _writers[input]; var line = new RecordLineStream2D( DateTime.Now, writer.FirstWritten, writer.LastWritten, GetRelativePath(writer.Path, WorkingDirectory) ); record.Lines.Add(line); } _set.AddRecord(record); RecordSetWriter.WriteToFile(_set, System.IO.Path.Combine(WorkingDirectory, "index.lst")); foreach (var writer in _writers.Values.Select(v => v.Writer).OfType <IDisposable>()) { writer.Dispose(); } _writers.Clear(); _recording = false; } }
private void ReadAll() { if (!LineMatch(RecordSetWriter.Magic)) { throw new InvalidDataException("Invalid format"); } while (LineMatch(RecordSetWriter.RecordBegin)) { var record = new Record(); while (LineMatch(RecordSetWriter.LineBegin)) { var props = new Dictionary <string, string>(); while (LinePeek().StartsWith("-", StringComparison.Ordinal)) { var line = LineConsume().Substring(1); var fields = line.Split(new [] { ':' }, 2); props.Add(fields[0].Trim(), fields[1].Trim()); } switch (props["Type"]) { case "Stream1D": record.Lines.Add(new RecordLineStream1D(props)); break; case "Stream2D": record.Lines.Add(new RecordLineStream2D(props)); break; default: throw new NotImplementedException("Unknown stream type: " + props["Type"]); } } _set.AddRecord(record); } }