From b3a552324fe3a455acf14b37e1d880e4e3600b64 Mon Sep 17 00:00:00 2001 From: wentasah Date: Wed, 20 May 2009 12:20:17 +0000 Subject: [PATCH] ortedemo checks for errors in publisher/subscriber creation Signed-off-by: Michal Sojka --- orte/contrib/shape/FPublisher.cpp | 13 +++++++++---- orte/contrib/shape/FPublisher.h | 2 +- orte/contrib/shape/FSubscriber.cpp | 12 ++++++++---- orte/contrib/shape/FSubscriber.h | 2 +- orte/contrib/shape/MainForm.cpp | 15 ++++++++++++--- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/orte/contrib/shape/FPublisher.cpp b/orte/contrib/shape/FPublisher.cpp index d318d2d..5afb308 100644 --- a/orte/contrib/shape/FPublisher.cpp +++ b/orte/contrib/shape/FPublisher.cpp @@ -8,19 +8,23 @@ FPublisher::FPublisher(QWidget *parent) while(incx==0) incx=(rand()%3-1)*stepx; while(incy==0) incy=(rand()%3-1)*stepy; rect.setRect(0,0,25,45); - ORTEInit(); - domain=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE); - BoxType_type_register(domain); publisher=NULL; /* setup UI */ setupUi(this); } -void FPublisher::initPublisher(int icolor,int istrength) +bool FPublisher::initPublisher(int icolor,int istrength) { NtpTime persistence; const char *topic; + ORTEInit(); + domain=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE); + if (!domain) + return false; + + BoxType_type_register(domain); + color=icolor; strength=istrength; boxType.color=color; @@ -49,6 +53,7 @@ void FPublisher::initPublisher(int icolor,int istrength) timer = new QTimer(); connect( timer, SIGNAL(timeout()), this, SLOT(Timer())); timer->start( 50 ); + return true; } diff --git a/orte/contrib/shape/FPublisher.h b/orte/contrib/shape/FPublisher.h index 94e460b..a84fcb5 100644 --- a/orte/contrib/shape/FPublisher.h +++ b/orte/contrib/shape/FPublisher.h @@ -32,7 +32,7 @@ class FPublisher : public QDialog , public Ui::FPublisher public: FPublisher(QWidget *parent = 0); - void initPublisher(int icolor,int istrength); + bool initPublisher(int icolor,int istrength); private slots: void Timer(); diff --git a/orte/contrib/shape/FSubscriber.cpp b/orte/contrib/shape/FSubscriber.cpp index a6f0ecd..dabdb97 100644 --- a/orte/contrib/shape/FSubscriber.cpp +++ b/orte/contrib/shape/FSubscriber.cpp @@ -4,9 +4,6 @@ FSubscriber::FSubscriber(QWidget *parent) : QDialog(parent) { - ORTEInit(); - domain=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE); - BoxType_type_register(domain); subscriberBlue=subscriberGreen=subscriberRed=NULL; subscriberBlack=subscriberYellow=NULL; /* setup UI */ @@ -61,10 +58,16 @@ recvCallBack(const ORTERecvInfo *info,void *vinstance, void *recvCallBackParam) } -void FSubscriber::initSubscribers( int iBlue, int iGreen, int iRed, int iBlack, int iYellow ) +bool FSubscriber::initSubscribers( int iBlue, int iGreen, int iRed, int iBlack, int iYellow ) { NtpTime deadline; + ORTEInit(); + domain=ORTEDomainAppCreate(ORTE_DEFAULT_DOMAIN,NULL,NULL,ORTE_FALSE); + if (!domain) + return false; + BoxType_type_register(domain); + NtpTimeAssembFromMs(msBlue, 0, 0); NtpTimeAssembFromMs(msGreen, 0, 0); NtpTimeAssembFromMs(msRed, 0, 0); @@ -146,6 +149,7 @@ void FSubscriber::initSubscribers( int iBlue, int iGreen, int iRed, int iBlack, IPADDRESS_INVALID); combo->addItem("Yellow"); } + return true; } diff --git a/orte/contrib/shape/FSubscriber.h b/orte/contrib/shape/FSubscriber.h index 0adc788..3db0798 100644 --- a/orte/contrib/shape/FSubscriber.h +++ b/orte/contrib/shape/FSubscriber.h @@ -36,7 +36,7 @@ class FSubscriber : public QDialog , public Ui::FSubscriber public: FSubscriber(QWidget *parent = 0); - void initSubscribers( int iBlue, int iGreen, int iRed, int iBlack, int iYellow ); + bool initSubscribers( int iBlue, int iGreen, int iRed, int iBlack, int iYellow ); private slots: diff --git a/orte/contrib/shape/MainForm.cpp b/orte/contrib/shape/MainForm.cpp index 1e1f497..a3e661e 100644 --- a/orte/contrib/shape/MainForm.cpp +++ b/orte/contrib/shape/MainForm.cpp @@ -55,7 +55,11 @@ void MainForm::addPublisher() if (radioButton2->isChecked()) color=4; fp = new FPublisher(); - fp->initPublisher(color,rand()%3); + if (!fp->initPublisher(color,rand()%3)) { + QMessageBox::critical(this, "ORTE error", "Publisher initialization failed"); + delete fp; + return; + } connect( this, SIGNAL( rejected() ), fp, SLOT( destroy() ) ); fp->setWindowIcon(QPixmap(":/FPublisherIcon.png")); fp->show(); @@ -66,12 +70,17 @@ void MainForm::addSubscriber() FSubscriber *fs; fs = new FSubscriber; connect( this, SIGNAL( rejected() ), fs, SLOT( destroy() ) ); - fs->initSubscribers( + if (!fs->initSubscribers( clBlue->isChecked(), clGreen->isChecked(), clRed->isChecked(), clBlack->isChecked(), - clYellow->isChecked()); + clYellow->isChecked())) + { + QMessageBox::critical(this, "ORTE error", "Subscriber initialization failed"); + delete fs; + return; + } fs->setWindowIcon(QPixmap(":/FSubscriberIcon.png")); fs->show(); } -- 2.39.2