11#include <condition_variable>
14class GitOperationQueue
20 void Enqueue(
const GitOperationRequest& request);
21 void PollResults(std::vector<GitOperationResult>& outResults);
23 bool IsRunning()
const {
return mRunning.load(); }
24 bool HasPendingOps()
const;
26 const GitProgressEvent& GetCurrentProgress()
const {
return mCurrentProgress; }
30 void ExecuteOperation(
const GitOperationRequest& request);
31 std::vector<std::string> BuildCommandArgs(
const GitOperationRequest& request)
const;
33 std::thread mWorkerThread;
34 std::atomic_bool mRunning{
false};
35 std::atomic_bool mExecuting{
false};
37 std::mutex mQueueMutex;
38 std::condition_variable mQueueCV;
39 std::deque<GitOperationRequest> mPendingRequests;
41 std::mutex mResultMutex;
42 std::deque<GitOperationResult> mResults;
44 GitProgressEvent mCurrentProgress;