private void UnmountAndStopWorkingDirectoryCallbacks() { this.ReleaseFolderLocks(); if (this.heartbeat != null) { this.heartbeat.Stop(); this.heartbeat = null; } if (this.gvfltCallbacks != null) { this.gvfltCallbacks.Stop(); this.gvfltCallbacks.Dispose(); this.gvfltCallbacks = null; } }
private void MountAndStartWorkingDirectoryCallbacks(GVFSContext context) { string error; if (!context.Enlistment.Authentication.TryRefreshCredentials(context.Tracer, out error)) { this.FailMountAndExit("Failed to obtain git credentials: " + error); } // Checking the disk layout version is done before this point in GVFS.CommandLine.MountVerb.PreExecute RepoMetadata repoMetadata = new RepoMetadata(this.enlistment.DotGVFSRoot); GitObjectsHttpRequestor objectRequestor = new GitObjectsHttpRequestor(context.Tracer, context.Enlistment, Environment.ProcessorCount); this.gitObjects = new GVFSGitObjects(context, objectRequestor); this.gvfltCallbacks = this.CreateOrReportAndExit(() => new GVFltCallbacks(context, this.gitObjects, repoMetadata), "Failed to create src folder callbacks"); int persistedVersion; if (!repoMetadata.TryGetOnDiskLayoutVersion(out persistedVersion, out error)) { this.FailMountAndExit("Error: {0}", error); } try { if (!this.gvfltCallbacks.TryStart(out error)) { this.FailMountAndExit("Error: {0}. \r\nPlease confirm that gvfs clone completed without error.", error); } } catch (Exception e) { this.FailMountAndExit("Failed to initialize src folder callbacks. {0}", e.ToString()); } repoMetadata.SaveCurrentDiskLayoutVersion(); this.AcquireFolderLocks(context); this.heartbeat = new HeartbeatThread(this.tracer, this.gvfltCallbacks); this.heartbeat.Start(); }
private void UnmountAndStopWorkingDirectoryCallbacks() { if (this.maintenanceScheduler != null) { this.maintenanceScheduler.Dispose(); this.maintenanceScheduler = null; } if (this.heartbeat != null) { this.heartbeat.Stop(); this.heartbeat = null; } if (this.fileSystemCallbacks != null) { this.fileSystemCallbacks.Stop(); this.fileSystemCallbacks.Dispose(); this.fileSystemCallbacks = null; } }
private void MountAndStartWorkingDirectoryCallbacks(CacheServerInfo cache) { string error; if (!this.context.Enlistment.Authentication.TryInitialize(this.context.Tracer, this.context.Enlistment, out error)) { this.FailMountAndExit("Failed to obtain git credentials: " + error); } GitObjectsHttpRequestor objectRequestor = new GitObjectsHttpRequestor(this.context.Tracer, this.context.Enlistment, cache, this.retryConfig); this.gitObjects = new GVFSGitObjects(this.context, objectRequestor); FileSystemVirtualizer virtualizer = this.CreateOrReportAndExit(() => GVFSPlatformLoader.CreateFileSystemVirtualizer(this.context, this.gitObjects), "Failed to create src folder virtualizer"); GitStatusCache gitStatusCache = (!this.context.Unattended && GVFSPlatform.Instance.IsGitStatusCacheSupported()) ? new GitStatusCache(this.context, this.gitStatusCacheConfig) : null; if (gitStatusCache != null) { this.tracer.RelatedInfo("Git status cache enabled. Backoff time: {0}ms", this.gitStatusCacheConfig.BackoffTime.TotalMilliseconds); } else { this.tracer.RelatedInfo("Git status cache is not enabled"); } this.gvfsDatabase = this.CreateOrReportAndExit(() => new GVFSDatabase(this.context.FileSystem, this.context.Enlistment.EnlistmentRoot, new SqliteDatabase()), "Failed to create database connection"); this.fileSystemCallbacks = this.CreateOrReportAndExit( () => { return(new FileSystemCallbacks( this.context, this.gitObjects, RepoMetadata.Instance, blobSizes: null, gitIndexProjection: null, backgroundFileSystemTaskRunner: null, fileSystemVirtualizer: virtualizer, placeholderDatabase: new PlaceholderTable(this.gvfsDatabase), gitStatusCache: gitStatusCache)); }, "Failed to create src folder callback listener"); this.maintenanceScheduler = this.CreateOrReportAndExit(() => new GitMaintenanceScheduler(this.context, this.gitObjects), "Failed to start maintenance scheduler"); int majorVersion; int minorVersion; if (!RepoMetadata.Instance.TryGetOnDiskLayoutVersion(out majorVersion, out minorVersion, out error)) { this.FailMountAndExit("Error: {0}", error); } if (majorVersion != GVFSPlatform.Instance.DiskLayoutUpgrade.Version.CurrentMajorVersion) { this.FailMountAndExit( "Error: On disk version ({0}) does not match current version ({1})", majorVersion, GVFSPlatform.Instance.DiskLayoutUpgrade.Version.CurrentMajorVersion); } try { if (!this.fileSystemCallbacks.TryStart(out error)) { this.FailMountAndExit("Error: {0}. \r\nPlease confirm that gvfs clone completed without error.", error); } } catch (Exception e) { this.FailMountAndExit("Failed to initialize src folder callbacks. {0}", e.ToString()); } this.heartbeat = new HeartbeatThread(this.tracer, this.fileSystemCallbacks); this.heartbeat.Start(); }
public ServiceStatusTracker(IServiceConnector connector) { monitoredServers = new List<TrackedService>(128); heartbeatThread = new HeartbeatThread(this, connector, monitoredServers); }
public ServiceStatusTracker(IServiceConnector connector) { monitoredServers = new List <TrackedService>(128); heartbeatThread = new HeartbeatThread(this, connector, monitoredServers); }