Utils/Logger: Remove dependency on libboost_datetime
[senf.git] / Console / Server.cci
index 5147dfd..b684439 100644 (file)
 ///////////////////////////////////////////////////////////////////////////
 // senf::console::detail::NonblockingSocketSink
 
-prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Handle handle)
-    : handle_ (handle)
+prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Client & client)
+    : client_ (client)
 {}
 
+prefix_ senf::console::Client & senf::console::detail::NonblockingSocketSink::client()
+    const
+{
+    return client_;
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::console::Server
 
-prefix_ void senf::console::Server::name(std::string const & name)
+prefix_ senf::console::Server & senf::console::Server::name(std::string const & name)
 {
     name_ = name;
+    return *this;
+}
+
+prefix_ void senf::console::Server::stop()
+{
+    // commit suicide
+    instancePtr().reset(0);
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -69,7 +82,7 @@ prefix_ senf::console::detail::ClientReader::ClientHandle senf::console::detail:
     return client().handle();
 }
 
-prefix_ senf::console::detail::ClientReader::OutputStream & senf::console::detail::ClientReader::stream()
+prefix_ std::ostream & senf::console::detail::ClientReader::stream()
     const
 {
     return client().stream();
@@ -96,6 +109,11 @@ prefix_ void senf::console::detail::ClientReader::enablePrompt()
     v_enablePrompt();
 }
 
+prefix_ void senf::console::detail::ClientReader::translate(std::string & data)
+{
+    v_translate(data);
+}
+
 prefix_ senf::console::detail::ClientReader::ClientReader(Client & client)
     : client_ (client)
 {}
@@ -103,19 +121,39 @@ prefix_ senf::console::detail::ClientReader::ClientReader(Client & client)
 ///////////////////////////////////////////////////////////////////////////
 // senf::console::Client
 
+prefix_ senf::console::Client::~Client()
+{}
+
+prefix_ void senf::console::Client::stop()
+{
+    // THIS COMMITS SUICIDE. THE INSTANCE IS GONE AFTER removeClient RETURNS
+    server_.removeClient(*this);
+}
+
+prefix_ std::string const & senf::console::Client::name()
+    const
+{
+    return name_;
+}
+
 prefix_ std::string senf::console::Client::promptString()
     const
 {
     return name_ + ":" + executor_.cwd().path() + "$ ";
 }
 
+prefix_ senf::console::Client & senf::console::Client::get(std::ostream & os)
+{
+    return dynamic_cast<detail::NonblockingSocketOStream&>(os)->client();
+}
+
 prefix_ senf::console::Client::ClientHandle senf::console::Client::handle()
     const
 {
     return handle_;
 }
 
-prefix_ senf::console::detail::NonblockingSocketOStream & senf::console::Client::stream()
+prefix_ std::ostream & senf::console::Client::stream()
 {
     return out_t::member;
 }