From a11e56067f43bf9c4be672bc94a3ec98a14ccccb Mon Sep 17 00:00:00 2001
From: Auke Klazema <klazema@astron.nl>
Date: Wed, 8 Mar 2017 13:03:49 +0000
Subject: [PATCH] Task #10253: Placed construction in constructors

---
 MAC/WinCCServices/src/Program.cc            | 14 ++++++++------
 MAC/WinCCServices/src/Program.h             |  5 +++--
 MAC/WinCCServices/src/WinCCPublisherMain.cc |  2 --
 MAC/WinCCServices/src/WinCCWrapper.h        |  1 -
 MAC/WinCCServices/src/WinCCWrapperImpl.cc   |  5 +++--
 MAC/WinCCServices/src/WinCCWrapperImpl.h    |  5 +++--
 6 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/MAC/WinCCServices/src/Program.cc b/MAC/WinCCServices/src/Program.cc
index 85682eb6b4c..2a87d676697 100644
--- a/MAC/WinCCServices/src/Program.cc
+++ b/MAC/WinCCServices/src/Program.cc
@@ -29,7 +29,7 @@ namespace LOFAR {
 
 using namespace std;
 
-void Program::init()
+Program::Program()
 {
     try
     {
@@ -42,24 +42,26 @@ void Program::init()
         HotLinkWaitForAnswerFactoryImpl factory(*toBus, dataPointNameResolver);
 
         winCCWrapper.reset(new WinCCWrapperImpl(factory));
-        winCCWrapper->init();
+
         winCCWrapper->connect_datapoints(publisherResources.getDataPoints());
     }
     catch (std::exception &e)
     {
         std::cerr << e.what() << std::endl;
         Manager::exit(0);
+
+        throw;
     }
 }
 
-void Program::run()
+Program::~Program()
 {
-    winCCWrapper->run();
+    Manager::exit(0);
 }
 
-void Program::exit()
+void Program::run()
 {
-    Manager::exit(0);
+    winCCWrapper->run();
 }
 
     } // namespace WINCCSERVICES
diff --git a/MAC/WinCCServices/src/Program.h b/MAC/WinCCServices/src/Program.h
index 1dca3b180e9..0a939bd14db 100644
--- a/MAC/WinCCServices/src/Program.h
+++ b/MAC/WinCCServices/src/Program.h
@@ -33,9 +33,10 @@ namespace LOFAR {
 class Program
 {
 public:
-    void init();
+    Program();
+    ~Program();
+
     void run();
-    void exit();
 private:
     ConfigReaderImpl configReader;
     DataPointNameResolverImpl dataPointNameResolver;
diff --git a/MAC/WinCCServices/src/WinCCPublisherMain.cc b/MAC/WinCCServices/src/WinCCPublisherMain.cc
index 4ac2853149f..93c93549808 100644
--- a/MAC/WinCCServices/src/WinCCPublisherMain.cc
+++ b/MAC/WinCCServices/src/WinCCPublisherMain.cc
@@ -25,9 +25,7 @@ int main()
 {
     Program program;
 
-    program.init();
     program.run();
-    program.exit();
 
     return 0;
 }
\ No newline at end of file
diff --git a/MAC/WinCCServices/src/WinCCWrapper.h b/MAC/WinCCServices/src/WinCCWrapper.h
index eff52c744b5..fcada8698fb 100644
--- a/MAC/WinCCServices/src/WinCCWrapper.h
+++ b/MAC/WinCCServices/src/WinCCWrapper.h
@@ -31,7 +31,6 @@ namespace LOFAR {
 class WinCCWrapper
 {
 public:
-    virtual void init() = 0;
     virtual bool connect_datapoints(const std::vector<std::string> &datapoints) = 0;
     virtual void run() = 0;
 };
diff --git a/MAC/WinCCServices/src/WinCCWrapperImpl.cc b/MAC/WinCCServices/src/WinCCWrapperImpl.cc
index f50eba6028c..9e87aa30447 100644
--- a/MAC/WinCCServices/src/WinCCWrapperImpl.cc
+++ b/MAC/WinCCServices/src/WinCCWrapperImpl.cc
@@ -26,12 +26,13 @@ namespace LOFAR {
 
 using namespace std;
 
-PVSSboolean WinCCWrapperImpl::doExit = PVSS_FALSE;
+bool WinCCWrapperImpl::doExit = false;
 
 WinCCWrapperImpl::WinCCWrapperImpl(HotLinkWaitForAnswerFactory &factory) :
     Manager(ManagerIdentifier(API_MAN, Resources::getManNum())),
     factory(factory)
 {
+    init();
 }
 
 void WinCCWrapperImpl::init()
@@ -113,7 +114,7 @@ void WinCCWrapperImpl::signalHandler(int sig)
 {
     if ((sig == SIGINT) || (sig == SIGTERM))
     {
-        WinCCWrapperImpl::doExit = PVSS_TRUE;
+        WinCCWrapperImpl::doExit = true;
     }
     else
     {
diff --git a/MAC/WinCCServices/src/WinCCWrapperImpl.h b/MAC/WinCCServices/src/WinCCWrapperImpl.h
index 52a3d728980..2b171765f2d 100644
--- a/MAC/WinCCServices/src/WinCCWrapperImpl.h
+++ b/MAC/WinCCServices/src/WinCCWrapperImpl.h
@@ -36,13 +36,14 @@ class WinCCWrapperImpl : public WinCCWrapper, public Manager
 {
 public:
     WinCCWrapperImpl(HotLinkWaitForAnswerFactory &factory);
-    void init();
     bool connect_datapoints(const std::vector<std::string> &dataPoints);
     void run();
 
     virtual void signalHandler(int sig);
 private:
-    static PVSSboolean doExit;
+    void init();
+
+    static bool doExit;
     const HotLinkWaitForAnswerFactory& factory;
 };
 
-- 
GitLab