Socket: Documentation for new addressing classes
[senf.git] / Console / Server.ih
index d31f713..925fd64 100644 (file)
@@ -29,6 +29,7 @@
 // Custom includes
 #include <boost/iostreams/concepts.hpp>
 #include <boost/iostreams/stream.hpp>
+#include <set>
 
 ///////////////////////////////ih.p////////////////////////////////////////
 
@@ -40,9 +41,29 @@ namespace console {
 
 namespace detail {
 
+    class ServerManager
+        : public senf::singleton<ServerManager>
+    {
+    public:
+        typedef boost::intrusive_ptr<Server> ptr;
+
+    protected:
+
+    private:
+        static void add(ptr server);
+        static void remove(ptr server);
+
+        typedef std::set<ptr> Servers;
+        Servers servers_;
+
+        friend class senf::console::Server;
+    };
+
     /** \brief Internal: Nonblocking boost::iostreams::sink
 
         The sink discards data if the output socket would.
+
+        \fixme Don't throw exceptions ... set stream error indicator (if at all)
      */
     class NonblockingSocketSink 
         : public boost::iostreams::sink