Esempio n. 1
0
        // ReSharper restore StaticFieldInGenericType

        public MessagePublisher(ISequencedDirectory directory, IMessageSerializer serializer, IScheduler scheduler)
        {
            _directory  = directory;
            _serializer = serializer;
            _scheduler  = scheduler;

            Init();
        }
Esempio n. 2
0
        public MessageSource(ISequencedDirectory directory, IEnumerable <IMessageDeserializer <TMessage> > deserializers, IScheduler scheduler)
        {
            _scheduler     = scheduler;
            _deserializers = deserializers.ToDictionary(d => d.GetTypeName());

            if (!_deserializers.Any())
            {
                throw new Exception("You need to supply at least one deserializer");
            }

            _fileSystemWatcher = new ObservableFileSystemWatcher(directory.DirectoryPath);

            _buffer = new ContiguousBuffer(scheduler, directory);

            _subscription = _fileSystemWatcher.Created
                            .ObserveOn(_scheduler)
                            .Select(SequencedFile.Create)
                            .Subscribe(_buffer.Add);
        }
Esempio n. 3
0
 public ContiguousBuffer(IScheduler scheduler, ISequencedDirectory directory)
 {
     _scheduler = scheduler;
     _lastId    = directory.ReadCurrentSequenceId();
     _files.Subscribe(file => _lastId = file.SequenceId);
 }