Conscience Core
CscSequencesProcessor.h
Go to the documentation of this file.
1 #ifndef CscSequencesProcessor_H_
2 #define CscSequencesProcessor_H_
3 
9 
11 
12 using namespace conscience_core::simulator;
13 using namespace conscience_utils::logging;
14 
16 public:
17  CscSequencesProcessor(const string &worldEntityId, CscEnvironmentSimulator *simulator, const bool entitySimulated);
18 
20 
21  void sequenceTic();
22  CscSequence *getSequence();
23  bool isSequenceProcessed();
24  void addSequenceInQueue(CscSequence *sequence);
25  void deleteFirstSequenceFromBuffer();
26  void deleteLastSequenceFromBuffer();
27  int getSequenceProcessingIndex();
28 
33  optional<vector<const CscPoint3d *>> getCurrentPositionsOfSequence(unsigned long long **outSequenceId = nullptr);
34  void setSequenceProcessingIndex(int index);
38  void breakSequence();
39  void resumeSequence();
40  void terminateSequence();
41 
46  void clearSequences(size_t keepLastCount = 0);
47 
48 private:
49  std::unique_ptr<CscLogger> logger = CscLogger::getForCategory("CssSequenceProcessor");
50  void setSequence(CscSequence *sequence);
51  void checkAndUpdateSequenceBuffer();
52 
53  void selectStrategyBySequenceType();
54 
55  mutex strategyMutex;
56 
57  const string worldEntityId;
58  CscEnvironmentSimulator *simulator = nullptr;
59  const bool entitySimulated;
60  vector<CscSequence *> sequenceBuffer;
61  CscAbstractSequenceProcessingStrategy *currentSequenceProcessingStrategy = nullptr;
62 
63  CscSequence *currentSequence = nullptr;
64 
65  int currentSequenceIndex = 0;
66  unsigned long long currentSequenceId = 0;
71  inline void safeStrategyAction(function<void()> action);
72 };
73 }
74 
75 #endif
conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy
Definition: CscAbstractSequenceProcessingStrategy.h:14
conscience_core::sequences_processor
Definition: CscEntityReflexion.h:46
CscIdleSequenceProcessingStrategy.h
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
CscAbstractSequenceProcessingStrategy.h
CscSequence.h
conscience_utils::logging
Definition: conscience_log.cpp:20
conscience_utils::logging::CscLogger::getForCategory
static unique_ptr< CscLogger > getForCategory(string category)
Definition: conscience_log.cpp:119
jwt::alphabet::index
uint32_t index(const std::array< char, 64 > &alphabet, char symbol)
Definition: base.h:91
conscience_core::sequences_processor::CscSequencesProcessor
Definition: CscSequencesProcessor.h:15
CscEnvironmentSimulator.h
conscience_core::simulator
Definition: CscPhysicsSimulator.cpp:92
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
CscSequencePositionStrategy.h
CscSequence
Definition: CscSequence.h:51