Mercurial > hg > orthanc
comparison Core/Toolbox.cpp @ 1101:e5686a703c63
ServerBarrier with external stop condition
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 07 Aug 2014 10:21:43 +0200 |
parents | e494ceb8d763 |
children | ce6386b37afd |
comparison
equal
deleted
inserted
replaced
1100:f21f7783f934 | 1101:e5686a703c63 |
---|---|
122 #error Support your platform here | 122 #error Support your platform here |
123 #endif | 123 #endif |
124 } | 124 } |
125 | 125 |
126 | 126 |
127 void Toolbox::ServerBarrier() | 127 static void ServerBarrierInternal(bool* stopFlag) |
128 { | 128 { |
129 #if defined(_WIN32) | 129 #if defined(_WIN32) |
130 SetConsoleCtrlHandler(ConsoleControlHandler, true); | 130 SetConsoleCtrlHandler(ConsoleControlHandler, true); |
131 #else | 131 #else |
132 signal(SIGINT, SignalHandler); | 132 signal(SIGINT, SignalHandler); |
133 signal(SIGQUIT, SignalHandler); | 133 signal(SIGQUIT, SignalHandler); |
134 signal(SIGTERM, SignalHandler); | 134 signal(SIGTERM, SignalHandler); |
135 #endif | 135 #endif |
136 | 136 |
137 // Active loop that awakens every 100ms | |
137 finish = false; | 138 finish = false; |
138 while (!finish) | 139 while (!(*stopFlag || finish)) |
139 { | 140 { |
140 USleep(100000); | 141 Toolbox::USleep(100 * 1000); |
141 } | 142 } |
142 | 143 |
143 #if defined(_WIN32) | 144 #if defined(_WIN32) |
144 SetConsoleCtrlHandler(ConsoleControlHandler, false); | 145 SetConsoleCtrlHandler(ConsoleControlHandler, false); |
145 #else | 146 #else |
147 signal(SIGQUIT, NULL); | 148 signal(SIGQUIT, NULL); |
148 signal(SIGTERM, NULL); | 149 signal(SIGTERM, NULL); |
149 #endif | 150 #endif |
150 } | 151 } |
151 | 152 |
153 | |
154 void Toolbox::ServerBarrier(bool& stopFlag) | |
155 { | |
156 ServerBarrierInternal(&stopFlag); | |
157 } | |
158 | |
159 void Toolbox::ServerBarrier() | |
160 { | |
161 bool stopFlag = false; | |
162 ServerBarrierInternal(&stopFlag); | |
163 } | |
152 | 164 |
153 | 165 |
154 void Toolbox::ToUpperCase(std::string& s) | 166 void Toolbox::ToUpperCase(std::string& s) |
155 { | 167 { |
156 std::transform(s.begin(), s.end(), s.begin(), toupper); | 168 std::transform(s.begin(), s.end(), s.begin(), toupper); |