diff --git a/MAC/WinCCServices/src/Program.cc b/MAC/WinCCServices/src/Program.cc index 85682eb6b4c4fa582c4e822da494e8e5bac09feb..2a87d676697e901ac68452b991f93011ec30202a 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 1dca3b180e96967886128be339fe7c8999fe1a39..0a939bd14dba6c9d67878534f6197e5abe8e1e35 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 4ac2853149f50006d6211ce0391f546a02ea6d22..93c935498085c5def164ab714e6cc77595f9f1f4 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 eff52c744b50148454a52a24b970a858435455a3..fcada8698fbd94c9447478ad1dbc42ad842446c2 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 f50eba6028c08b4ed385dbf0f04b7820521806ee..9e87aa304471a1454f8592fa35b8970efe4eff48 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 52a3d728980556d422714fcb73e777adfadfe155..2b171765f2d2217ebacb9572063783f2b2123864 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; };