|
11 | 11 | // C++ Standard Library
|
12 | 12 | #include <condition_variable>
|
13 | 13 | #include <functional>
|
14 |
| -#include <iostream> |
15 | 14 | #include <mutex>
|
16 |
| -#include <string> |
17 | 15 | #include <thread>
|
18 | 16 | // Standard Template Library
|
19 | 17 | #include <queue>
|
20 | 18 | #include <utility>
|
21 | 19 | #include <vector>
|
22 |
| -// EasyContact Header Files |
23 |
| -#include <EasyContact/SingleUser.hpp> |
24 | 20 | class DispatchQueue {
|
25 |
| - typedef std::function<void(void)> Functor; |
| 21 | + using Functor = std::function<void(void)>; |
26 | 22 |
|
27 | 23 | private:
|
| 24 | + bool inServices; |
28 | 25 | size_t JobID;
|
29 | 26 | std::mutex Lock;
|
30 | 27 | std::vector<std::thread> Threads;
|
31 | 28 | std::queue<Functor> Queue;
|
32 | 29 | std::condition_variable CV;
|
33 |
| - bool inServices = true; |
| 30 | + |
| 31 | + protected: |
34 | 32 | void Dispatch_Hander(void);
|
35 | 33 |
|
36 | 34 | public:
|
| 35 | + /** |
| 36 | + * Default Class Constructor |
| 37 | + * @param NumThreads : Number of Threads to Create |
| 38 | + */ |
37 | 39 | explicit DispatchQueue(const size_t& NumThreads);
|
| 40 | + /** |
| 41 | + * Default Class Destructor |
| 42 | + */ |
38 | 43 | ~DispatchQueue();
|
| 44 | + /** |
| 45 | + * Add Task to Dispatch Queue |
| 46 | + * @param Operation : Task Expressed in Lambda Expression |
| 47 | + * @return std::pair<size_t, size_t> : Your Task ID, Number of Tasks Before |
| 48 | + * Your Task |
| 49 | + */ |
39 | 50 | std::pair<size_t, size_t> Dispatch(const Functor& Operation);
|
| 51 | + /** |
| 52 | + * Add Task to Dispatch Queue |
| 53 | + * @param Operation : Task Expressed in Lambda Expression |
| 54 | + * @return std::pair<size_t, size_t> : Your Task ID, Number of Tasks Before |
| 55 | + * Your Task |
| 56 | + */ |
40 | 57 | std::pair<size_t, size_t> Dispatch(Functor&& Operation);
|
| 58 | + |
| 59 | + public: |
| 60 | + /** |
| 61 | + * This Funtion Call Is Not Allowed & |
| 62 | + * Will Delete Left Hand Side Instance |
| 63 | + * @param RHS : Another Instance of Current Class |
| 64 | + */ |
41 | 65 | DispatchQueue(const DispatchQueue& RHS) = delete;
|
| 66 | + /** |
| 67 | + * This Funtion Call Is Not Allowed & |
| 68 | + * Will Delete Left Hand Side Instance |
| 69 | + * @param RHS : Another Instance of Current Class |
| 70 | + * @return DispatchQueue : Reference to SELF |
| 71 | + */ |
42 | 72 | DispatchQueue& operator=(const DispatchQueue& RHS) = delete;
|
| 73 | + /** |
| 74 | + * This Funtion Call Is Not Allowed & |
| 75 | + * Will Delete Left Hand Side Instance |
| 76 | + * @param RHS : Another Instance of Current Class |
| 77 | + */ |
43 | 78 | DispatchQueue(DispatchQueue&& RHS) = delete;
|
| 79 | + /** |
| 80 | + * This Funtion Call Is Not Allowed & |
| 81 | + * Will Delete Left Hand Side Instance |
| 82 | + * @param RHS : Another Instance of Current Class |
| 83 | + * @return DispatchQueue : Reference to SELF |
| 84 | + */ |
44 | 85 | DispatchQueue& operator=(DispatchQueue&& RHS) = delete;
|
45 | 86 | };
|
46 | 87 | #endif // BACKEND_INCLUDE_EASYCONTACT_DISPATCHQUEUE_HPP_
|
0 commit comments