Vuo  2.3.2
VuoModuleCompilationQueue.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include <mutex>
13 #include <condition_variable>
14 #include "VuoFileUtilities.hh"
15 
28 {
29 public:
33  class Item
34  {
35  public:
36  Item();
37  string moduleKey;
38  string sourcePath;
39  string sourceCode;
43  dispatch_group_t loadingGroup;
44  pair<int, int> priority;
45 
46  bool hasHigherPriority(Item *other);
47  };
48 
50  void enqueue(Item *item);
51  Item * next();
52  void completed(Item *item);
53 
54 private:
55  Item * ripeItem(map<string, list< pair<Item *, bool> > >::iterator iter);
56  bool& ripeItemIsCompiling(map<string, list< pair<Item *, bool> > >::iterator iter);
57  void pluckRipeItem(map<string, list< pair<Item *, bool> > >::iterator iter);
58 
65  map<string, list< pair<Item *, bool> > > queue;
66 
67  std::mutex queueMutex;
68  std::condition_variable queueChanged;
69 
70  static const int maxConcurrentCompilations;
71 };