///////////////////////////////cci.p///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
+// senf::console::detail::ServerManager
+
+prefix_ void senf::console::detail::ServerManager::add(ptr server)
+{
+ instance().servers_.insert(server);
+}
+
+prefix_ void senf::console::detail::ServerManager::remove(ptr server)
+{
+ instance().servers_.erase(instance().servers_.find(server));
+}
+
+prefix_ senf::console::detail::ServerManager & senf::console::detail::ServerManager::instance()
+{
+ static ServerManager manager;
+ return manager;
+}
+
+///////////////////////////////////////////////////////////////////////////
// senf::console::detail::NonblockingSocketSink
prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Client & client)
return name_;
}
+prefix_ senf::console::DirectoryNode & senf::console::Server::root()
+ const
+{
+ return *root_;
+}
+
prefix_ senf::console::Server & senf::console::Server::root(DirectoryNode & root)
{
root_ = root.thisptr();
prefix_ void senf::console::Server::stop()
{
// commit suicide
- instancePtr().reset(0);
+ detail::ServerManager::remove(boost::intrusive_ptr<Server>(this));
}
///////////////////////////////////////////////////////////////////////////