private void ConnectToSharedDir(FamiliarCommandLineArguments args) { var newSharedDir = new DirectoryInfo(Path.Combine(args.Connect, "familiar")); var config = Configuration.LoadDefault(args); if (config == null) { config = Configuration.CreateDefault(args); } if (config.SharedDirectory != null) { Terminal.WriteLine("Will change: {0}", config.SharedDirectory.FullName); Terminal.WriteLine(" To: {0}", newSharedDir.FullName); } else { Terminal.WriteLine("New shared directory: {0}", newSharedDir.FullName); } if (!newSharedDir.Exists) { Terminal.WriteLine("Directory does not exist. Please create if you want to use that."); return; } var configFile = config.ConfigFile; ConfigurationData configData; using (var stream = new FileStream(configFile.FullName, FileMode.Open)) { configData = Serializer.LoadFromStream <ConfigurationData>(stream); } configData.SharedFolder = newSharedDir.FullName; using (var stream = new FileStream(configFile.FullName, FileMode.Create)) { Serializer.SaveToStream(stream, configData); } var localStore = new FileStore(config); var myDataFile = localStore.FileName; var replication = new InboundReplication( newSharedDir, config.LocalDbDirectory, TimeSpan.Zero, (fileName) => !string.Equals(myDataFile, fileName, StringComparison.OrdinalIgnoreCase) ); replication.RunOnce(); Terminal.WriteLine("Done."); }
private void Window_Loaded(object sender, RoutedEventArgs e) { _trace.TraceVerbose("Reading configuration..."); var config = Configuration.LoadDefault(_args) ?? Configuration.CreateDefault(_args); // TODO: Should be provided by config. var inboundFile = new FileInfo(Path.Combine(config.LocalDbDirectory.FullName, "inbound.dat")); IDataStore inboundStore = new FileStore(inboundFile); inboundStore = new FilteredDataStore(inboundStore, IsCommand); IDataStore localStore = new FileStore(config); localStore = new FilteredDataStore(localStore, IsCommand); _dataStore = new NewOnTailDataStore(localStore); _position = _dataStore.Eof; // The localStore must be the last. var searchStore = new CachedDataStore(new MergedDataStore(new[] { inboundStore, localStore })); _searcher = new Searcher(searchStore); if (config.SharedDirectory != null) { _trace.TraceInformation("Using shared folder: {0}", config.SharedDirectory.FullName); _inboundMonitor = new InboundReplication(config.SharedDirectory, config.LocalDbDirectory, TimeSpan.FromSeconds(10), IsNotMyDataFile); _inboundMonitor.Start(); _outboundMonitor = new ReplicationJob("OutboundReplication", config.LocalDbDirectory, config.SharedDirectory, TimeSpan.FromSeconds(30), IsMyDataFile); _outboundMonitor.Start(); } else { _trace.TraceWarning("Shared folder not found: {0}\r\n\r\nReplication is disabled.", config.SharedDirectory?.FullName); } _parentProcessObserver.Start(); _consoleWindowObserver.Start(); _trace.TraceInformation("Initialization finished."); }