VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
plan.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 class DtPlan;
12 
13 #include <vlutil/vlString.h>
14 #include <vlutil/vlList.h>
15 #include <readerWriter/rwString.h>
17 #include "vrfplan/stmtIndex.h"
18 #include <vl/hostStructs.h>
19 #include <readerWriter/rwBoolean.h>
20 #include "vrfutil/rwIntegerList.h"
21 #include "vrfplan/rwTriggersList.h"
26 #include "vrfplan/vrfplanDefines.h"
27 #include "vrfutil/rwUUID.h"
28 #include "vrfplan/simCommandStmt.h"
29 
30 #include <set>
31 
32 class DtStatement;
33 class DtSimTask;
34 class DtSetDataRequest;
36 class DtSimTrigger;
37 class DtSimBlock;
38 class DtSimCommand;
39 class DtPlanBlock;
40 class DtTriggerBlock;
41 class DtSimMessage;
44 class DtPlanExecutor;
45 class DtSimCondExpr;
47 class DtRwPlanVariable;
48 
51 {
52 public:
53  DtPlanStatus();
54  bool operator==(const DtPlanStatus& orig) const;
55  bool operator!=(const DtPlanStatus& orig) const;
56 
57  std::vector<int> executingTriggerStatementIds;
58  std::vector<DtUUID> executingTriggerNames;
59  std::vector<DtUUID> registeredTriggerNames;
61  bool isComplete;
64 };
65 
67  (const DtPlan& plan, void* usr);
68 
69 typedef void (*DtPlanCallbackFcn)
70  (const DtUUID& name, const std::vector<DtSimStatement*>& statements, bool append,
71  void* usr);
72 
73 typedef void (*DtPlanStatementCallbackFcn)
74  (const DtUUID& name, DtPlanStatus planStatus, void* usr);
75 
76 typedef void (*DtPlanCompleteCallbackFcn)
77  (const DtUUID& name, void* usr);
78 
80  (DtIfMultiplePlanResponse*, void* usr);
81 
91 {
92 public:
94  {
95  None = 0,
96  IsQuickLaunch = 0x00000001,
97  ShowOnQuickLaunchToolbar = 0x00000002,
98  Launched = 0x00000004
99  };
100 
107  DtPlan();
108 
114  DtPlan(const DtUUID& planName,
115  DtPlanExecutor* planExecutor,
116  const DtString& name = "Plan",
117  DtReaderWriterRegistry* parentRegistry = NULL);
118 
122 
126  DtPlan(const DtString& name, const DtUUID& planName,
127  const DtPlan& orig, DtReaderWriterRegistry* parentRegistry = NULL);
128 
130  virtual ~DtPlan();
131 
133  virtual void init();
134 
136  virtual void addVariables();
137 
140  virtual DtPlan* clone(const DtString& name,
141  const DtUUID& planName,
142  DtReaderWriterRegistry* parentRegistry = NULL) const;
143 
148  DtPlan& operator=(const DtPlan& orig);
149 
151  virtual bool operator==(const DtPlan& orig) const;
152 
153  virtual const DtUUID& planName() const;
154  virtual void setPlanName(const DtUUID& name);
155  virtual bool planNameSpecified() const;
156 
161  virtual void setIsQuickLaunch(bool);
162  virtual bool isQuickLaunch() const;
163 
165  virtual void setShowOnQuickLaunchToolbar(bool);
166  virtual bool showOnQuickLaunchToolbar() const;
167 
171  virtual void setIsLaunched(bool);
172  virtual bool isLaunched() const;
173 
175  virtual void setQuickLaunchIcon(const DtString&);
176  virtual const DtString& quickLaunchIcon() const;
177 
179  virtual void setOrdinal(int);
180  virtual int ordinal() const;
181 
183  //virtual DtSimManager* simManager() const;
184 
185  virtual void setPlanExecutor(DtPlanExecutor* planExecutor);
186  virtual DtPlanExecutor* planExecutor() const;
187 
190  virtual void enableExecutionState();
191  virtual void disableExecutionState();
192  virtual bool executionState() const;
193 
196  virtual void awaitingTask();
197 
199  virtual bool isAwatingTask() const;
200 
202  virtual void addTrigger(const DtTriggerStmt&);
203 
205  virtual DtTriggerStmt* triggerStatement(const DtUUID&) const;
206 
209  virtual void removeTrigger(const DtUUID&);
210 
212  virtual void renameTrigger(const DtUUID&, const DtString& newName);
213 
215  virtual void updateTrigger(const DtTriggerStmt*);
216 
218  virtual void setTriggers(const DtRwTriggersList&);
219 
221  const DtRwTriggersList& triggers() const { return myTriggers; };
222 
228  virtual void pushExecutionStack();
229 
232  virtual void suspendExecutionStack();
233 
241  virtual void popExecutionStack(bool forceStep = false);
242 
245  virtual void executeTrigger(DtTriggerBlock* whenBlock);
246 
248  virtual void executeBlock(DtSimBlock* block);
249 
251  virtual bool taskRequestPending() const;
252 
254  virtual void setTaskRequestPending(bool newValue = true);
255 
257  const DtRwVariableBindings& variables() const { return myPlanVariables; };
258 
259  virtual DtReaderWriter* variable(const DtString&);
260 
263  virtual void clearVariables();
264 
266  virtual void addVariable(DtRwPlanVariable*);
267 
269  virtual void setVariables(const DtRwVariableBindings&);
270 
274  virtual bool executeTask(const DtSimTask& taskToSend) const;
275 
279  virtual bool executeSetDataRequest(
280  const DtSetDataRequest& setToSend) const;
281 
287  virtual bool executeSimCommand(const DtSimCommand& command, DtSimCommandContextPtr& context) const;
288 
291  virtual bool isSimCommandComplete(const DtSimCommand& command, const DtSimCommandContextPtr& context) const;
292 
295  virtual bool evaluateConditional(const DtSimCondExpr* condExpr) const;
296 
298  virtual DtStmtIndex firstStmt() const;
299 
301  virtual DtPlanBlock* mainBlock() const;
302 
304  virtual void empty();
305 
307  virtual bool isEmpty() const;
308 
310  virtual DtList* triggerList();
311  virtual const DtList* triggerList() const;
312 
314  virtual void addTriggerToExecute(DtSimTrigger* trigger);
316  virtual void removeTriggerFromPendingExecution(DtSimTrigger* trigger);
317 
319  virtual DtList* executionStack();
320  virtual const DtList* executionStack() const;
321 
324  virtual bool validatePlan();
325 
329  virtual const DtStmtIndex& currentStmt() const;
331  virtual void setCurrentStmt(const DtStmtIndex& nextStatement);
332 
334  virtual void setCurrentStatementExecutionId(int id);
335 
337  virtual bool isComplete() const;
338 
341  virtual void setIsComplete(bool completeFlag = true);
342 
345  virtual void setLastStatementExecuted(bool);
346  virtual bool lastStatementExecuted() const;
348 
351  virtual bool isAbandoned() const;
354  virtual void setIsAbandoned(bool v);
355 
357  virtual bool isExecuting() const;
358 
360  virtual DtPlanStatus currentStatus() const;
361 
363  virtual void reset();
364 
369  virtual void abandonPlan(bool sendWaitTask);
370 
374  virtual void restartPlan(bool sendWaitTask = true);
375 
380  virtual bool translateIndex(DtStmtIndex& stmtIndex) const;
381 
385  virtual void translateIndices(DtList& stmtIndexList) const;
386 
388  virtual void tick();
389 
393  virtual void mergeEditedPlanWith(const DtPlan& oldPlan);
394 
397  virtual DtRecursiveSimBlockIterator* spawnRecursiveIterator() const;
398 
402  virtual void putSelf(std::string& fp, int indentLevel = 0,
403  bool writeUnspecified = false, const DtFilename& path = DtReaderWriter::appPath());
404 
408  virtual void getSelf(DtlObjPtr args,
411 
414  virtual void addStatementChangedCallback(
415  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
416 
418  virtual void removeStatementChangedCallback(
419  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
420 
422  virtual void reissueStatementIds(DtSimStatement* stmt);
423 
425  virtual void pushExecutingTrigger(int);
426  virtual void popExecutingTrigger();
427  virtual int executingTriggerStatementId() const;
428 
430  virtual std::vector<int> executingTriggerStatementIds() const;
431 
433  virtual DtUUID executingTriggerName() const;
434 
436  virtual std::vector<DtUUID> executingTriggerNames() const;
437 
439  virtual std::vector<DtUUID> registeredTriggerNames() const;
440 
442  virtual bool triggerIsRunning(const DtUUID&) const;
443 
445  virtual bool triggerIsRegistered(const DtUUID&) const;
446 
448  virtual void removeScheduledTriggers(const DtUUID&);
449 
451  virtual void mapRegisteredTriggersToTriggerStatements();
452 
455  virtual DtSimStatement* lookupStatementByCursor(int cursor);
456  virtual DtSimStatement* lookupStatementByStatementId(int) const;
457 
459  virtual void setContinuePlan(bool);
460 
465  virtual std::vector<DtReaderWriter*> substituteVariablesIn(DtReaderWriter*) const;
466 
468  virtual std::vector<DtReaderWriter*> substitutedValues(const DtReaderWriter*) const;
469 
471  virtual bool subsituteUUIDIfAvailable(const DtReaderWriter*, DtUUID& uuid) const;
472 
473 protected:
474 
476  virtual void processAwaitingTask();
477 
480  virtual void createMainBlock();
481 
485  virtual void copyMainBlock(const DtPlan& otherPlan);
486 
490  virtual void copyAndTranslateExecutionStack(const DtPlan& otherPlan);
491 
495  virtual void copyAndTranslateTriggers(const DtPlan& otherPlan);
496 
499  virtual void curStmtChanged();
500 
503  virtual void continuePlan();
504 
511  virtual void stepStatement(bool forceStep = false);
512 
516  virtual void executeStatement();
517 
520  virtual void clearTriggerList();
521 
525  virtual void clearExecutionStack();
526 
528  virtual void emtpyExecutionStack();
529 
531 
532 
533  virtual void mapExecutionStackToRwExecutionStack(DtRwPlanExecutionStack& rwExecutionStack);
534  virtual void mapPendingTriggersToPendingTriggerDataList();
536 
538 
539 
540  virtual void mapOldExecutionCursorStackToExecutionStack(const DtRwIntegerList& executionCursorStack);
542  virtual void mapRwExecutionStackToExecutionStack(const DtRwPlanExecutionStack& rwExecutionStack);
543  virtual void mapPendingTriggerDataToPendingTriggers();
545 
548  virtual int statementIdToCursor(DtStmtIdType statementId);
549  virtual DtStmtIdType cursorToStatementId(int cursor);
550 
551  virtual DtSimStatement* lookupStatementByStatementId(DtSimBlock*, int, std::set<DtUUID>& triggersVisited) const;
552 
554  virtual void createTriggersFromWhenBlocks();
555  virtual void createTriggersFromWhenBlocks(DtSimBlock*);
556  virtual void createTriggersFromWhenBlocks(DtSimBlock*, DtSimStatement*);
557 
559  virtual void removeTriggerRegistrationFrom(DtSimBlock*, const DtUUID&);
560  virtual void removeTriggerRegistrationFrom(DtSimBlock*, DtSimStatement*, const DtUUID&);
561 
563  virtual void mapExecutionStackToExecutingTriggers();
564 
565 protected:
566 
573 
577 
583 
587 
591 
595 
598 
601  //DtList myStatementChangedCbs;
602 
606 
609 
613 
618 
621 
623 
625 
627 
630 
636 
638 
640 };
641 
642 namespace DtBufferSerialize
643 {
646  DT_DLL_vrfplan int getSize(const DtPlan& contentPtr);
647 
651  DT_DLL_vrfplan char *encode(const DtPlan& adminContentPtr, char *buffer);
652 
656  DT_DLL_vrfplan const char *decode(DtPlan& adminContentPtr, const char *buffer);
657 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)