kodi
XbtManager.h
1 /*
2  * Copyright (C) 2015-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "guilib/XBTFReader.h"
12 #include "threads/CriticalSection.h"
13 
14 #include <map>
15 #include <memory>
16 #include <string>
17 #include <vector>
18 
19 class CURL;
20 class CXBTFFile;
21 
22 namespace XFILE
23 {
25 {
26 public:
27  ~CXbtManager();
28 
29  static CXbtManager& GetInstance();
30 
31  bool HasFiles(const CURL& path) const;
32  bool GetFiles(const CURL& path, std::vector<CXBTFFile>& files) const;
33 
34  bool GetReader(const CURL& path, CXBTFReaderPtr& reader) const;
35 
36  void Release(const CURL& path);
37 
38 private:
39  CXbtManager();
40  CXbtManager(const CXbtManager&) = delete;
41  CXbtManager& operator=(const CXbtManager&) = delete;
42 
43  struct XBTFReader
44  {
45  CXBTFReaderPtr reader;
46  time_t lastModification;
47  };
48  using XBTFReaders = std::map<std::string, XBTFReader>;
49 
50  XBTFReaders::iterator GetReader(const CURL& path) const;
51  XBTFReaders::iterator GetReader(const std::string& path) const;
52  void RemoveReader(XBTFReaders::iterator readerIterator) const;
53  XBTFReaders::const_iterator ProcessFile(const CURL& path) const;
54 
55  static std::string NormalizePath(const CURL& path);
56 
57  mutable XBTFReaders m_readers;
58  mutable CCriticalSection m_lock;
59 };
60 }
Definition: Scraper.h:41
Definition: URL.h:21
Definition: XbtManager.h:24
Definition: XBTF.h:64