public void HandleRequest(ITracer tracer, string request, NamedPipeServer.Connection connection) { NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); if (string.IsNullOrWhiteSpace(message.Header)) { return; } using (ITracer activity = this.tracer.StartActivity(message.Header, EventLevel.Informational, new EventMetadata { { nameof(request), request } })) { try { this.HandleMessage(activity, message, connection); } catch (SerializationException ex) { EventMetadata metadata = new EventMetadata(); metadata.Add("Area", this.etwArea); metadata.Add("Header", message.Header); metadata.Add("Exception", ex.ToString()); activity.RelatedError(metadata, $"Could not deserialize {this.requestDescription} request: {ex.Message}"); } } }
private void HandleRequest(ITracer tracer, string request, NamedPipeServer.Connection connection) { try { NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.Notification.Request.Header: NamedPipeMessages.Notification.Request toastRequest = NamedPipeMessages.Notification.Request.FromMessage(message); if (toastRequest != null) { using (ITracer activity = this.tracer.StartActivity("SendToast", EventLevel.Informational)) { this.ShowToast(activity, toastRequest); } } break; } } catch (Exception e) { this.tracer.RelatedError("Unhandled exception: {0}", e.ToString()); } }
private void HandleLockRequest(NamedPipeServer.Connection connection, NamedPipeMessages.Message message) { NamedPipeMessages.AcquireLock.Response response; NamedPipeMessages.AcquireLock.Data externalHolder; NamedPipeMessages.AcquireLock.Request request = new NamedPipeMessages.AcquireLock.Request(message); NamedPipeMessages.AcquireLock.Data requester = request.RequestData; if (request == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.UnknownRequest, requester); } else if (this.currentState != MountState.Ready) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.MountNotReadyResult); } else { bool lockAcquired = this.gvfsLock.TryAcquireLock(requester, out externalHolder); if (lockAcquired) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.AcceptResult); } else if (externalHolder == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGVFSResult); } else { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGitResult, externalHolder); } } connection.TrySendResponse(response.CreateMessage()); }
private void HandleRequest(ITracer tracer, string request, NamedPipeServer.Connection connection) { NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.GetStatus.Request: this.HandleGetStatusRequest(connection); break; case NamedPipeMessages.Unmount.Request: this.HandleUnmountRequest(connection); break; case NamedPipeMessages.DownloadObject.DownloadRequest: this.HandleDownloadObjectRequest(message, connection); break; case NamedPipeMessages.RunPostFetchJob.PostFetchJob: this.HandlePostFetchJobRequest(message, connection); break; default: EventMetadata metadata = new EventMetadata(); metadata.Add("Area", "Mount"); metadata.Add("Header", message.Header); this.tracer.RelatedError(metadata, "HandleRequest: Unknown request"); connection.TrySendResponse(NamedPipeMessages.UnknownRequest); break; } }
private void HandleDehydrateFolders(NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { NamedPipeMessages.DehydrateFolders.Request request = new NamedPipeMessages.DehydrateFolders.Request(message); this.tracer.RelatedInfo($"Received dehydrate folders request with body {message.Body}"); NamedPipeMessages.DehydrateFolders.Response response; if (this.currentState == MountState.Ready) { response = new NamedPipeMessages.DehydrateFolders.Response(NamedPipeMessages.DehydrateFolders.DehydratedResult); string[] folders = request.Folders.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string folder in folders) { if (this.fileSystemCallbacks.TryDehydrateFolder(folder, out string errorMessage)) { response.SuccessfulFolders.Add(folder); } else { response.FailedFolders.Add($"{folder}\0{errorMessage}"); } } // Since placeholders and modified paths could have changed with the dehydrate, the index needs to be rebuilt GitProcess gitProcess = new GitProcess(this.enlistment); gitProcess.ForceCheckout(GVFSConstants.DotGit.HeadName); } else { response = new NamedPipeMessages.DehydrateFolders.Response(NamedPipeMessages.DehydrateFolders.MountNotReadyResult); } connection.TrySendResponse(response.CreateMessage()); }
public UnregisterRepoHandler(ITracer tracer, RepoRegistry registry, NamedPipeServer.Connection connection, NamedPipeMessages.UnregisterRepoRequest request) { this.tracer = tracer; this.registry = registry; this.connection = connection; this.request = request; }
private void HandleRequest(string request, NamedPipeServer.Connection connection) { NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.GetStatus.Request: this.HandleGetStatusRequest(connection); break; case NamedPipeMessages.Unmount.Request: this.HandleUnmountRequest(connection); break; case NamedPipeMessages.AcquireLock.AcquireRequest: this.HandleLockRequest(message.Body, connection); break; case NamedPipeMessages.ReleaseLock.Request: this.HandleReleaseLockRequest(message.Body, connection); break; case NamedPipeMessages.DownloadObject.DownloadRequest: this.HandleDownloadObjectRequest(message, connection); break; default: connection.TrySendResponse(NamedPipeMessages.UnknownRequest); break; } }
private void HandleUnmountRequest(NamedPipeServer.Connection connection) { switch (this.currentState) { case MountState.Mounting: connection.TrySendResponse(NamedPipeMessages.Unmount.NotMounted); break; // Even if the previous mount failed, attempt to unmount anyway. Otherwise the user has no // recourse but to kill the process. case MountState.MountFailed: goto case MountState.Ready; case MountState.Ready: this.currentState = MountState.Unmounting; connection.TrySendResponse(NamedPipeMessages.Unmount.Acknowledged); this.UnmountAndStopWorkingDirectoryCallbacks(); connection.TrySendResponse(NamedPipeMessages.Unmount.Completed); this.unmountEvent.Set(); Environment.Exit((int)ReturnCode.Success); break; case MountState.Unmounting: connection.TrySendResponse(NamedPipeMessages.Unmount.AlreadyUnmounting); break; default: connection.TrySendResponse(NamedPipeMessages.UnknownGVFSState); break; } }
protected void WriteToClient(NamedPipeMessages.Message message, NamedPipeServer.Connection connection, ITracer tracer) { if (!connection.TrySendResponse(message)) { tracer.RelatedError("Failed to send line to client: {0}", message); } }
public EnableAndAttachProjFSHandler( ITracer tracer, NamedPipeServer.Connection connection, NamedPipeMessages.EnableAndAttachProjFSRequest request) { this.tracer = tracer; this.connection = connection; this.request = request; }
public ExcludeFromAntiVirusHandler( ITracer tracer, NamedPipeServer.Connection connection, NamedPipeMessages.ExcludeFromAntiVirusRequest request) { this.tracer = tracer; this.connection = connection; this.request = request; }
public AttachGvFltHandler( ITracer tracer, NamedPipeServer.Connection connection, NamedPipeMessages.AttachGvFltRequest request) { this.tracer = tracer; this.connection = connection; this.request = request; }
private void TrySendResponse( ITracer tracer, string message, NamedPipeServer.Connection connection) { if (!connection.TrySendResponse(message)) { tracer.RelatedError($"{nameof(this.TrySendResponse)}: Could not send response to client. Reply Info: {message}"); } }
private void HandleLockRequest(string messageBody, NamedPipeServer.Connection connection) { NamedPipeMessages.AcquireLock.Response response; NamedPipeMessages.LockRequest request = new NamedPipeMessages.LockRequest(messageBody); NamedPipeMessages.LockData requester = request.RequestData; if (this.currentState == MountState.Unmounting) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.UnmountInProgressResult); EventMetadata metadata = new EventMetadata(); metadata.Add("LockRequest", requester.ToString()); metadata.Add(TracingConstants.MessageKey.InfoMessage, "Request denied, unmount in progress"); this.tracer.RelatedEvent(EventLevel.Informational, "HandleLockRequest_UnmountInProgress", metadata); } else if (this.currentState != MountState.Ready) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.MountNotReadyResult); } else { bool lockAcquired = false; NamedPipeMessages.LockData existingExternalHolder = null; string denyGVFSMessage = null; bool lockAvailable = this.context.Repository.GVFSLock.IsLockAvailableForExternalRequestor(out existingExternalHolder); bool isReadyForExternalLockRequests = this.fileSystemCallbacks.IsReadyForExternalAcquireLockRequests(requester, out denyGVFSMessage); if (!requester.CheckAvailabilityOnly && isReadyForExternalLockRequests) { lockAcquired = this.context.Repository.GVFSLock.TryAcquireLockForExternalRequestor(requester, out existingExternalHolder); } if (requester.CheckAvailabilityOnly && lockAvailable && isReadyForExternalLockRequests) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.AvailableResult); } else if (lockAcquired) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.AcceptResult); this.tracer.SetGitCommandSessionId(requester.GitCommandSessionId); } else if (existingExternalHolder == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGVFSResult, responseData: null, denyGVFSMessage: denyGVFSMessage); } else { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGitResult, existingExternalHolder); } } connection.TrySendResponse(response.CreateMessage()); }
private void HandleLockRequest(string messageBody, NamedPipeServer.Connection connection) { NamedPipeMessages.AcquireLock.Response response; NamedPipeMessages.LockData externalHolder; NamedPipeMessages.LockRequest request = new NamedPipeMessages.LockRequest(messageBody); NamedPipeMessages.LockData requester = request.RequestData; if (request == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.UnknownRequest, requester); } else if (this.currentState == MountState.Unmounting) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.UnmountInProgressResult); EventMetadata metadata = new EventMetadata(); metadata.Add("LockRequest", requester.ToString()); metadata.Add(TracingConstants.MessageKey.InfoMessage, "Request denied, unmount in progress"); this.tracer.RelatedEvent(EventLevel.Informational, "HandleLockRequest_UnmountInProgress", metadata); } else if (this.currentState != MountState.Ready) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.MountNotReadyResult); } else { bool lockAcquired = false; string denyMessage; if (this.gvfltCallbacks.IsReadyForExternalAcquireLockRequests(requester, out denyMessage)) { lockAcquired = this.context.Repository.GVFSLock.TryAcquireLock(requester, out externalHolder); } else { // There might be an external lock holder, and it should be reported to the user externalHolder = this.context.Repository.GVFSLock.GetExternalLockHolder(); } if (lockAcquired) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.AcceptResult); } else if (externalHolder == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGVFSResult, responseData: null, denyGVFSMessage: denyMessage); } else { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGitResult, externalHolder); } } connection.TrySendResponse(response.CreateMessage()); }
public GetActiveRepoListHandler( ITracer tracer, RepoRegistry registry, NamedPipeServer.Connection connection, NamedPipeMessages.GetActiveRepoListRequest request) { this.tracer = tracer; this.registry = registry; this.connection = connection; this.request = request; }
private void HandleRequest(ITracer tracer, string request, NamedPipeServer.Connection connection) { NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.GetStatus.Request: this.HandleGetStatusRequest(connection); break; case NamedPipeMessages.Unmount.Request: this.HandleUnmountRequest(connection); break; case NamedPipeMessages.AcquireLock.AcquireRequest: this.HandleLockRequest(message.Body, connection); break; case NamedPipeMessages.ReleaseLock.Request: this.HandleReleaseLockRequest(message.Body, connection); break; case NamedPipeMessages.DownloadObject.DownloadRequest: this.HandleDownloadObjectRequest(message, connection); break; case NamedPipeMessages.ModifiedPaths.ListRequest: this.HandleModifiedPathsListRequest(message, connection); break; case NamedPipeMessages.PostIndexChanged.NotificationRequest: this.HandlePostIndexChangedRequest(message, connection); break; case NamedPipeMessages.RunPostFetchJob.PostFetchJob: this.HandlePostFetchJobRequest(message, connection); break; case NamedPipeMessages.DehydrateFolders.Dehydrate: this.HandleDehydrateFolders(message, connection); break; default: EventMetadata metadata = new EventMetadata(); metadata.Add("Area", "Mount"); metadata.Add("Header", message.Header); this.tracer.RelatedError(metadata, "HandleRequest: Unknown request"); connection.TrySendResponse(NamedPipeMessages.UnknownRequest); break; } }
private void HandleReleaseLockRequest(string messageBody, NamedPipeServer.Connection connection) { NamedPipeMessages.LockRequest request = new NamedPipeMessages.LockRequest(messageBody); if (this.gvfltCallbacks.TryReleaseExternalLock(request.RequestData.PID)) { connection.TrySendResponse(NamedPipeMessages.ReleaseLock.SuccessResult); } else { connection.TrySendResponse(NamedPipeMessages.ReleaseLock.FailureResult); } }
protected virtual void HandleMessage( ITracer tracer, NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { switch (message.Header) { case NamedPipeMessages.RegisterRepoRequest.Header: this.requestDescription = MountRequestDescription; NamedPipeMessages.RegisterRepoRequest mountRequest = NamedPipeMessages.RegisterRepoRequest.FromMessage(message); RegisterRepoHandler mountHandler = new RegisterRepoHandler(tracer, this.repoRegistry, connection, mountRequest); mountHandler.Run(); break; case NamedPipeMessages.UnregisterRepoRequest.Header: this.requestDescription = UnmountRequestDescription; NamedPipeMessages.UnregisterRepoRequest unmountRequest = NamedPipeMessages.UnregisterRepoRequest.FromMessage(message); UnregisterRepoHandler unmountHandler = new UnregisterRepoHandler(tracer, this.repoRegistry, connection, unmountRequest); unmountHandler.Run(); break; case NamedPipeMessages.GetActiveRepoListRequest.Header: this.requestDescription = RepoListRequestDescription; NamedPipeMessages.GetActiveRepoListRequest repoListRequest = NamedPipeMessages.GetActiveRepoListRequest.FromMessage(message); GetActiveRepoListHandler excludeHandler = new GetActiveRepoListHandler(tracer, this.repoRegistry, connection, repoListRequest); excludeHandler.Run(); break; case NamedPipeMessages.EnableAndAttachProjFSRequest.Header: // This request is ignored on non Windows platforms. NamedPipeMessages.EnableAndAttachProjFSRequest.Response response = new NamedPipeMessages.EnableAndAttachProjFSRequest.Response(); response.State = NamedPipeMessages.CompletionState.Success; this.TrySendResponse(tracer, response.ToMessage().ToString(), connection); break; default: this.requestDescription = UnknownRequestDescription; EventMetadata metadata = new EventMetadata(); metadata.Add("Area", this.etwArea); metadata.Add("Header", message.Header); tracer.RelatedWarning(metadata, "HandleNewConnection: Unknown request", Keywords.Telemetry); this.TrySendResponse(tracer, NamedPipeMessages.UnknownRequest, connection); break; } }
private void HandleReleaseLockRequest(string messageBody, NamedPipeServer.Connection connection) { NamedPipeMessages.LockRequest request = new NamedPipeMessages.LockRequest(messageBody); if (request.RequestData == null) { this.tracer.RelatedError($"{nameof(this.HandleReleaseLockRequest)} received invalid lock request with body '{messageBody}'"); this.UnmountAndStopWorkingDirectoryCallbacks(); Environment.Exit((int)ReturnCode.NullRequestData); } NamedPipeMessages.ReleaseLock.Response response = this.fileSystemCallbacks.TryReleaseExternalLock(request.RequestData.PID); connection.TrySendResponse(response.CreateMessage()); }
protected override void HandleMessage( ITracer tracer, NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { if (message.Header == NamedPipeMessages.EnableAndAttachProjFSRequest.Header) { this.requestDescription = EnableProjFSRequestDescription; NamedPipeMessages.EnableAndAttachProjFSRequest attachRequest = NamedPipeMessages.EnableAndAttachProjFSRequest.FromMessage(message); EnableAndAttachProjFSHandler attachHandler = new EnableAndAttachProjFSHandler(tracer, connection, attachRequest); attachHandler.Run(); } else { base.HandleMessage(tracer, message, connection); } }
protected virtual void HandleMessage( ITracer tracer, NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { switch (message.Header) { default: this.requestDescription = UnknownRequestDescription; EventMetadata metadata = new EventMetadata(); metadata.Add("Area", this.etwArea); metadata.Add("Header", message.Header); tracer.RelatedWarning(metadata, "HandleNewConnection: Unknown request", Keywords.Telemetry); this.TrySendResponse(tracer, NamedPipeMessages.UnknownRequest, connection); break; } }
private void HandleLockRequest(string messageBody, NamedPipeServer.Connection connection) { NamedPipeMessages.AcquireLock.Response response; NamedPipeMessages.LockData externalHolder; NamedPipeMessages.LockRequest request = new NamedPipeMessages.LockRequest(messageBody); NamedPipeMessages.LockData requester = request.RequestData; if (request == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.UnknownRequest, requester); } else if (this.currentState != MountState.Ready) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.MountNotReadyResult); } else { bool lockAcquired = false; if (this.gvfltCallbacks.IsReadyForExternalAcquireLockRequests()) { lockAcquired = this.gvfsLock.TryAcquireLock(requester, out externalHolder); } else { // There might be an external lock holder, and it should be reported to the user externalHolder = this.gvfsLock.GetExternalLockHolder(); } if (lockAcquired) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.AcceptResult); } else if (externalHolder == null) { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGVFSResult); } else { response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.DenyGitResult, externalHolder); } } connection.TrySendResponse(response.CreateMessage()); }
private static void HandleRequest(string request, NamedPipeServer.Connection connection) { NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.AcquireLock.AcquireRequest: NamedPipeMessages.AcquireLock.Response response = new NamedPipeMessages.AcquireLock.Response(NamedPipeMessages.AcquireLock.AcceptResult); connection.TrySendResponse(response.CreateMessage()); break; case NamedPipeMessages.ReleaseLock.Request: connection.TrySendResponse(NamedPipeMessages.ReleaseLock.SuccessResult); break; default: connection.TrySendResponse(NamedPipeMessages.UnknownRequest); break; } }
private void HandleDownloadObjectRequest(NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { NamedPipeMessages.DownloadObject.Response response; NamedPipeMessages.DownloadObject.Request request = new NamedPipeMessages.DownloadObject.Request(message); string objectSha = request.RequestSha; if (request == null) { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.UnknownRequest); } else if (this.currentState != MountState.Ready) { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.MountNotReadyResult); } else { if (!SHA1Util.IsValidShaFormat(objectSha)) { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.InvalidSHAResult); } else { Stopwatch downloadTime = Stopwatch.StartNew(); if (this.gitObjects.TryDownloadAndSaveObject(objectSha, GVFSGitObjects.RequestSource.NamedPipeMessage) == GitObjects.DownloadAndSaveObjectResult.Success) { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.SuccessResult); } else { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.DownloadFailed); } bool isBlob; this.context.Repository.TryGetIsBlob(objectSha, out isBlob); this.context.Repository.GVFSLock.RecordObjectDownload(isBlob, downloadTime.ElapsedMilliseconds); } } connection.TrySendResponse(response.CreateMessage()); }
private void HandlePostFetchJobRequest(NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { NamedPipeMessages.RunPostFetchJob.Request request = new NamedPipeMessages.RunPostFetchJob.Request(message); this.tracer.RelatedInfo("Received post-fetch job request with body {0}", message.Body); NamedPipeMessages.RunPostFetchJob.Response response; if (this.currentState == MountState.Ready) { List <string> packIndexes = JsonConvert.DeserializeObject <List <string> >(message.Body); this.maintenanceScheduler.EnqueueOneTimeStep(new PostFetchStep(this.context, packIndexes)); response = new NamedPipeMessages.RunPostFetchJob.Response(NamedPipeMessages.RunPostFetchJob.QueuedResult); } else { response = new NamedPipeMessages.RunPostFetchJob.Response(NamedPipeMessages.RunPostFetchJob.MountNotReadyResult); } connection.TrySendResponse(response.CreateMessage()); }
private void HandlePostFetchJobRequest(NamedPipeMessages.Message message, NamedPipeServer.Connection connection) { NamedPipeMessages.RunPostFetchJob.Request request = new NamedPipeMessages.RunPostFetchJob.Request(message); this.tracer.RelatedInfo("Received post-fetch job request with body {0}", message.Body); NamedPipeMessages.RunPostFetchJob.Response response; if (this.currentState == MountState.Ready) { List <string> packIndexes = JsonConvert.DeserializeObject <List <string> >(message.Body); this.fileSystemCallbacks.LaunchPostFetchJob(packIndexes); response = new NamedPipeMessages.RunPostFetchJob.Response(NamedPipeMessages.RunPostFetchJob.QueuedResult); } else { response = new NamedPipeMessages.RunPostFetchJob.Response(NamedPipeMessages.RunPostFetchJob.MountNotReadyResult); } connection.TrySendResponse(response.CreateMessage()); }
private void HandleConnection(NamedPipeServer.Connection connection) { while (connection.IsConnected) { string request = connection.ReadRequest(); if (request == null || !connection.IsConnected) { break; } NamedPipeMessages.Message message = NamedPipeMessages.Message.FromString(request); switch (message.Header) { case NamedPipeMessages.GetStatus.Request: this.HandleGetStatusRequest(connection); break; case NamedPipeMessages.Unmount.Request: this.HandleUnmountRequest(connection); break; case NamedPipeMessages.AcquireLock.AcquireRequest: this.HandleLockRequest(connection, message); break; case NamedPipeMessages.DownloadObject.DownloadRequest: this.HandleDownloadObjectRequest(connection, message); break; default: connection.TrySendResponse(NamedPipeMessages.UnknownRequest); break; } } }
private void HandleGetStatusRequest(NamedPipeServer.Connection connection) { NamedPipeMessages.GetStatus.Response response = new NamedPipeMessages.GetStatus.Response(); response.EnlistmentRoot = this.enlistment.EnlistmentRoot; response.LocalCacheRoot = !string.IsNullOrWhiteSpace(this.enlistment.LocalCacheRoot) ? this.enlistment.LocalCacheRoot : this.enlistment.GitObjectsRoot; response.RepoUrl = this.enlistment.RepoUrl; response.CacheServer = this.cacheServer.ToString(); response.LockStatus = this.context?.Repository.GVFSLock != null?this.context.Repository.GVFSLock.GetStatus() : "Unavailable"; response.DiskLayoutVersion = $"{GVFSPlatform.Instance.DiskLayoutUpgrade.Version.CurrentMajorVersion}.{GVFSPlatform.Instance.DiskLayoutUpgrade.Version.CurrentMinorVersion}"; switch (this.currentState) { case MountState.Mounting: response.MountStatus = NamedPipeMessages.GetStatus.Mounting; break; case MountState.Ready: response.MountStatus = NamedPipeMessages.GetStatus.Ready; response.BackgroundOperationCount = this.fileSystemCallbacks.BackgroundOperationCount; break; case MountState.Unmounting: response.MountStatus = NamedPipeMessages.GetStatus.Unmounting; break; case MountState.MountFailed: response.MountStatus = NamedPipeMessages.GetStatus.MountFailed; break; default: response.MountStatus = NamedPipeMessages.UnknownGVFSState; break; } connection.TrySendResponse(response.ToJson()); }
private void HandleGetStatusRequest(NamedPipeServer.Connection connection) { NamedPipeMessages.GetStatus.Response response = new NamedPipeMessages.GetStatus.Response(); response.EnlistmentRoot = this.enlistment.EnlistmentRoot; response.RepoUrl = this.enlistment.RepoUrl; response.ObjectsUrl = this.enlistment.ObjectsEndpointUrl; response.LockStatus = this.gvfsLock != null?this.gvfsLock.GetStatus() : "Unavailable"; response.DiskLayoutVersion = RepoMetadata.GetCurrentDiskLayoutVersion(); switch (this.currentState) { case MountState.Mounting: response.MountStatus = NamedPipeMessages.GetStatus.Mounting; break; case MountState.Ready: response.MountStatus = NamedPipeMessages.GetStatus.Ready; response.BackgroundOperationCount = this.gvfltCallbacks.GetBackgroundOperationCount(); break; case MountState.Unmounting: response.MountStatus = NamedPipeMessages.GetStatus.Unmounting; break; case MountState.MountFailed: response.MountStatus = NamedPipeMessages.GetStatus.MountFailed; break; default: response.MountStatus = NamedPipeMessages.UnknownGVFSState; break; } connection.TrySendResponse(response.ToJson()); }