Exemplo n.º 1
0
        protected static Func <T> SendRequest <T>(ITypedRequestProcessProxy server, TypedRequest request, TimeSpan timeout)
            where T : TypedResponse
        {
            var           sw         = new Stopwatch();
            var           waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
            T             response   = null;
            ErrorResponse error      = null;

            sw.Start();
            server.RunAsync(request, typedResponse => {
                Assert.IsInstanceOfType(typedResponse, typeof(T));
                sw.Stop();
                Logger.LogInfo("Request {0} took {1} msec to complete.", request.ClassName, sw.ElapsedMilliseconds);
                response = (T)typedResponse;
                waitHandle.Set();
            }, errorResponse => {
                error = errorResponse;
            });

            return(() => {
                if (!waitHandle.WaitOne(timeout))
                {
                    return null;
                }
                if (error != null)
                {
                    throw ErrorResponseHelper.CreateException(error);
                }
                return response;
            });
        }
Exemplo n.º 2
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDatabaseStatisticsRequest)typedRequest;

            if (request.ForceGabageCollection)
            {
                using (new TimeElapsedLogger("Forcing a full gabarge collection before returning statistics")) {
                    GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
                }
            }

            var snapshot            = _snapshotManager.CurrentSnapshot;
            var database            = _searchEngine.CurrentFileDatabaseSnapshot;
            var indexingServerState = _indexingServer.CurrentState;

            return(new GetDatabaseStatisticsResponse {
                ProjectCount = snapshot.ProjectRoots.Count,
                FileCount = database.FileNameCount,
                SearchableFileCount = database.SearchableFileCount,
                ServerNativeMemoryUsage = database.TotalFileContentsLength,
                IndexLastUpdatedUtc = indexingServerState.LastIndexUpdateUtc,
                ServerGcMemoryUsage = GC.GetTotalMemory(false),
                ServerStatus = indexingServerState.Status,
            });
        }
    public override TypedResponse Process(TypedRequest typedRequest) {
      _processor.RegisterFile(new FullPath(((RegisterFileRequest)typedRequest).FileName));

      return new DoneResponse {
        Info = "processing..."
      };
    }
Exemplo n.º 4
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDirectoryDetailsRequest)typedRequest;

            request.MaxFilesByExtensionDetailsCount = Math.Min(request.MaxFilesByExtensionDetailsCount, int.MaxValue);
            request.MaxLargeFilesDetailsCount       = Math.Min(request.MaxLargeFilesDetailsCount, int.MaxValue);

            var directoryPath   = new FullPath(request.Path);
            var snapshot        = _snapshotManager.CurrentSnapshot;
            var projectSnapshot = snapshot.ProjectRoots.FirstOrDefault(x => x.Project.RootPath.ContainsPath(directoryPath));

            if (projectSnapshot == null)
            {
                throw new RecoverableErrorException($"Directory \"{request.Path}\" not found in index");
            }
            var directorySnaphot = FindDirectorySnapshot(directoryPath, projectSnapshot);

            if (directorySnaphot == null)
            {
                throw new RecoverableErrorException($"Directory \"{request.Path}\" not found in index");
            }

            var database = _searchEngine.CurrentFileDatabaseSnapshot;

            return(new GetDirectoryDetailsResponse {
                DirectoryDetails = CreateDirectoryDetails(database, projectSnapshot, directorySnaphot,
                                                          request.MaxFilesByExtensionDetailsCount, request.MaxLargeFilesDetailsCount)
            });
        }
        public void RunAsync(TypedRequest request, Action <TypedResponse> callback, Action <ErrorResponse> errorCallback)
        {
            var sw = Stopwatch.StartNew();

            var ipcRequest = new IpcRequest {
                RequestId = _ipcRequestIdFactory.GetNextId(),
                Protocol  = IpcProtocols.TypedMessage,
                Data      = request
            };

            // Note: We capture the value outside the RunAsync callback.
            var localSequenceNumber = Interlocked.Increment(ref _currentSequenceNumber);

            _serverProcessProxy.RunAsync(ipcRequest, ipcResponse => {
                lock (_lock) {
                    _bufferedResponses.Add(new BufferedResponse {
                        SequenceNumber  = localSequenceNumber,
                        IpcRequest      = ipcRequest,
                        IpcResponse     = ipcResponse,
                        SuccessCallback = callback,
                        ErrorCallback   = errorCallback,
                        Elapsed         = sw.Elapsed
                    });
                }
                OnResponseReceived();
            });
        }
 public override TypedResponse Process(TypedRequest typedRequest) {
   var request = (GetFileExtractsRequest)typedRequest;
   var result = _searchEngine.GetFileExtracts(new FullPath(request.FileName), request.Positions, request.MaxExtractLength);
   return new GetFileExtractsResponse {
     FileName = request.FileName,
     FileExtracts = result.ToList()
   };
 }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            _processor.UnregisterFile(new FullPath(((UnregisterFileRequest)typedRequest).FileName));

            return(new DoneResponse {
                Info = "processing..."
            });
        }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            _processor.RemoveFile(((RemoveFileNameRequest)typedRequest).FileName);

              return new DoneResponse {
            Info = "processing..."
              };
        }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var tree = _processor.GetCurrentSnapshot();

            return(new GetFileSystemVersionResponse {
                Version = tree.Version
            });
        }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var tree = _snapshotManager.CurrentSnapshot;

            return(new GetFileSystemVersionResponse {
                Version = tree.Version
            });
        }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            _processor.AddFile(((AddFileNameRequest)typedRequest).FileName);

            return(new DoneResponse {
                Info = "processing..."
            });
        }
Exemplo n.º 12
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            _fileRegistrationTracker.UnregisterFileAsync(new FullPath(((UnregisterFileRequest)typedRequest).FileName));

            return(new DoneResponse {
                Info = "processing..."
            });
        }
 public override TypedResponse Process(TypedRequest typedRequest) {
   var request = (SearchFilePathsRequest)typedRequest;
   var result = _searchEngine.SearchFilePaths(request.SearchParams);
   return new SearchFilePathsResponse {
     SearchResult = FileSystemNameFactoryExtensions.ToFlatSearchResult(_fileSystemNameFactory, result.FileNames),
     HitCount = result.FileNames.Count,
     TotalCount = result.TotalCount
   };
 }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetFileExtractsRequest)typedRequest;
            var result  = _searchEngine.GetFileExtracts(new FullPathName(request.FileName), request.Positions);

            return(new GetFileExtractsResponse {
                FileName = request.FileName,
                FileExtracts = result.ToList()
            });
        }
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var r      = (SearchDirectoryNamesRequest)typedRequest;
            var result = _searchEngine.SearchDirectoryNames(r.SearchParams);

            return(new SearchDirectoryNamesResponse {
                SearchResult = FileSystemNameFactoryExtensions.ToFlatSearchResult(_fileSystemNameFactory, result.DirectoryNames),
                HitCount = result.DirectoryNames.Count,
                TotalCount = result.TotalCount
            });
        }
Exemplo n.º 16
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDirectoryEntriesRequest)typedRequest;

            var projectPath = new FullPath(request.ProjectPath);
            var project     = _snapshotManager.CurrentSnapshot.ProjectRoots
                              .FirstOrDefault(x => x.Project.RootPath.Equals(projectPath));

            return(new GetDirectoryEntriesResponse {
                DirectoryEntry = CreateDirectoryEntry(project, request.DirectoryRelativePath)
            });
        }
Exemplo n.º 17
0
        public void RunAsync(TypedRequest request, Action <TypedResponse> successCallback, Action <ErrorResponse> errorCallback)
        {
            // Note: We capture the value outside the RunAsync callback.
            var localSequenceNumber = Interlocked.Increment(ref _currentSequenceNumber);

            RunAsyncWorker(request, successCallback, errorCallback, localSequenceNumber, response => {
                lock (_lock) {
                    _bufferedResponses.Add(response);
                }
                OnResponseReceived();
            });
        }
    public override TypedResponse Process(TypedRequest typedRequest) {
      var request = (GetDatabaseStatisticsRequest)typedRequest;

      var snapshot = _processor.GetCurrentSnapshot();
      var database = _searchEngine.CurrentFileDatabase;
      return new GetDatabaseStatisticsResponse {
        ProjectCount = snapshot.ProjectRoots.Count,
        FileCount = database.FileNames.Count,
        IndexedFileCount = database.SearchableFileCount,
        IndexedFileSize = database.FileContentsPieces.Aggregate(0L, (x, piece) => x + piece.ByteLength),
      };
    }
Exemplo n.º 19
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDirectoryEntriesMultipleRequest)typedRequest;

            var projectPath = new FullPath(request.ProjectPath);
            var project     = _snapshotManager.CurrentSnapshot.ProjectRoots
                              .FirstOrDefault(x => x.Project.RootPath.Equals(projectPath));

            return(new GetDirectoryEntriesMultipleResponse {
                DirectoryEntries = request.RelativePathList
                                   .Select(relativePath => MapDirectoryEntry(project, relativePath))
                                   .ToList()
            });
        }
Exemplo n.º 20
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDatabaseStatisticsRequest)typedRequest;

            var snapshot = _processor.GetCurrentSnapshot();
            var database = _searchEngine.CurrentFileDatabase;

            return(new GetDatabaseStatisticsResponse {
                ProjectCount = snapshot.ProjectRoots.Count,
                FileCount = database.FileNames.Count,
                IndexedFileCount = database.SearchableFileCount,
                IndexedFileSize = database.FileContentsPieces.Aggregate(0L, (x, piece) => x + piece.ByteLength),
            });
        }
Exemplo n.º 21
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDatabaseDetailsRequest)typedRequest;

            request.MaxFilesByExtensionDetailsCount = Math.Min(request.MaxFilesByExtensionDetailsCount, int.MaxValue);
            request.MaxLargeFilesDetailsCount       = Math.Min(request.MaxLargeFilesDetailsCount, int.MaxValue);

            var snapshot = _snapshotManager.CurrentSnapshot;
            var database = _searchEngine.CurrentFileDatabaseSnapshot;

            return(new GetDatabaseDetailsResponse {
                Projects = CreateProjectsDetails(request, snapshot, database).ToList()
            });
        }
Exemplo n.º 22
0
 public override TypedResponse Process(TypedRequest typedRequest) {
   var request = (SearchCodeRequest)typedRequest;
   var result = _searchEngine.SearchCode(request.SearchParams);
   var searchResults = FileSystemNameFactoryExtensions.ToFlatSearchResult(
     _fileSystemNameFactory,
     result.Entries,
     searchResult => searchResult.FileName,
     searchResult => new FilePositionsData { Positions = searchResult.Spans });
   return new SearchCodeResponse {
     SearchResults = searchResults,
     HitCount = result.HitCount,
     TotalFileCount = result.TotalFileCount,
     SearchedFileCount = result.SearchedFileCount
   };
 }
    public override TypedResponse Process(TypedRequest typedRequest) {
      var request = (GetDirectoryStatisticsRequest)typedRequest;

      //var directoryname = FileSystemNameFactoryExtensions.GetProjectFileName(_fileSystemNameFactory, _projectDiscovery, path);
      //if (filename == null)
      //  return Enumerable.Empty<FileExtract>();

      //TODO(rpaquay)
      return new GetDirectoryStatisticsResponse {
        DirectoryCount = 0,
        FileCount =  0,
        IndexedFileCount = 0,
        TotalIndexedFileSize = 0
      };
    }
Exemplo n.º 24
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetDirectoryStatisticsRequest)typedRequest;

            //var directoryname = FileSystemNameFactoryExtensions.GetProjectFileName(_fileSystemNameFactory, _projectDiscovery, path);
            //if (filename == null)
            //  return Enumerable.Empty<FileExtract>();

            //TODO(rpaquay)
            return(new GetDirectoryStatisticsResponse {
                DirectoryCount = 0,
                FileCount = 0,
                IndexedFileCount = 0,
                TotalIndexedFileSize = 0
            });
        }
Exemplo n.º 25
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request       = (SearchCodeRequest)typedRequest;
            var result        = _searchEngine.SearchCode(request.SearchParams);
            var searchResults = FileSystemNameFactoryExtensions.ToFlatSearchResult(
                _fileSystemNameFactory,
                result.Entries,
                searchResult => searchResult.FileName,
                searchResult => new FilePositionsData {
                Positions = searchResult.Spans
            });

            return(new SearchCodeResponse {
                SearchResults = searchResults,
                HitCount = result.HitCount,
                TotalFileCount = result.TotalFileCount,
                SearchedFileCount = result.SearchedFileCount
            });
        }
Exemplo n.º 26
0
        public override TypedResponse Process(TypedRequest typedRequest)
        {
            var request = (GetProjectDetailsRequest)typedRequest;

            request.MaxFilesByExtensionDetailsCount = Math.Min(request.MaxFilesByExtensionDetailsCount, int.MaxValue);
            request.MaxLargeFilesDetailsCount       = Math.Min(request.MaxLargeFilesDetailsCount, int.MaxValue);

            var projectPath        = new FullPath(request.ProjectPath);
            var fileSystemSnapshot = _snapshotManager.CurrentSnapshot;
            var projectSnapshot    = fileSystemSnapshot.ProjectRoots.FirstOrDefault(x => x.Project.RootPath.Equals(projectPath));

            if (projectSnapshot == null)
            {
                throw new RecoverableErrorException($"Project \"{request.ProjectPath}\" not found");
            }

            var database = _searchEngine.CurrentFileDatabaseSnapshot;

            return(new GetProjectDetailsResponse {
                ProjectDetails = CreateProjectDetails(database, projectSnapshot, request.MaxFilesByExtensionDetailsCount,
                                                      request.MaxLargeFilesDetailsCount)
            });
        }
Exemplo n.º 27
0
        public void RunAsyncWorker(TypedRequest request, Action <TypedResponse> successCallback,
                                   Action <ErrorResponse> errorCallback, long sequenceNumber, Action <BufferedResponse> processResponse)
        {
            var sw = Stopwatch.StartNew();

            var ipcRequest = new IpcRequest {
                RequestId = _ipcRequestIdFactory.GetNextId(),
                Protocol  = IpcProtocols.TypedMessage,
                Data      = request
            };

            _serverProcessProxy.RunAsync(ipcRequest, ipcResponse => {
                var response = new BufferedResponse {
                    SequenceNumber  = sequenceNumber,
                    IpcRequest      = ipcRequest,
                    IpcResponse     = ipcResponse,
                    SuccessCallback = successCallback,
                    ErrorCallback   = errorCallback,
                    Elapsed         = sw.Elapsed
                };
                processResponse(response);
            });
        }
 public override TypedResponse Process(TypedRequest typedRequest) {
   _processor.Refresh();
   return new RefreshFileSystemTreeResponse();
 }
Exemplo n.º 29
0
 public abstract TypedResponse Process(TypedRequest typedRequest);
 public override TypedResponse Process(TypedRequest typedRequest)
 {
     _indexingServer.Pause();
     return(new PauseResumeIndexingResponse());
 }
 public override TypedResponse Process(TypedRequest typedRequest)
 {
     _fileRegistrationTracker.Refresh();
     return(new RefreshFileSystemTreeResponse());
 }
Exemplo n.º 32
0
        public bool CanProcess(TypedRequest request)
        {
            var name = GetType().Name;

            return((request.GetType().Name + "Handler") == name);
        }
 public bool CanProcess(TypedRequest request) {
   var name = GetType().Name;
   return (request.GetType().Name + "Handler") == name;
 }
 public abstract TypedResponse Process(TypedRequest typedRequest);
Exemplo n.º 35
0
 public void RunUnbufferedAsync(TypedRequest request, Action <TypedResponse> successCallback, Action <ErrorResponse> errorCallback)
 {
     RunAsyncWorker(request, successCallback, errorCallback, -1, SendResponse);
 }
Exemplo n.º 36
0
 public override TypedResponse Process(TypedRequest typedRequest)
 {
     return(new GetFileSystemResponse {
         Tree = _snapshotManager.CurrentSnapshot.ToIpcFileSystemTree()
     });
 }
Exemplo n.º 37
0
 public override TypedResponse Process(TypedRequest typedRequest)
 {
     return(new GetFileSystemResponse {
         Tree = _processor.GetCurrentSnapshot().ToIpcFileSystemTree()
     });
 }
 public override TypedResponse Process(TypedRequest typedRequest)
 {
     _processor.Refresh();
     return(new RefreshFileSystemTreeResponse());
 }
 public override TypedResponse Process(TypedRequest typedRequest) {
   return new GetFileSystemResponse {
     Tree = _processor.GetCurrentSnapshot().ToIpcFileSystemTree()
   };
 }