VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
29 #include <set>
30 
31 class DtStatement;
32 class DtSimTask;
33 class DtSetDataRequest;
35 class DtSimTrigger;
36 class DtSimBlock;
37 class DtSimCommand;
38 class DtPlanBlock;
39 class DtTriggerBlock;
40 class DtSimMessage;
43 class DtPlanExecutor;
44 class DtSimCondExpr;
46 class DtRwPlanVariable;
47 
50 {
51 public:
52  DtPlanStatus();
53  bool operator==(const DtPlanStatus& orig) const;
54  bool operator!=(const DtPlanStatus& orig) const;
55 
56  std::vector<int> executingTriggerStatementIds;
57  std::vector<DtUUID> executingTriggerNames;
58  std::vector<DtUUID> registeredTriggerNames;
60  bool isComplete;
63 };
64 
66  (const DtPlan& plan, void* usr);
67 
68 typedef void (*DtPlanCallbackFcn)
69  (const DtUUID& name, const std::vector<DtSimStatement*>& statements, bool append,
70  void* usr);
71 
72 typedef void (*DtPlanStatementCallbackFcn)
73  (const DtUUID& name, DtPlanStatus planStatus, void* usr);
74 
75 typedef void (*DtPlanCompleteCallbackFcn)
76  (const DtUUID& name, void* usr);
77 
79  (DtIfMultiplePlanResponse*, void* usr);
80 
90 {
91 public:
93  {
94  None = 0,
95  IsQuickLaunch = 0x00000001,
96  ShowOnQuickLaunchToolbar = 0x00000002,
97  Launched = 0x00000004
98  };
99 
106  DtPlan();
107 
113  DtPlan(const DtUUID& planName,
114  DtPlanExecutor* planExecutor,
115  const DtString& name = "Plan",
116  DtReaderWriterRegistry* parentRegistry = NULL);
117 
121 
125  DtPlan(const DtString& name, const DtUUID& planName,
126  const DtPlan& orig, DtReaderWriterRegistry* parentRegistry = NULL);
127 
129  virtual ~DtPlan();
130 
132  virtual void init();
133 
135  virtual void addVariables();
136 
139  virtual DtPlan* clone(const DtString& name,
140  const DtUUID& planName,
141  DtReaderWriterRegistry* parentRegistry = NULL) const;
142 
147  DtPlan& operator=(const DtPlan& orig);
148 
150  virtual bool operator==(const DtPlan& orig) const;
151 
152  virtual const DtUUID& planName() const;
153  virtual void setPlanName(const DtUUID& name);
154  virtual bool planNameSpecified() const;
155 
160  virtual void setIsQuickLaunch(bool);
161  virtual bool isQuickLaunch() const;
162 
164  virtual void setShowOnQuickLaunchToolbar(bool);
165  virtual bool showOnQuickLaunchToolbar() const;
166 
170  virtual void setIsLaunched(bool);
171  virtual bool isLaunched() const;
172 
174  virtual void setQuickLaunchIcon(const DtString&);
175  virtual const DtString& quickLaunchIcon() const;
176 
178  virtual void setOrdinal(int);
179  virtual int ordinal() const;
180 
182  //virtual DtSimManager* simManager() const;
183 
184  virtual void setPlanExecutor(DtPlanExecutor* planExecutor);
185  virtual DtPlanExecutor* planExecutor() const;
186 
189  virtual void enableExecutionState();
190  virtual void disableExecutionState();
191  virtual bool executionState() const;
192 
195  virtual void awaitingTask();
196 
198  virtual bool isAwatingTask() const;
199 
201  virtual void addTrigger(const DtTriggerStmt&);
202 
204  virtual DtTriggerStmt* triggerStatement(const DtUUID&) const;
205 
208  virtual void removeTrigger(const DtUUID&);
209 
211  virtual void renameTrigger(const DtUUID&, const DtString& newName);
212 
214  virtual void updateTrigger(const DtTriggerStmt*);
215 
217  virtual void setTriggers(const DtRwTriggersList&);
218 
220  const DtRwTriggersList& triggers() const { return myTriggers; };
221 
227  virtual void pushExecutionStack();
228 
231  virtual void suspendExecutionStack();
232 
240  virtual void popExecutionStack(bool forceStep = false);
241 
244  virtual void executeTrigger(DtTriggerBlock* whenBlock);
245 
247  virtual void executeBlock(DtSimBlock* block);
248 
250  virtual bool taskRequestPending() const;
251 
253  virtual void setTaskRequestPending(bool newValue = true);
254 
256  const DtRwVariableBindings& variables() const { return myPlanVariables; };
257 
258  virtual DtReaderWriter* variable(const DtString&);
259 
262  virtual void clearVariables();
263 
265  virtual void addVariable(DtRwPlanVariable*);
266 
268  virtual void setVariables(const DtRwVariableBindings&);
269 
273  virtual bool executeTask(const DtSimTask& taskToSend) const;
274 
278  virtual bool executeSetDataRequest(
279  const DtSetDataRequest& setToSend) const;
280 
284  virtual bool executeSimCommand(const DtSimCommand& command) const;
285 
288  virtual bool evaluateConditional(const DtSimCondExpr* condExpr) const;
289 
291  virtual DtStmtIndex firstStmt() const;
292 
294  virtual DtPlanBlock* mainBlock() const;
295 
297  virtual void empty();
298 
300  virtual bool isEmpty() const;
301 
303  virtual DtList* triggerList();
304  virtual const DtList* triggerList() const;
305 
307  virtual void addTriggerToExecute(DtSimTrigger* trigger);
309  virtual void removeTriggerFromPendingExecution(DtSimTrigger* trigger);
310 
312  virtual DtList* executionStack();
313  virtual const DtList* executionStack() const;
314 
317  virtual bool validatePlan();
318 
322  virtual const DtStmtIndex& currentStmt() const;
324  virtual void setCurrentStmt(const DtStmtIndex& nextStatement);
325 
327  virtual void setCurrentStatementExecutionId(int id);
328 
330  virtual bool isComplete() const;
333  virtual void setIsComplete(bool completeFlag = true);
334 
337  virtual bool isAbandoned() const;
340  virtual void setIsAbandoned(bool v);
341 
343  virtual bool isExecuting() const;
344 
346  virtual DtPlanStatus currentStatus() const;
347 
349  virtual void reset();
350 
355  virtual void abandonPlan(bool sendWaitTask);
356 
360  virtual void restartPlan(bool sendWaitTask = true);
361 
366  virtual bool translateIndex(DtStmtIndex& stmtIndex) const;
367 
371  virtual void translateIndices(DtList& stmtIndexList) const;
372 
374  virtual void tick();
375 
379  virtual void mergeEditedPlanWith(const DtPlan& oldPlan);
380 
383  virtual DtRecursiveSimBlockIterator* spawnRecursiveIterator() const;
384 
388  virtual void putSelf(std::string& fp, int indentLevel = 0,
389  bool writeUnspecified = false, const DtFilename& path = DtReaderWriter::appPath());
390 
394  virtual void getSelf(DtlObjPtr args,
397 
400  virtual void addStatementChangedCallback(
401  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
402 
404  virtual void removeStatementChangedCallback(
405  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
406 
408  virtual void reissueStatementIds(DtSimStatement* stmt);
409 
411  virtual void pushExecutingTrigger(int);
412  virtual void popExecutingTrigger();
413  virtual int executingTriggerStatementId() const;
414 
416  virtual std::vector<int> executingTriggerStatementIds() const;
417 
419  virtual DtUUID executingTriggerName() const;
420 
422  virtual std::vector<DtUUID> executingTriggerNames() const;
423 
425  virtual std::vector<DtUUID> registeredTriggerNames() const;
426 
428  virtual bool triggerIsRunning(const DtUUID&) const;
429 
431  virtual bool triggerIsRegistered(const DtUUID&) const;
432 
434  virtual void removeScheduledTriggers(const DtUUID&);
435 
437  virtual void mapRegisteredTriggersToTriggerStatements();
438 
441  virtual DtSimStatement* lookupStatementByCursor(int cursor);
442  virtual DtSimStatement* lookupStatementByStatementId(int) const;
443 
445  virtual void setContinuePlan(bool);
446 
451  virtual std::vector<DtReaderWriter*> substituteVariablesIn(DtReaderWriter*) const;
452 
454  virtual std::vector<DtReaderWriter*> substitutedValues(const DtReaderWriter*) const;
455 
457  virtual bool subsituteUUIDIfAvailable(const DtReaderWriter*, DtUUID& uuid) const;
458 
459 protected:
460 
462  virtual void processAwaitingTask();
463 
466  virtual void createMainBlock();
467 
471  virtual void copyMainBlock(const DtPlan& otherPlan);
472 
476  virtual void copyAndTranslateExecutionStack(const DtPlan& otherPlan);
477 
481  virtual void copyAndTranslateTriggers(const DtPlan& otherPlan);
482 
485  virtual void curStmtChanged();
486 
489  virtual void continuePlan();
490 
497  virtual void stepStatement(bool forceStep = false);
498 
502  virtual void executeStatement();
503 
506  virtual void clearTriggerList();
507 
511  virtual void clearExecutionStack();
512 
514  virtual void emtpyExecutionStack();
515 
517 
518 
519  virtual void mapExecutionStackToRwExecutionStack(DtRwPlanExecutionStack& rwExecutionStack);
520  virtual void mapPendingTriggersToPendingTriggerDataList();
522 
524 
525 
526  virtual void mapOldExecutionCursorStackToExecutionStack(const DtRwIntegerList& executionCursorStack);
528  virtual void mapRwExecutionStackToExecutionStack(const DtRwPlanExecutionStack& rwExecutionStack);
529  virtual void mapPendingTriggerDataToPendingTriggers();
531 
534  virtual int statementIdToCursor(DtStmtIdType statementId);
535  virtual DtStmtIdType cursorToStatementId(int cursor);
536 
537  virtual DtSimStatement* lookupStatementByStatementId(DtSimBlock*, int, std::set<DtUUID>& triggersVisited) const;
538 
540  virtual void createTriggersFromWhenBlocks();
541  virtual void createTriggersFromWhenBlocks(DtSimBlock*);
542  virtual void createTriggersFromWhenBlocks(DtSimBlock*, DtSimStatement*);
543 
545  virtual void removeTriggerRegistrationFrom(DtSimBlock*, const DtUUID&);
546  virtual void removeTriggerRegistrationFrom(DtSimBlock*, DtSimStatement*, const DtUUID&);
547 
549  virtual void mapExecutionStackToExecutingTriggers();
550 
551 protected:
552 
559 
563 
569 
573 
577 
580 
583  //DtList myStatementChangedCbs;
584 
588 
591 
595 
600 
603 
605 
607 
609 
612 
618 
620 
622 };
623 
624 namespace DtBufferSerialize
625 {
628  DT_DLL_vrfplan int getSize(const DtPlan& contentPtr);
629 
633  DT_DLL_vrfplan char *encode(const DtPlan& adminContentPtr, char *buffer);
634 
638  DT_DLL_vrfplan const char *decode(DtPlan& adminContentPtr, const char *buffer);
639 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)