}
server_ = this; // remember this instance for use in callback
+ // TimerMgr uses IO service to run asynchronous timers.
TimerMgr::instance()->setIOService(getIOService());
+ // CommandMgr uses IO service to run asynchronous socket operations.
+ CommandMgr::instance().setIOService(getIOService());
+
// These are the commands always supported by the DHCPv6 server.
// Please keep the list in alphabetic order.
CommandMgr::instance().registerCommand("build-report",
reset();
};
+ /// @brief Returns pointer to the server's IO service.
+ ///
+ /// @return Pointer to the server's IO service or null pointer if the server
+ /// hasn't been created.
+ IOServicePtr getIOService() {
+ return (server_ ? server_->getIOService() : IOServicePtr());
+ }
+
void createUnixChannelServer() {
static_cast<void>(::remove(socket_path_.c_str()));
// detect the control socket connect and call the accept handler
ASSERT_TRUE(client->connectToServer(socket_path_));
ASSERT_NO_THROW(server_->receivePacket(0));
+ ASSERT_NO_THROW(getIOService()->run_one());
// Send the command and then call server's receivePacket() so it can
// detect the inbound data and call the read handler
ASSERT_TRUE(client->sendCommand(command));
ASSERT_NO_THROW(server_->receivePacket(0));
+ ASSERT_NO_THROW(getIOService()->run_one());
// Read the response generated by the server. Note that getResponse
// only fails if there an IO error or no response data was present.
// Now disconnect and process the close event
client->disconnectFromServer();
ASSERT_NO_THROW(server_->receivePacket(0));
+
+ ASSERT_NO_THROW(getIOService()->poll());
}
/// @brief Checks response for list-commands