def generateWorkers(self, workers):
        #Force Load WorkerDB
        #dbWorker = WorkerDB.WorkerDB(host = self.config['database']['host'], user = self.config['database']['user'], password = self.config['database']['password'])

        #TODO: Relative Location of imports
        """Loads all workers and puts them into a dictionary"""
        port = 7880 #TCP port used
        for worker in workers:
            workerModule = __import__(worker)
            workerModule.__dict__.update({"port" : port})
            mod = getattr(workerModule, worker)
            x = mod()
            x.connect(port)
            
            wbind = self.context.socket(zmq.PUSH)
            bindLocation = wbind.bind("tcp://127.0.0.1:7881")  
            
          
            
            self.workers[worker] = {"worker" : x, "port" : port, "bind" : bindLocation}
            
            
            port = port + 1

        Logger.log(self.name, "All workers generated")
    def __init__(self, configFile):
        self.name = "Engine"
        self.context = zmq.Context()
        
        #Get all configuration details to pass off to workers
        try:
            stream = file(configFile, 'r') 
        except IOError:
            Logger.log(self.name, "Unable to find configuration, exiting.")
            exit()
            
        self.config = yaml.load(stream)
        
        self.directoryCreator = DirectoryCreator.DirectoryCreator(self.config['location'])

        #Create all workers
        self.workers = {}
        self.generateWorkers(self.config['workers'])
    
        #Wait for experiment to start
        self.run()
 def userChange(self, char_value, **kw):
     """Get the user_epn when a change over has occured, 
     this will create a new DB for the user, create directory structure
     and clear out all workers"""
     Logger.log(self.name, "User change over initiated")
     self.clear() #Clear engine, and all workers
     user = self.getUser(char_value) #get new user
     self.user = user
     Logger.log(self.name, "NEW USER: "******"Folder Structure Created")