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 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 (!GitHelper.IsValidFullSHA(objectSha)) { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.InvalidSHAResult); } else { if (this.gitObjects.TryDownloadAndSaveObject(objectSha.Substring(0, 2), objectSha.Substring(2))) { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.SuccessResult); } else { response = new NamedPipeMessages.DownloadObject.Response(NamedPipeMessages.DownloadObject.DownloadFailed); } } } connection.TrySendResponse(response.CreateMessage()); }