Missing changes from last commit
[senf.git] / Console / Server.ih
index de12c41..6bbaf5a 100644 (file)
@@ -53,11 +53,13 @@ namespace detail {
                              WriteablePolicy,
                              ConnectedCommunicationPolicy>::policy > Handle;
 
-        NonblockingSocketSink(Handle handle);
+        NonblockingSocketSink(Client & client);
         std::streamsize write(const char * s, std::streamsize n);
+
+        Client & client() const;
         
     private:
-        Handle handle_;
+        Client & client_;
     };
 
     typedef boost::iostreams::stream<NonblockingSocketSink> NonblockingSocketOStream;
@@ -75,20 +77,26 @@ namespace detail {
     {
     public:
         typedef ServerHandle::ClientSocketHandle ClientHandle;
-        typedef NonblockingSocketOStream OutputStream;
 
         virtual ~ClientReader() = 0;
 
+        // Called by subclasses to get information from the Client
+
         Client & client() const;
         std::string promptString() const;
         ClientHandle handle() const;
-        OutputStream & stream() const;
+        std::ostream & stream() const;
+
+        // Called by subclasses to perform actions in the Client
+
         void stopClient();
-        
         void handleInput(std::string const & input) const;
 
+        // Called by the Client
+
         void disablePrompt();
         void enablePrompt();
+        void translate(std::string & data);
 
     protected:
         ClientReader(Client & client);
@@ -96,6 +104,7 @@ namespace detail {
     private:
         virtual void v_disablePrompt() = 0;
         virtual void v_enablePrompt() = 0;
+        virtual void v_translate(std::string & data) = 0;
 
         Client & client_;
     };
@@ -114,6 +123,7 @@ namespace detail {
     private:
         virtual void v_disablePrompt();
         virtual void v_enablePrompt();
+        virtual void v_translate(std::string & data);
 
         void clientData(senf::ReadHelper<ClientHandle>::ptr helper);
         void showPrompt();