SynchronizationFactory.h
Go to the documentation of this file.00001
00002
00003 #ifndef SYNCHRONIZATION_FACTORY_H_
00004 #define SYNCHRONIZATION_FACTORY_H_
00005
00006 #include <string>
00007 #include <vector>
00008 #include <map>
00009
00010 #include <stdint.h>
00011
00012 namespace fesa
00013 {
00014
00015 class AbstractMultiplexingManager;
00016 class CycleDescriptor;
00017
00018 class SynchronizationFactory
00019 {
00020 public:
00021
00029 AbstractMultiplexingManager* createMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion);
00030
00037 AbstractMultiplexingManager* createSharedMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion);
00038
00046 AbstractMultiplexingManager* createRollingMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion, int32_t depth);
00047
00056 AbstractMultiplexingManager* createRollingSharedMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion, int32_t depth);
00057
00058
00059
00067 AbstractMultiplexingManager* createExtendedMultiplexingManager(AbstractMultiplexingManager* baseMultiplexingManager,
00068 std::vector<std::string>& extraCriterionCol);
00069
00076 CycleDescriptor* getCycleDescriptor(const std::string& timingDomain, const std::string& timingCriterion);
00077
00083 CycleDescriptor* getCycleDescriptor(const std::string& cycleSelector);
00084
00088 virtual ~SynchronizationFactory();
00089
00090 protected:
00097 CycleDescriptor* createCycleDescriptor(const std::string& timingDomain, const std::string& multiplexingCriterion);
00098
00099 private:
00100
00108 virtual CycleDescriptor* createCycleDescriptorLab(const std::string& timingDomain, const std::string& multiplexingCriterion) = 0;
00109
00110
00114 std::map<std::string, CycleDescriptor*> cycleDescriptorCol_;
00115
00116 };
00117
00118 }
00119
00120 #endif // SYNCHRONIZATION_FACTORY_H_