VR-Forces 4.3 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) 1999 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: plan.h,v $ $Revision: 1.50 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DtPlan_H_
13 #define DtPlan_H_
14 
15 class DtPlan;
16 
17 #include <vlutil/vlString.h>
18 #include <vlutil/vlList.h>
19 #include "vrfutil/rwString.h"
20 #include "vrfutil/readerWriter.h"
21 #include "vrfplan/stmtIndex.h"
22 #include <vl/hostStructs.h>
23 #include "vrfutil/rwBoolean.h"
24 #include "vrfutil/rwIntegerList.h"
28 #include "vrfplan/vrfplanDefines.h"
29 
30 class DtStatement;
31 class DtSimTask;
32 class DtSetDataRequest;
34 class DtSimTrigger;
35 class DtSimBlock;
36 class DtSimCommand;
37 class DtPlanBlock;
38 class DtWhenBlock;
39 class DtSimMessage;
42 class DtPlanExecutor;
43 class DtSimCondExpr;
45 
48 {
49 public:
50  DtPlanStatus();
51  bool operator==(const DtPlanStatus& orig) const;
52  bool operator!=(const DtPlanStatus& orig) const;
53 
54 
56  bool isComplete;
59 };
60 
62  (const DtPlan& plan, void* usr);
63 
64 typedef void (*DtPlanCallbackFcn)
65  (const DtString& name, const DtList& statements, bool append,
66  void* usr);
67 
68 typedef void (*DtPlanStatementCallbackFcn)
69  (const DtString& name, DtPlanStatus planStatus, void* usr);
70 
71 typedef void (*DtPlanCompleteCallbackFcn)
72  (const DtString& name, void* usr);
73 
75  (DtIfMultiplePlanResponse*, void* usr);
76 
86 {
87 public:
88 
95  DtPlan();
96 
102  DtPlan(const DtString& planName,
103  DtPlanExecutor* planExecutor,
104  const DtString& name = "Plan",
105  DtReaderWriterRegistry* parentRegistry = NULL);
106 
110 
114  DtPlan(const DtString& name, const DtString& planName,
115  const DtPlan& orig, DtReaderWriterRegistry* parentRegistry = NULL);
116 
118  virtual ~DtPlan();
119 
121  virtual void init();
122 
125  virtual DtPlan* clone(const DtString& name,
126  const DtString& planName,
127  DtReaderWriterRegistry* parentRegistry = NULL) const;
128 
133  DtPlan& operator=(const DtPlan& orig);
134 
136  virtual bool operator==(const DtPlan& orig) const;
137 
138  virtual DtString planName() const;
139  virtual void setPlanName(const DtString& name);
140 
142  virtual const DtString& objectName() const;
143  virtual void setObjectName(const DtString& objectName);
145  virtual bool objectNameSpecified() const;
146 
148  //virtual DtSimManager* simManager() const;
149 
150  virtual void setPlanExecutor(DtPlanExecutor* planExecutor);
151  virtual DtPlanExecutor* planExecutor() const;
152 
155  virtual void enableExecutionState();
156  virtual void disableExecutionState();
157  virtual bool executionState() const;
158 
161  virtual void awaitingTask();
162 
164  virtual bool isAwatingTask() const;
165 
171  virtual void pushExecutionStack();
172 
180  virtual void popExecutionStack(bool forceStep = false);
181 
184  virtual void executeTrigger(DtWhenBlock* whenBlock);
185 
187  virtual void executeBlock(DtSimBlock* block);
188 
190  virtual bool taskRequestPending() const;
191 
193  virtual void setTaskRequestPending(bool newValue = true);
194 
198  virtual bool executeTask(const DtSimTask& taskToSend) const;
199 
203  virtual bool executeSetDataRequest(
204  const DtSetDataRequest& setToSend) const;
205 
209  virtual bool executeSimCommand(const DtSimCommand& command) const;
210 
213  virtual bool evaluateConditional(const DtSimCondExpr* condExpr) const;
214 
216  virtual DtStmtIndex firstStmt() const;
217 
219  virtual DtPlanBlock* mainBlock() const;
220 
222  virtual bool isEmpty() const;
223 
225  virtual DtList* triggerList();
226  virtual const DtList* triggerList() const;
227 
229  virtual void addTrigger(DtSimTrigger* trigger);
231  virtual void removeTrigger(DtSimTrigger* trigger);
232 
234  virtual DtList* executionStack();
235  virtual const DtList* executionStack() const;
236 
239  virtual bool validatePlan();
240 
244  virtual const DtStmtIndex& currentStmt() const;
246  virtual void setCurrentStmt(const DtStmtIndex& nextStatement);
247 
249  virtual void setCurrentStatementExecutionId(int id);
250 
252  virtual bool isComplete() const;
255  virtual void setIsComplete(bool completeFlag = true);
256 
259  virtual bool isAbandoned() const;
262  virtual void setIsAbandoned(bool v);
263 
265  virtual bool isExecuting() const;
266 
268  virtual DtPlanStatus currentStatus() const;
269 
271  virtual void reset();
272 
277  virtual void abandonPlan(bool sendWaitTask);
278 
282  virtual void restartPlan(bool sendWaitTask = true);
283 
288  virtual bool translateIndex(DtStmtIndex& stmtIndex) const;
289 
293  virtual void translateIndices(DtList& stmtIndexList) const;
294 
296  virtual void tick();
297 
301  virtual void mergeEditedPlanWith(const DtPlan& oldPlan);
302 
305  virtual DtRecursiveSimBlockIterator* spawnRecursiveIterator() const;
306 
310  virtual void putSelf(FILE *fp, int indentLevel = 0,
311  bool writeUnspecified = false, const DtFilename& path = DtReaderWriter::appPath());
312 
316  virtual void getSelf(DtlObjPtr args,
319 
322  virtual void addStatementChangedCallback(
323  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
324 
326  virtual void removeStatementChangedCallback(
327  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
328 
329 protected:
330 
332  virtual void processAwaitingTask();
333 
336  virtual void createMainBlock();
337 
341  virtual void copyMainBlock(const DtPlan& otherPlan);
342 
346  virtual void copyAndTranslateExecutionStack(const DtPlan& otherPlan);
347 
351  virtual void copyAndTranslateTriggers(const DtPlan& otherPlan);
352 
355  virtual void curStmtChanged();
356 
359  virtual void continuePlan();
360 
364  virtual void stepStatement();
365 
369  virtual void executeStatement();
370 
373  virtual void clearTriggerList();
374 
378  virtual void clearExecutionStack();
379 
381  virtual void emtpyExecutionStack();
382 
384 
385 
386  virtual void mapExecutionStackToRwExecutionStack(DtRwPlanExecutionStack& rwExecutionStack);
387  virtual void mapPendingTriggersToPendingTriggerDataList();
389 
391 
392 
393  virtual void mapOldExecutionCursorStackToExecutionStack(const DtRwIntegerList& executionCursorStack);
395  virtual void mapRwExecutionStackToExecutionStack(const DtRwPlanExecutionStack& rwExecutionStack);
396  virtual void mapPendingTriggerDataToPendingTriggers();
398 
401  virtual int statementIdToCursor(DtStmtIdType statementId);
402  virtual DtStmtIdType cursorToStatementId(int cursor);
403 
406  virtual DtSimStatement* lookupStatementByCursor(int cursor);
407 
408 protected:
409 
416 
420 
426 
430 
434 
437 
440  //DtList myStatementChangedCbs;
441 
445 
448 
452 
455 
457 
459 
461 
464 };
465 
466 namespace DtBufferSerialize
467 {
470  DT_DLL_vrfplan int getSize(const DtPlan& contentPtr);
471 
475  DT_DLL_vrfplan char *encode(const DtPlan& adminContentPtr, char *buffer);
476 
481  DT_DLL_vrfplan const char *decode(DtPlan& adminContentPtr, const char *buffer);
482 }
483 
484 
485 #endif
486 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)