コード例 #1
0
ファイル: FileWriter.cs プロジェクト: sandrist/psi
 /// <summary>
 /// Initializes a new instance of the <see cref="FileWriter{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="serializer">Format serializer with which messages are serialized.</param>
 /// <param name="name">An optional name for the component.</param>
 public FileWriter(Pipeline pipeline, string filename, IPersistentFormatSerializer serializer, string name = nameof(FileWriter <T>))
 {
     this.name             = name;
     this.file             = File.Create(filename);
     this.In               = pipeline.CreateReceiver <T>(this, (m, e) => this.WriteRecord(m, e, serializer), nameof(this.In));
     this.In.Unsubscribed += _ => serializer.PersistFooter(this.file, this.state);
 }
コード例 #2
0
ファイル: FileWriter.cs プロジェクト: yusharth/psi
        private void WriteRecord(T message, Envelope envelope, IPersistentFormatSerializer serializer)
        {
            if (this.first)
            {
                this.state = serializer.PersistHeader(message, this.file);
            }

            serializer.PersistRecord(message, envelope.OriginatingTime, this.first, this.file, this.state);
            this.first = false;
        }
コード例 #3
0
ファイル: InteropTests.cs プロジェクト: xiangzhi/psi
        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 }));
            }
        }