Vuo  2.0.0
VuoRuntimeState.hh
Go to the documentation of this file.
1 
10 #pragma once
11 
13 #include "VuoCompositionState.h"
14 
20 {
21 private:
22  bool _isPaused;
23  bool hasBeenUnpaused;
24  bool _isStopped;
25  bool wasStopCompositionCalled;
26  bool continueIfRunnerDies;
27 
28  pid_t runnerPid;
29 
30  int terminationDisabledCount;
31  dispatch_queue_t terminationDisabledQueue;
32 
33  dispatch_queue_t stopQueue;
34 
35  dispatch_source_t waitForStopTimer;
36  dispatch_semaphore_t waitForStopCanceledSemaphore;
37 
39 
42  typedef void (*vuoSetupType)(void);
43  vuoSetupType vuoSetup;
44  typedef void (*vuoCleanupType)(void);
45  vuoCleanupType vuoCleanup;
46  typedef void (*vuoInstanceInitType)(void);
47  vuoInstanceInitType vuoInstanceInit;
48  typedef void (*vuoInstanceFiniType)(void);
49  vuoInstanceFiniType vuoInstanceFini;
50  typedef void (*vuoInstanceTriggerStartType)(void);
51  vuoInstanceTriggerStartType vuoInstanceTriggerStart;
52  typedef void (*vuoInstanceTriggerStopType)(void);
53  vuoInstanceTriggerStopType vuoInstanceTriggerStop;
55 
56  bool mayBeTerminated(void);
57  void stopComposition(bool isBeingReplaced, int timeoutInSeconds);
58  void killProcessAfterTimeout(int timeoutInSeconds);
59 
60 public:
62 
63  VuoRuntimeState(void);
64  ~VuoRuntimeState(void);
65  void init(void *zmqContext, const char *controlUrl, const char *telemetryUrl, bool isPaused,
66  pid_t runnerPid, int runnerPipe, bool continueIfRunnerDies, const char *workingDirectory, void *compositionBinaryHandle);
67  void fini(void);
68  void updateCompositionSymbols(void *compositionBinaryHandle);
69  bool isPaused(void);
70  bool isStopped(void);
71  pid_t getRunnerPid(void);
72  void disableTermination(void);
73  void enableTermination(void);
74 
75  void startComposition(void);
76  void pauseComposition(void);
77  void unpauseComposition(void);
78  void stopCompositionAsOrderedByRunner(bool isBeingReplaced, int timeoutInSeconds, bool isLastEverInProcess);
80  void breakOutOfEventLoop(void);
81 };
82 
83 extern "C"
84 {
85 bool vuoIsPaused(VuoCompositionState *compositionState);
86 }