Socket/Protocols/INet: Extend INet6SocketAddress syntax to support more flexible...
[senf.git] / Console / Server.ih
index de12c41..eabef7e 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,20 @@ namespace detail {
     {
     public:
         typedef ServerHandle::ClientSocketHandle ClientHandle;
-        typedef NonblockingSocketOStream OutputStream;
 
         virtual ~ClientReader() = 0;
 
         Client & client() const;
         std::string promptString() const;
         ClientHandle handle() const;
-        OutputStream & stream() const;
+        std::ostream & stream() const;
         void stopClient();
         
         void handleInput(std::string const & input) const;
 
         void disablePrompt();
         void enablePrompt();
+        void translate(std::string & data);
 
     protected:
         ClientReader(Client & client);
@@ -96,6 +98,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 +117,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();