00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef SYNCHRONIZATION_LAB_OBJECT_FACTORY_H_ 00004 #define SYNCHRONIZATION_LAB_OBJECT_FACTORY_H_ 00005 00006 #include <fesa-core/Synchronization/SynchronizationFactory.h> 00007 00008 namespace fesa 00009 { 00010 00011 class MultiplexingContext; 00012 00018 class SynchronizationLabObjectFactory : public SynchronizationFactory 00019 { 00020 public: 00021 00027 static SynchronizationLabObjectFactory* getInstance(); 00028 00033 void releaseInstance(); 00034 00042 MultiplexingContext* createTimingContext(int64_t cycleTimeStamp,const std::string& cycleName); 00043 00044 00045 00053 CycleDescriptor* createOrGetEventCycleDescriptor(const std::string& timingDomain, const std::string& timingCriterion); 00054 00055 protected: 00056 00063 CycleDescriptor* createCycleDescriptorLab(const std::string& timingDomain, const std::string& timingCriterion); 00064 00065 00070 SynchronizationLabObjectFactory(); 00071 00076 virtual ~SynchronizationLabObjectFactory(); 00077 00081 static SynchronizationLabObjectFactory* instance_; 00082 }; 00083 00084 } // fesa 00085 00086 #endif // SYNCHRONIZATION_LAB_OBJECT_FACTORY_H_