#!/usr/bin/env python # # Implementation for experiment session controller. # import time from dm.common.objects.experiment import Experiment from dm.common.objects.dmObjectManager import DmObjectManager from dm.common.exceptions.invalidRequest import InvalidRequest from dm.ds_web_service.api.dsRestApiFactory import DsRestApiFactory from fileSystemObserver import FileSystemObserver class ExperimentSessionControllerImpl(DmObjectManager): """ Experiment session controller implementation class. """ def __init__(self): DmObjectManager.__init__(self) self.experimentDict = {} def startDaq(self, name, dataDirectory): FileSystemObserver.getInstance().startObservingPath(dataDirectory) startTime = time.time() experiment = Experiment({'name' : name, 'dataDirectory' : dataDirectory, 'daqStartTime' : startTime}) self.experimentDict[name] = experiment return experiment def stopDaq(self, name): experiment = self.experimentDict.get(name) if experiment is None or experiment.get('daqEndTime') is not None: raise InvalidRequest('Experiment %s is not active.' % name) dataDirectory = experiment.get('dataDirectory') FileSystemObserver.getInstance().stopObservingPath(dataDirectory) experiment['daqEndTime'] = time.time() return experiment