public void Clear()
        {
            var finalPath = FilePathSanitizer.AssureTrailingPathSlash(_dropFolder);

            foreach (var file in Directory.EnumerateFiles(finalPath, "*.idx"))
            {
                File.SetAttributes(file, FileAttributes.Normal);
                File.SetAttributes(GetInfoFileName(file), FileAttributes.Normal);

                File.Delete(file);
                File.Delete(GetInfoFileName(file));
            }
        }
        public void MarkAsIndex(string fileId)
        {
            var finalPath = FilePathSanitizer.CreateCleanlyJoinedFilePath(_dropFolder,
                                                                          fileId + ".idx");

            if (!File.Exists(finalPath))
            {
                throw new FileNotFoundException(fileId);
            }


            File.SetAttributes(finalPath, FileAttributes.ReadOnly);
        }
        public IEnumerable <TextIndexingRequest> GetReadyFiles()
        {
            var finalPath = FilePathSanitizer.AssureTrailingPathSlash(_dropFolder);

            foreach (var file in Directory.EnumerateFiles(finalPath, "*.idx"))
            {
                // the index file is marked as indexed by the cache consumer
                if ((File.GetAttributes(file) & FileAttributes.ReadOnly) != 0)
                {
                    continue;
                }

                var infoFile = GetInfoFileName(file);
                if (!File.Exists(infoFile))
                {
                    continue;
                }

                // the info file needs to be marked as readonly to make sure
                // the index file is ready
                if ((File.GetAttributes(infoFile) & FileAttributes.ReadOnly) == 0)
                {
                    continue;
                }

                var info = XDocument.Load(infoFile);
                var ret  = new TextIndexingRequest(
                    info.Root.Attribute("LSI").Value,
                    info.Root.Attribute("RSI").Value,
                    info.Root.Attribute("FriendlyName").Value,
                    info.ToString().GetHashCode().ToString(),
                    new IndexingRequestDetails(CultureInfo.InvariantCulture,
                                               Encoding.Unicode,
                                               info.Root.Attribute("OriginalMimeType").Value,
                                               string.Empty,
                                               string.Empty),
                    p => File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)
                    );
                yield return(ret);
            }
        }