e1da713440119577901daaf956a858b70008ebd1d0d93b88e802a8d7498201272770810750aae4fa54de4e05e43a71d8eccd64b318a57786d273e6a26de747 971 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef WATCHMAN_H
  2. #define WATCHMAN_H
  3. #include "../Backend.hh"
  4. #include "./BSER.hh"
  5. #include "../Signal.hh"
  6. #include "./IPC.hh"
  7. class WatchmanBackend : public Backend {
  8. public:
  9. static bool checkAvailable();
  10. void start() override;
  11. WatchmanBackend() : mStopped(false) {};
  12. ~WatchmanBackend();
  13. void writeSnapshot(WatcherRef watcher, std::string *snapshotPath) override;
  14. void getEventsSince(WatcherRef watcher, std::string *snapshotPath) override;
  15. void subscribe(WatcherRef watcher) override;
  16. void unsubscribe(WatcherRef watcher) override;
  17. private:
  18. std::unique_ptr<IPC> mIPC;
  19. Signal mRequestSignal;
  20. Signal mResponseSignal;
  21. BSER::Object mResponse;
  22. std::string mError;
  23. std::unordered_map<std::string, WatcherRef> mSubscriptions;
  24. bool mStopped;
  25. Signal mEndedSignal;
  26. std::string clock(WatcherRef watcher);
  27. void watchmanWatch(std::string dir);
  28. BSER::Object watchmanRequest(BSER cmd);
  29. void handleSubscription(BSER::Object obj);
  30. };
  31. #endif