コード例 #1
0
        private void RebuildDictionary()
        {
            Logger.Info("Rebuilding share path index");

            var allShare = _share.Items().ToList();

            lock (_pathIndex)
            {
                _pathIndex.Clear();

                foreach (var contentItem in allShare)
                {
                    // http://192.168.11.11/share2/data/Eskadron_gusar_letuchih/01.avi

                    var path = contentItem.SystemPath;

                    foreach (var basePath in _basePaths)
                    {
                        if (path.StartsWith(basePath))
                        {
                            path = path.Substring(basePath.Length);
                        }
                    }

                    // hyper operates with windows style path separators
                    path = Uri.UnescapeDataString(path.Replace("/", "\\"));


                    if (!_pathIndex.ContainsKey(path))
                    {
                        _pathIndex.Add(path, contentItem.Magnet.TTH);
                    }
                    else
                    {
                        Logger.Error($"Duplicate path entry detected {path} {contentItem.Magnet.TTH} {(_pathIndex[path])}");
                    }
                }
            }
            Logger.Info("Rebuilding share path index done");
        }