Ejemplo n.º 1
0
class ConfigStore(object):
    def __init__(self):
        self._config_store = CreateObject("IviConfigServer.IviConfigStore",
                            interface=gen.IVICONFIGSERVERLib.\
                                                        IIviConfigStore)
        self._config_store.Deserialize(self._config_store.MasterLocation)
        self.software_modules = dict()
        for index in range(self._config_store.SoftwareModules.count):
            self.software_modules[self._config_store.SoftwareModules[index+1].Name]\
             = SoftwareModule(self._config_store.SoftwareModules[index+1])
        self._sessions = dict()
        for index in range(self._config_store.Sessions.count):
            self._sessions[self._config_store.Sessions[index+1].Name]\
             = Session(self._config_store.Sessions[index+1])
        self._logical_names = dict()
        for index in range(self._config_store.LogicalNames.count):
            self._logical_names[self._config_store.LogicalNames[index+1].Name]\
             = LogicalName(self._config_store.LogicalNames[index+1])

    def _add_required_sessions(self):
        for soft_mod_name, soft_mod in self.software_modules.items():
            required_name = 'pyivi_' + soft_mod_name
            if required_name not in self._logical_names.keys():
                new_log_name = CreateObject(
                    "IviConfigServer.IviLogicalName",
                    interface=gen.IVICONFIGSERVERLib.IIviLogicalName)
                new_log_name.Name = required_name
                if required_name not in self._sessions.keys():
                    new_session = CreateObject(
                        "IviConfigServer.IviDriverSession")
                    new_session.QueryInterface(
                        gen.IVICONFIGSERVERLib.IIviDriverSession)
                    new_session.Name = required_name
                    new_session.SoftwareModule = soft_mod._soft_mod
                    self._add_session(new_session)
                else:
                    new_session = self._sessions[required_name]._session
                new_log_name.Session = new_session
                self._add_logical_name(new_log_name)
        self._config_store.Serialize(self._config_store.MasterLocation)

    def _add_logical_name(self, log_name):
        self._config_store.LogicalNames.Add(log_name)

    def _add_session(self, session):
        self._config_store.Sessions.Add(session)