def run(self):
        """ The agent process """
        try:
            # Start the configuration request
            confThread = ConfPullThread(_settings, self.mmsAgent)
            confThread.setName('ConfPullThread')
            confThread.start()

            hostStateMonitorThread = MonitorHostState(self.logger,
                                                      self.mmsAgent)
            hostStateMonitorThread.setName('MonitorHostState')
            hostStateMonitorThread.start()

            # Loop through and send data back to the MMS servers.
            while not self.mmsAgent.done:
                try:
                    try:
                        self.mmsAgent.sendDataToMms()

                    except Exception, e:
                        self.logger.error(traceback.format_exc(e))
                finally:
                    try:
                        time.sleep(self.mmsAgent.collectionInterval)
                    except:
                        pass

        except Exception, e:
            self.logger.error(traceback.format_exc(e))