示例#1
0
        private static DateTime GetStartTimeFromFile(string filename, IPersistentFormatDeserializer deserializer)
        {
            DateTime startTime;

            using var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
            (_, startTime)   = deserializer.DeserializeRecords(stream).First();
            return(startTime);
        }
示例#2
0
 private static IEnumerator <(T, DateTime)> EnumerateFile(string filename, IPersistentFormatDeserializer deserializer)
 {
     using var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
     foreach (var record in deserializer.DeserializeRecords(stream))
     {
         yield return((T)record.Item1, record.Item2);
     }
 }
示例#3
0
        private void FilePersistenceFormatTest(string extension, IPersistentFormatSerializer serializer, IPersistentFormatDeserializer deserializer)
        {
            var filePath = $"{this.path}/test.{extension}";

            using (var p = Pipeline.Create())
            {
                var gen  = Generators.Range(p, 0, 10, TimeSpan.FromMilliseconds(10));
                var file = new FileWriter <int>(p, filePath, serializer);
                gen.PipeTo(file);
                p.Run();
            }

            using (var q = Pipeline.Create())
            {
                var read    = new FileSource <int>(q, filePath, deserializer);
                var results = read.ToObservable().ToListObservable();
                q.Run();
                Assert.IsTrue(Enumerable.SequenceEqual(results.AsEnumerable(), new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }));
            }
        }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FileSource{T}"/> class.
 /// </summary>
 /// <param name="pipeline">The pipeline to add the component to.</param>
 /// <param name="filename">File name to which to persist.</param>
 /// <param name="deserializer">Format serializer with which messages are deserialized.</param>
 /// <param name="name">An optional name for the component.</param>
 public FileSource(Pipeline pipeline, string filename, IPersistentFormatDeserializer deserializer, string name = nameof(FileSource <T>))
     : base(pipeline, EnumerateFile(filename, deserializer), GetStartTimeFromFile(filename, deserializer), name: name)
 {
 }
示例#5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FileSource{T}"/> class.
 /// </summary>
 /// <param name="pipeline">Pipeline to which this component belongs.</param>
 /// <param name="filename">File name to which to persist.</param>
 /// <param name="deserializer">Format serializer with which messages are deserialized.</param>
 public FileSource(Pipeline pipeline, string filename, IPersistentFormatDeserializer deserializer)
     : base(pipeline, EnumerateFile(pipeline, filename, deserializer))
 {
 }