Revision: 41417
          http://brlcad.svn.sourceforge.net/brlcad/?rev=41417&view=rev
Author:   davidloman
Date:     2010-11-22 14:12:18 +0000 (Mon, 22 Nov 2010)

Log Message:
-----------
Put in some NULL checks for safety.

Modified Paths:
--------------
    rt^3/trunk/src/libJob/JobManager.cxx

Modified: rt^3/trunk/src/libJob/JobManager.cxx
===================================================================
--- rt^3/trunk/src/libJob/JobManager.cxx        2010-11-22 13:45:11 UTC (rev 
41416)
+++ rt^3/trunk/src/libJob/JobManager.cxx        2010-11-22 14:12:18 UTC (rev 
41417)
@@ -29,124 +29,131 @@
 JobManager* JobManager::pInstance = NULL;
 QMutex* JobManager::singletonLock = new QMutex();
 
-JobManager::JobManager()
-{
-    this->log = Logger::getInstance();
-    this->jobQueue = new QList<AbstractJob*> ();
-    this->queueLock = new QMutex();
-    this->jobWorkers = new QList<JobWorker*> ();
-    this->acceptJobs = false;
+JobManager::JobManager() {
+       this->log = Logger::getInstance();
+       this->jobQueue = new QList<AbstractJob*> ();
+       this->queueLock = new QMutex();
+       this->jobWorkers = new QList<JobWorker*> ();
+       this->acceptJobs = false;
 
-    QString text = "Startup.  MAX_JOBWORKERS: " + 
QString::number(MAX_JOBWORKERS);
+       QString text = "Startup.  MAX_JOBWORKERS: " + QString::number(
+                       MAX_JOBWORKERS);
 
-    this->log->logINFO("JobManager", text);
+       this->log->logINFO("JobManager", text);
 
-    for (quint32 i = 0; i < MAX_JOBWORKERS; ++i) {
-       JobWorker* jw = new JobWorker();
-       this->jobWorkers->append(jw);
+       for (quint32 i = 0; i < MAX_JOBWORKERS; ++i) {
+               JobWorker* jw = new JobWorker();
+               this->jobWorkers->append(jw);
 
-       //text = "Created new JobWorker with ID of " + 
jw->getWorkerIdAsQString();
-       //this->log->logINFO("JobManager", text);
-    }
+               //text = "Created new JobWorker with ID of " + 
jw->getWorkerIdAsQString();
+               //this->log->logINFO("JobManager", text);
+       }
 
-    text = "Created a total of " + QString::number(this->jobWorkers->size()) + 
" JobWorkers";
-    this->log->logINFO("JobManager", text);
+       text = "Created a total of " + QString::number(this->jobWorkers->size())
+                       + " JobWorkers";
+       this->log->logINFO("JobManager", text);
 }
 
-JobManager::~JobManager()
-{
-    this->shutdown();
+JobManager::~JobManager() {
+       this->shutdown();
 
-    delete jobQueue;
-    //TODO Should I loop through jobs, destroying them as well?
-    delete queueLock;
+       delete jobQueue;
+       //TODO Should I loop through jobs, destroying them as well?
+       delete queueLock;
 
-    delete jobWorkers;
+       delete jobWorkers;
 }
 
-void JobManager::startup()
-{
-    for (quint32 i = 0; i < this->jobWorkers->size(); ++i) {
-       JobWorker* jw = this->jobWorkers->at(i);
-       jw->start();
-    }
-    this->acceptJobs = true;
+void JobManager::startup() {
+       for (quint32 i = 0; i < this->jobWorkers->size(); ++i) {
+               JobWorker* jw = this->jobWorkers->at(i);
+               jw->start();
+       }
+       this->acceptJobs = true;
 }
 
-void JobManager::shutdown(bool finishJobQueue)
-{
-    this->log->logINFO("JobManager", "JobManager Shutdown Requested. " + 
QString::number(this->jobQueue->size()) + " items in jobQueue remain...");
+void JobManager::shutdown(bool finishJobQueue) {
+       this->log->logINFO("JobManager", "JobManager Shutdown Requested. "
+                       + QString::number(this->jobQueue->size())
+                       + " items in jobQueue remain...");
 
-    this->acceptJobs = false;
+       this->acceptJobs = false;
 
-    //TODO These should be moved to preferences eventually.
-    quint32 maxWaitTimeSecs = 60;
-    quint32 waitTimePerLoopSecs = 5;
-    quint32 maxPasses = (maxWaitTimeSecs / waitTimePerLoopSecs);
-    quint32 curPasses = 0;
+       //TODO These should be moved to preferences eventually.
+       quint32 maxWaitTimeSecs = 60;
+       quint32 waitTimePerLoopSecs = 5;
+       quint32 maxPasses = (maxWaitTimeSecs / waitTimePerLoopSecs);
+       quint32 curPasses = 0;
 
-    while (this->jobQueue->size() != 0 && finishJobQueue) {
-       this->log->logINFO("JobManager", "Waiting for JobWorkers to process 
JobQueue. " + QString::number(this->jobQueue->size()) + " items remain...");
-       GSThread::sleep(waitTimePerLoopSecs);
-       ++curPasses;
-       if (curPasses >= maxPasses) {
-               this->log->logINFO("JobManager", "Shutdown Wait-time fail safe 
reached.  Forcing Shutdown.");
-               break;
-       }
-    }
+       while (this->jobQueue->size() != 0 && finishJobQueue) {
+               this->log->logINFO("JobManager",
+                               "Waiting for JobWorkers to process JobQueue. "
+                                               + 
QString::number(this->jobQueue->size())
+                                               + " items remain...");
+               GSThread::sleep(waitTimePerLoopSecs);
+               ++curPasses;
+               if (curPasses >= maxPasses) {
+                       this->log->logINFO("JobManager",
+                                       "Shutdown Wait-time fail safe reached.  
Forcing Shutdown.");
+                       break;
+               }
+       }
 
-    //loop through workers, shut them down individually. Then empty worker list
-    while (!this->jobWorkers->isEmpty()) {
-       JobWorker* jw = this->jobWorkers->front();
-               jw->shutdown();
+       //loop through workers, shut them down individually. Then empty worker 
list
+       while (!this->jobWorkers->isEmpty()) {
+               JobWorker* jw = this->jobWorkers->front();
+               if (jw != NULL) {
+//                     this->log->logINFO("JobManager", "Shutting Down 
JobWorker: " + jw->getWorkerId().toString());
+                       jw->shutdown();
+               } else {
+                       this->log->logERROR("JobManager", "Null JobWorker.");
+               }
                this->jobWorkers->pop_front();
-    }
+       }
 
-    this->log->logINFO("JobManager", "All JobWorkers Stopped. " + 
QString::number(this->jobQueue->size()) + " items in jobQueue remain...");
+       this->log->logINFO("JobManager", "All JobWorkers Stopped. "
+                       + QString::number(this->jobQueue->size())
+                       + " items in jobQueue remain...");
 }
 
-JobManager* JobManager::getInstance()
-{
-    QMutexLocker locker(JobManager::singletonLock);
+JobManager* JobManager::getInstance() {
+       QMutexLocker locker(JobManager::singletonLock);
 
-    if (!JobManager::pInstance) {
-       pInstance = new JobManager();
-    }
-    return JobManager::pInstance;
+       if (!JobManager::pInstance) {
+               pInstance = new JobManager();
+       }
+       return JobManager::pInstance;
 }
 
-void JobManager::submitJob(AbstractJob* job)
-{
-    if (this->acceptJobs == false) {
-       this->log->logWARNING("JobManager", "Job not queued. JobWorkers are 
currently not working.");
-                //TODO perhaps return a bool??
-       return;
-    }
+void JobManager::submitJob(AbstractJob* job) {
+       if (this->acceptJobs == false) {
+               this->log->logWARNING("JobManager",
+                               "Job not queued. JobWorkers are currently not 
working.");
+               //TODO perhaps return a bool??
+               return;
+       }
 
-    QMutexLocker locker(this->queueLock);
-    this->jobQueue->append(job);
+       QMutexLocker locker(this->queueLock);
+       this->jobQueue->append(job);
 }
 
-AbstractJob* JobManager::getNextJob()
-{
-    QMutexLocker locker(this->queueLock);
-    if (!this->jobQueue->isEmpty()) {
-       return this->jobQueue->takeFirst();
-    } else {
-       return NULL;
-    }
+AbstractJob* JobManager::getNextJob() {
+       QMutexLocker locker(this->queueLock);
+       if (!this->jobQueue->isEmpty()) {
+               return this->jobQueue->takeFirst();
+       } else {
+               return NULL;
+       }
 }
 
-bool JobManager::hasNextJob()
-{
-    QMutexLocker locker(this->queueLock);
-    return !this->jobQueue->isEmpty();
+bool JobManager::hasNextJob() {
+       QMutexLocker locker(this->queueLock);
+       return !this->jobQueue->isEmpty();
 }
 
-quint32 JobManager::getWorkQueueLen()
-{
+quint32 JobManager::getWorkQueueLen() {
        QMutexLocker locker(this->queueLock);
-    return this->jobQueue->size();
+       return this->jobQueue->size();
 }
 
 //TODO add JobWorker Monitor.


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to