Vuo  2.3.2
VuoNodeSynchronization.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include <mutex>
13 #include "VuoCompositionState.h"
14 #include "VuoRuntimeContext.hh"
15 
20 {
21 public:
22  void lockNodes(VuoCompositionState *compositionState, unsigned long *nodeIndices, unsigned long nodeCount, unsigned long eventId);
23  void lockNode(VuoCompositionState *compositionState, unsigned long nodeIndex, unsigned long eventId);
24  void unlockNodes(VuoCompositionState *compositionState, unsigned long *nodeIndices, unsigned long nodeCount);
25  void unlockNode(VuoCompositionState *compositionState, unsigned long nodeIndex);
26 
27 private:
28  void recordWaiting(VuoCompositionState *compositionState, unsigned long eventId, unsigned long nodeIndex);
29  void recordLocked(VuoCompositionState *compositionState, unsigned long eventId, unsigned long nodeIndex);
30  void recordUnlocked(VuoCompositionState *compositionState, unsigned long eventId, unsigned long nodeIndex);
31  void print(void);
32 
34 
37  map<string, map<unsigned long, vector<unsigned long>>> statusLocked;
38  map<string, map<unsigned long, vector<unsigned long>>> statusWaiting;
39  std::mutex statusMutex;
41 };
42 
43 extern "C"
44 {
45 void vuoLockNodes(VuoCompositionState *compositionState, unsigned long *nodeIndices, unsigned long nodeCount, unsigned long eventId);
46 void vuoLockNode(VuoCompositionState *compositionState, unsigned long nodeIndex, unsigned long eventId);
47 void vuoUnlockNodes(VuoCompositionState *compositionState, unsigned long *nodeIndices, unsigned long nodeCount);
48 void vuoUnlockNode(VuoCompositionState *compositionState, unsigned long nodeIndex);
49 }