Guitar
CommitDetailGetter.h
Go to the documentation of this file.
1 #ifndef COMMITDETAILGETTER_H
2 #define COMMITDETAILGETTER_H
3 
4 #include "Git.h"
5 #include <QObject>
6 #include <condition_variable>
7 #include <memory>
8 #include <mutex>
9 #include <thread>
10 #include <map>
11 
12 class CommitDetailGetter : public QObject {
13  Q_OBJECT
14 public:
15  struct Data {
16  char sign_verify = 0;
17  };
18 private:
19  std::mutex mutex_;
20  std::condition_variable condition_;
21  std::vector<std::thread> threads_;
22  bool interrupted_ = false;
23 
25 
26  struct Request {
27  bool done = false;
28  bool busy = false;
31 
32  operator bool () const
33  {
34  return done;
35  }
36  };
37  std::vector<Request> requests_;
38  std::map<Git::CommitID, Data> cache_;
39 public:
40  CommitDetailGetter() = default;
41  virtual ~CommitDetailGetter();
42  void start(GitPtr git);
43  void stop();
44  Data query(const Git::CommitID &id, bool request_if_not_found, bool lock);
45 signals:
46  void ready();
47 };
48 
49 #endif // COMMITDETAILGETTER_H
GitPtr
std::shared_ptr< Git > GitPtr
Definition: Git.h:38
CommitDetailGetter::Data::sign_verify
char sign_verify
Definition: CommitDetailGetter.h:16
CommitDetailGetter::stop
void stop()
CommitDetailGetter::stop.
Definition: CommitDetailGetter.cpp:84
CommitDetailGetter::Request
Definition: CommitDetailGetter.h:26
CommitDetailGetter::ready
void ready()
CommitDetailGetter::Request::data
Data data
Definition: CommitDetailGetter.h:30
Git::CommitItem::sign
struct Git::CommitItem::@4 sign
CommitDetailGetter::threads_
std::vector< std::thread > threads_
Definition: CommitDetailGetter.h:21
CommitDetailGetter::requests_
std::vector< Request > requests_
Definition: CommitDetailGetter.h:37
CommitDetailGetter::condition_
std::condition_variable condition_
Definition: CommitDetailGetter.h:20
CommitDetailGetter::Data
Definition: CommitDetailGetter.h:15
CommitDetailGetter::cache_
std::map< Git::CommitID, Data > cache_
Definition: CommitDetailGetter.h:38
CommitDetailGetter::start
void start(GitPtr git)
CommitDetailGetter::start.
Definition: CommitDetailGetter.cpp:15
CommitDetailGetter::query
Data query(const Git::CommitID &id, bool request_if_not_found, bool lock)
CommitDetailGetter::query.
Definition: CommitDetailGetter.cpp:112
CommitDetailGetter::~CommitDetailGetter
virtual ~CommitDetailGetter()
Definition: CommitDetailGetter.cpp:4
Git::CommitID
Definition: Git.h:42
CommitDetailGetter::CommitDetailGetter
CommitDetailGetter()=default
CommitDetailGetter::interrupted_
bool interrupted_
Definition: CommitDetailGetter.h:22
CommitDetailGetter::mutex_
std::mutex mutex_
Definition: CommitDetailGetter.h:19
Git.h
global
ApplicationGlobal * global
Definition: main.cpp:33
Git::CommitItem
Definition: Git.h:109
Git::CommitItem::verify
char verify
Definition: Git.h:120
CommitDetailGetter.h
ApplicationGlobal::appsettings
ApplicationSettings appsettings
Definition: ApplicationGlobal.h:51
ApplicationSettings::maximum_number_of_commit_item_acquisitions
int maximum_number_of_commit_item_acquisitions
Definition: main.h:30
ApplicationGlobal.h
CommitDetailGetter::Request::done
bool done
Definition: CommitDetailGetter.h:27
CommitDetailGetter::git_
GitPtr git_
Definition: CommitDetailGetter.h:24
CommitDetailGetter::Request::busy
bool busy
Definition: CommitDetailGetter.h:28
CommitDetailGetter
Definition: CommitDetailGetter.h:12
CommitDetailGetter::Request::id
Git::CommitID id
Definition: CommitDetailGetter.h:29