VR-Forces 4.6.1 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 "vrfutil/rwString.h"
16 #include "vrfutil/readerWriter.h"
17 #include "vrfplan/stmtIndex.h"
18 #include <vl/hostStructs.h>
19 #include "vrfutil/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;
340  virtual void setIsComplete(bool completeFlag = true);
341 
344  virtual bool isAbandoned() const;
347  virtual void setIsAbandoned(bool v);
348 
350  virtual bool isExecuting() const;
351 
353  virtual DtPlanStatus currentStatus() const;
354 
356  virtual void reset();
357 
362  virtual void abandonPlan(bool sendWaitTask);
363 
367  virtual void restartPlan(bool sendWaitTask = true);
368 
373  virtual bool translateIndex(DtStmtIndex& stmtIndex) const;
374 
378  virtual void translateIndices(DtList& stmtIndexList) const;
379 
381  virtual void tick();
382 
386  virtual void mergeEditedPlanWith(const DtPlan& oldPlan);
387 
390  virtual DtRecursiveSimBlockIterator* spawnRecursiveIterator() const;
391 
395  virtual void putSelf(std::string& fp, int indentLevel = 0,
396  bool writeUnspecified = false, const DtFilename& path = DtReaderWriter::appPath());
397 
401  virtual void getSelf(DtlObjPtr args,
404 
407  virtual void addStatementChangedCallback(
408  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
409 
411  virtual void removeStatementChangedCallback(
412  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
413 
415  virtual void reissueStatementIds(DtSimStatement* stmt);
416 
418  virtual void pushExecutingTrigger(int);
419  virtual void popExecutingTrigger();
420  virtual int executingTriggerStatementId() const;
421 
423  virtual std::vector<int> executingTriggerStatementIds() const;
424 
426  virtual DtUUID executingTriggerName() const;
427 
429  virtual std::vector<DtUUID> executingTriggerNames() const;
430 
432  virtual std::vector<DtUUID> registeredTriggerNames() const;
433 
435  virtual bool triggerIsRunning(const DtUUID&) const;
436 
438  virtual bool triggerIsRegistered(const DtUUID&) const;
439 
441  virtual void removeScheduledTriggers(const DtUUID&);
442 
444  virtual void mapRegisteredTriggersToTriggerStatements();
445 
448  virtual DtSimStatement* lookupStatementByCursor(int cursor);
449  virtual DtSimStatement* lookupStatementByStatementId(int) const;
450 
452  virtual void setContinuePlan(bool);
453 
458  virtual std::vector<DtReaderWriter*> substituteVariablesIn(DtReaderWriter*) const;
459 
461  virtual std::vector<DtReaderWriter*> substitutedValues(const DtReaderWriter*) const;
462 
464  virtual bool subsituteUUIDIfAvailable(const DtReaderWriter*, DtUUID& uuid) const;
465 
466 protected:
467 
469  virtual void processAwaitingTask();
470 
473  virtual void createMainBlock();
474 
478  virtual void copyMainBlock(const DtPlan& otherPlan);
479 
483  virtual void copyAndTranslateExecutionStack(const DtPlan& otherPlan);
484 
488  virtual void copyAndTranslateTriggers(const DtPlan& otherPlan);
489 
492  virtual void curStmtChanged();
493 
496  virtual void continuePlan();
497 
504  virtual void stepStatement(bool forceStep = false);
505 
509  virtual void executeStatement();
510 
513  virtual void clearTriggerList();
514 
518  virtual void clearExecutionStack();
519 
521  virtual void emtpyExecutionStack();
522 
524 
525 
526  virtual void mapExecutionStackToRwExecutionStack(DtRwPlanExecutionStack& rwExecutionStack);
527  virtual void mapPendingTriggersToPendingTriggerDataList();
529 
531 
532 
533  virtual void mapOldExecutionCursorStackToExecutionStack(const DtRwIntegerList& executionCursorStack);
535  virtual void mapRwExecutionStackToExecutionStack(const DtRwPlanExecutionStack& rwExecutionStack);
536  virtual void mapPendingTriggerDataToPendingTriggers();
538 
541  virtual int statementIdToCursor(DtStmtIdType statementId);
542  virtual DtStmtIdType cursorToStatementId(int cursor);
543 
544  virtual DtSimStatement* lookupStatementByStatementId(DtSimBlock*, int, std::set<DtUUID>& triggersVisited) const;
545 
547  virtual void createTriggersFromWhenBlocks();
548  virtual void createTriggersFromWhenBlocks(DtSimBlock*);
549  virtual void createTriggersFromWhenBlocks(DtSimBlock*, DtSimStatement*);
550 
552  virtual void removeTriggerRegistrationFrom(DtSimBlock*, const DtUUID&);
553  virtual void removeTriggerRegistrationFrom(DtSimBlock*, DtSimStatement*, const DtUUID&);
554 
556  virtual void mapExecutionStackToExecutingTriggers();
557 
558 protected:
559 
566 
570 
576 
580 
584 
587 
590  //DtList myStatementChangedCbs;
591 
595 
598 
602 
607 
610 
612 
614 
616 
619 
625 
627 
629 };
630 
631 namespace DtBufferSerialize
632 {
635  DT_DLL_vrfplan int getSize(const DtPlan& contentPtr);
636 
640  DT_DLL_vrfplan char *encode(const DtPlan& adminContentPtr, char *buffer);
641 
645  DT_DLL_vrfplan const char *decode(DtPlan& adminContentPtr, const char *buffer);
646 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)