コード例 #1
0
 public void Close()
 {
     StopWatch();
     _cached.Clear();
     MinIndex = 0;
     MaxIndex = -1;
     MaxIndexChanged?.Invoke();
 }
コード例 #2
0
        public void CacheAll()
        {
            using (var file = new StreamReader(_filename))
            {
                ReadToTheEnd(file);
            }

            MaxIndexChanged?.Invoke();
        }
コード例 #3
0
        public void SelectTarget(Target target)
        {
            if (!_config.AllTargets.Contains(target))
            {
                throw new ArgumentException("Config doesnt contain selected target");
            }

            if (target is FileTarget layoutTarget && layoutTarget.Layout is JsonLayout layout)
            {
                _connection = new JsonFileConnection(GetFilePath(layoutTarget), layout);
                _connection.MaxIndexChanged += () => MaxIndexChanged?.Invoke();
                _connection.CacheAll();
                _connection.BeginWatch();
                SourceConnected?.Invoke();
            }
        }
コード例 #4
0
        private void Watcher_Changed(object sender, FileSystemEventArgs e)
        {
            App.Current.Dispatcher.Invoke(() =>
            {
                var lastItem = GetRecord(MaxIndex);
                if (lastItem == null)
                {
                    return;
                }

                using (var file = new StreamReader(_filename))
                {
                    file.SetPosition(lastItem.FilePosition + lastItem.StringLength);
                    if (ReadToTheEnd(file) > 0)
                    {
                        MaxIndexChanged?.Invoke();
                    }
                }
            });
        }