/src/lib/ContentDatabase/ContentDatabase.h

https://github.com/u-voelkel/fuppes · C Header · 96 lines · 63 code · 24 blank · 9 comment · 0 complexity · b6a42d9f6291a0f59044c14617b28d3f MD5 · raw file

  1. /*
  2. * This file is part of fuppes
  3. *
  4. * (c) 2013 Ulrich Völkel <u-voelkel@users.sourceforge.net>
  5. *
  6. * For the full copyright and license information, please view the COPYING
  7. * file that was distributed with this source code.
  8. */
  9. #ifndef _CONTENTDATABASE_CONTENTDATABASE_H
  10. #define _CONTENTDATABASE_CONTENTDATABASE_H
  11. #ifdef HAVE_CONFIG_H
  12. #include <config.h>
  13. #endif
  14. #include "Configuration.h"
  15. #include "FileDetails.h"
  16. #include "ScanDirectoryThread.h"
  17. #include "UpdateThread.h"
  18. #include "RemoveMissingThread.h"
  19. #include "../Fam/Monitor.h"
  20. #include "../Fam/EventHandler.h"
  21. #include "../Database/ObjectManager.h"
  22. namespace ContentDatabase
  23. {
  24. class ContentDatabase: public Fam::EventHandler
  25. {
  26. public:
  27. enum Status
  28. {
  29. Idle,
  30. Stopped,
  31. RemoveMissing,
  32. ScanDirectories,
  33. UpdateMetadata
  34. };
  35. static object_id_t getObjectId();
  36. static uint32_t getSystemUpdateId();
  37. ContentDatabase(Configuration& configuration, CFileDetails& fileDetails, Plugin::Manager& pluginManager, VirtualContainer::Manager& virtualContainerMgr);
  38. ~ContentDatabase();
  39. void init();
  40. void insertDirectory(const std::string path, const std::string name, const object_id_t parentId, Database::ObjectManager& objMgr);
  41. void insertFile(const std::string path, const std::string name, const object_id_t parentId, Database::ObjectManager& objMgr);
  42. void onScanDirectoryThreadFinished(const bool stopped);
  43. void onUpdateThreadFinished(const bool stopped);
  44. void onRemoveMissingThreadFinished(const bool stopped);
  45. ContentDatabase::Status getStatus()
  46. {
  47. return m_status;
  48. }
  49. void rebuild();
  50. void update();
  51. //void onFamEvent(Fam::Event& event);
  52. void onDirectoryCreateEvent(const std::string path, const std::string name);
  53. void onDirectoryDeleteEvent(const std::string path);
  54. void onDirectoryMoveEvent(const std::string oldpath, const std::string oldname, const std::string path, const std::string name);
  55. void onFileCreateEvent(const std::string path, const std::string name);
  56. void onFileDeleteEvent(const std::string path, const std::string name);
  57. void onFileMoveEvent(const std::string oldpath, const std::string oldname, const std::string path, const std::string name);
  58. void onFileModifiedEvent(const std::string path, const std::string name);
  59. private:
  60. static object_id_t m_objectId;
  61. static uint32_t m_systemUpdateId;
  62. Configuration& m_configuration;
  63. CFileDetails& m_fileDetails;
  64. VirtualContainer::Manager& m_virtualContainerMgr;
  65. ScanDirectoryThread m_scanDirectoryThread;
  66. UpdateThread m_updateThread;
  67. RemoveMissingThread m_removeMissingThread;
  68. ContentDatabase::Status m_status;
  69. Fam::Monitor* m_fam;
  70. };
  71. }
  72. #endif // _CONTENTDATABASE_CONTENTDATABASE_H