public SyncthingDeviceManager(SynchronizedTransientWrapper <ISyncthingApiClient> apiClient, ISyncthingEventWatcher eventWatcher, ISyncthingCapabilities capabilities) { this.eventDispatcher = new SynchronizedEventDispatcher(this); this.apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); this.eventWatcher = eventWatcher ?? throw new ArgumentNullException(nameof(eventWatcher)); this.capabilities = capabilities ?? throw new ArgumentNullException(nameof(capabilities)); this.eventWatcher.DeviceConnected += this.EventDeviceConnected; this.eventWatcher.DeviceDisconnected += this.EventDeviceDisconnected; this.eventWatcher.DevicePaused += this.EventDevicePaused; this.eventWatcher.DeviceResumed += this.EventDeviceResumed; }
public SyncthingDeviceManager(SynchronizedTransientWrapper <ISyncthingApiClient> apiClient, ISyncthingEventWatcher eventWatcher, ISyncthingCapabilities capabilities) { this.eventDispatcher = new SynchronizedEventDispatcher(this); this.apiClient = apiClient; this.eventWatcher = eventWatcher; this.capabilities = capabilities; this.eventWatcher.DeviceConnected += this.EventDeviceConnected; this.eventWatcher.DeviceDisconnected += this.EventDeviceDisconnected; this.eventWatcher.DevicePaused += this.EventDevicePaused; this.eventWatcher.DeviceResumed += this.EventDeviceResumed; }
public SyncthingDeviceManager(SynchronizedTransientWrapper<ISyncthingApiClient> apiClient, ISyncthingEventWatcher eventWatcher, ISyncthingCapabilities capabilities) { this.eventDispatcher = new SynchronizedEventDispatcher(this); this.apiClient = apiClient; this.eventWatcher = eventWatcher; this.capabilities = capabilities; this.eventWatcher.DeviceConnected += this.EventDeviceConnected; this.eventWatcher.DeviceDisconnected += this.EventDeviceDisconnected; this.eventWatcher.DevicePaused += this.EventDevicePaused; this.eventWatcher.DeviceResumed += this.EventDeviceResumed; }
public SyncthingFolderManager( SynchronizedTransientWrapper <ISyncthingApiClient> apiClient, ISyncthingEventWatcher eventWatcher) { this.eventDispatcher = new SynchronizedEventDispatcher(this); this.apiClient = apiClient; this.eventWatcher = eventWatcher; this.eventWatcher.SyncStateChanged += (o, e) => this.FolderSyncStateChanged(e); this.eventWatcher.FolderStatusChanged += (o, e) => this.FolderStatusChanged(e.FolderId, e.FolderStatus); this.eventWatcher.ItemStarted += (o, e) => this.ItemStarted(e.Folder, e.Item); this.eventWatcher.ItemFinished += (o, e) => this.ItemFinished(e.Folder, e.Item); this.eventWatcher.FolderErrorsChanged += (o, e) => this.FolderErrorsChangedEvt(e.FolderId, e.Errors); }
public SyncthingTransferHistory(ISyncthingEventWatcher eventWatcher, ISyncthingFolderManager folderManager) { this.eventDispatcher = new SynchronizedEventDispatcher(this); this.eventWatcher = eventWatcher; this.folderManager = folderManager; this.eventWatcher.ItemStarted += this.ItemStarted; this.eventWatcher.ItemFinished += this.ItemFinished; this.eventWatcher.ItemDownloadProgressChanged += this.ItemDownloadProgressChanged; // We can't use the EventWatcher to watch for folder sync state change events: events could be skipped. // The folder manager knows how to listen to skipped event notifications, and refresh the folder states appropriately this.folderManager.SyncStateChanged += this.SyncStateChanged; }
public SyncthingFolderManager( SynchronizedTransientWrapper<ISyncthingApiClient> apiClient, ISyncthingEventWatcher eventWatcher, TimeSpan ignoresFetchTimeout) { this.eventDispatcher = new SynchronizedEventDispatcher(this); this.apiClient = apiClient; this.ignoresFetchTimeout = ignoresFetchTimeout; this.eventWatcher = eventWatcher; this.eventWatcher.SyncStateChanged += (o, e) => this.FolderSyncStateChanged(e); this.eventWatcher.FolderStatusChanged += (o, e) => this.FolderStatusChanged(e.FolderId, e.FolderStatus); this.eventWatcher.ItemStarted += (o, e) => this.ItemStarted(e.Folder, e.Item); this.eventWatcher.ItemFinished += (o, e) => this.ItemFinished(e.Folder, e.Item); this.eventWatcher.FolderErrorsChanged += (o, e) => this.FolderErrorsChangedEvt(e.FolderId, e.Errors); }
public SyncthingManager( ISyncthingProcessRunner processRunner, ISyncthingApiClientFactory apiClientFactory, ISyncthingEventWatcherFactory eventWatcherFactory, ISyncthingConnectionsWatcherFactory connectionsWatcherFactory, IFreePortFinder freePortFinder) { this.StartedTime = DateTime.MinValue; this.LastConnectivityEventTime = DateTime.MinValue; this.ApiKey = this.GenerateApiKey(); this.eventDispatcher = new SynchronizedEventDispatcher(this); this.processRunner = processRunner; this.apiClientFactory = apiClientFactory; this.freePortFinder = freePortFinder; this.apiClient = new SynchronizedTransientWrapper <ISyncthingApiClient>(this.apiClientsLock); this.eventWatcher = eventWatcherFactory.CreateEventWatcher(this.apiClient); this.eventWatcher.DeviceConnected += (o, e) => this.LastConnectivityEventTime = DateTime.UtcNow; this.eventWatcher.DeviceDisconnected += (o, e) => this.LastConnectivityEventTime = DateTime.UtcNow; this.eventWatcher.ConfigSaved += (o, e) => this.ReloadConfigDataAsync(); this.eventWatcher.EventsSkipped += (o, e) => this.ReloadConfigDataAsync(); this.eventWatcher.DeviceRejected += (o, e) => this.OnDeviceRejected(e.DeviceId, e.Address); this.eventWatcher.FolderRejected += (o, e) => this.OnFolderRejected(e.DeviceId, e.FolderId); this.connectionsWatcher = connectionsWatcherFactory.CreateConnectionsWatcher(this.apiClient); this.connectionsWatcher.TotalConnectionStatsChanged += (o, e) => this.OnTotalConnectionStatsChanged(e.TotalConnectionStats); this._folders = new SyncthingFolderManager(this.apiClient, this.eventWatcher); this._devices = new SyncthingDeviceManager(this.apiClient, this.eventWatcher, this.Capabilities); this._transferHistory = new SyncthingTransferHistory(this.eventWatcher, this._folders); this._debugFacilities = new SyncthingDebugFacilitiesManager(this.apiClient, this.Capabilities); this.processRunner.ProcessStopped += (o, e) => this.ProcessStopped(e.ExitStatus); this.processRunner.MessageLogged += (o, e) => this.OnMessageLogged(e.LogMessage); this.processRunner.ProcessRestarted += (o, e) => this.ProcessRestarted(); this.processRunner.Starting += (o, e) => this.ProcessStarting(); }
public SyncthingManager( ISyncthingProcessRunner processRunner, ISyncthingApiClientFactory apiClientFactory, ISyncthingEventWatcherFactory eventWatcherFactory, ISyncthingConnectionsWatcherFactory connectionsWatcherFactory, IFreePortFinder freePortFinder) { this.StartedTime = DateTime.MinValue; this.LastConnectivityEventTime = DateTime.MinValue; this.eventDispatcher = new SynchronizedEventDispatcher(this); this.processRunner = processRunner; this.apiClientFactory = apiClientFactory; this.freePortFinder = freePortFinder; this.apiClient = new SynchronizedTransientWrapper<ISyncthingApiClient>(this.apiClientsLock); this.eventWatcher = eventWatcherFactory.CreateEventWatcher(this.apiClient); this.eventWatcher.DeviceConnected += (o, e) => this.LastConnectivityEventTime = DateTime.UtcNow; this.eventWatcher.DeviceDisconnected += (o, e) => this.LastConnectivityEventTime = DateTime.UtcNow; this.eventWatcher.ConfigSaved += (o, e) => this.ReloadConfigDataAsync(); this.eventWatcher.EventsSkipped += (o, e) => this.ReloadConfigDataAsync(); this.connectionsWatcher = connectionsWatcherFactory.CreateConnectionsWatcher(this.apiClient); this.connectionsWatcher.TotalConnectionStatsChanged += (o, e) => this.OnTotalConnectionStatsChanged(e.TotalConnectionStats); this._folders = new SyncthingFolderManager(this.apiClient, this.eventWatcher, TimeSpan.FromMinutes(10)); this._devices = new SyncthingDeviceManager(this.apiClient, this.eventWatcher, this.Capabilities); this._transferHistory = new SyncthingTransferHistory(this.eventWatcher, this._folders); this._debugFacilities = new SyncthingDebugFacilitiesManager(this.apiClient, this.Capabilities); this.processRunner.ProcessStopped += (o, e) => this.ProcessStopped(e.ExitStatus); this.processRunner.MessageLogged += (o, e) => this.OnMessageLogged(e.LogMessage); this.processRunner.ProcessRestarted += (o, e) => this.ProcessRestarted(); this.processRunner.Starting += (o, e) => this.ProcessStarting(); }