/// @brief Constructor
///
/// @param io_service The IOService which handles signal handlers.
- IOSignalSetInitializer(IOServicePtr io_service) {
+ IOSignalSetInitializer(IOServicePtr io_service) : io_service_(io_service) {
if (!io_service) {
isc_throw(ProcessSpawnError, "NULL IOService instance");
}
/// @brief Destructor
~IOSignalSetInitializer() {
io_signal_set_->remove(SIGCHLD);
+ io_signal_set_.reset();
+ io_service_->stopAndPoll();
}
public:
private:
+ /// @brief IOService instance to process IO.
+ asiolink::IOServicePtr io_service_;
+
/// @brief ASIO signal set.
IOSignalSetPtr io_signal_set_;
};
/// @brief Destructor.
~IOSignalTest() {
+ test_timer_.cancel();
+ io_service_->stopAndPoll();
io_signal_set_.reset();
// Make sure the cancel handler for the IOSignalSet is called.
- if (io_service_->stopped()) {
- io_service_->restart();
- }
- io_service_->poll();
+ io_service_->stopAndPoll();
}
/// @brief Method used as the IOSignalSet handler.
ProcessSpawnTest() :
io_service_(getIOService()), test_timer_(io_service_),
test_time_ms_(0), io_signal_set_(), processed_signals_() {
- ProcessSpawn::setIOService(getIOService());
+ ProcessSpawn::setIOService(io_service_);
io_signal_set_.reset(new IOSignalSet(io_service_,
std::bind(&ProcessSpawnTest::processSignal,
/// @brief Destructor.
~ProcessSpawnTest() {
+ test_timer_.cancel();
+ io_service_->stopAndPoll();
io_signal_set_->remove(SIGCHLD);
io_signal_set_.reset();
+ ProcessSpawn::setIOService(IOServicePtr());
// Make sure the cancel handler for the IOSignalSet is called.
io_service_->stopAndPoll();
}
ElementPtr l = Element::createList();
l->add(l);
EXPECT_THROW(isEquivalent(l, l), isc::BadValue);
+ l->remove(0);
}
}