libt2n: (gerd) fix client-connection-logic, finish wrappers, all tests are working...
[libt2n] / src / socket_wrapper.hxx
index 51c0693..da972a2 100644 (file)
@@ -62,6 +62,9 @@ class BasicSocketWrapper : public ConnectionWrapper
             { }
 
         client_connection* get_connection(void);
+
+        bool connection_established(void)
+            { return (c.get() != NULL); }
 };
 
 class ReconnectSocketWrapper : public BasicSocketWrapper
@@ -79,12 +82,29 @@ class ReconnectSocketWrapper : public BasicSocketWrapper
             : BasicSocketWrapper(_path,_connect_timeout_usec,_max_retries)
             { }
 
-        void handle(command_client* stubBase, boost::function< void() > f);
+        bool handle(command_client* stubBase, boost::function< void() > f);
 };
 
+class dummy_client_connection : public client_connection
+{
+    private:
+        void real_write(const std::string& data)
+            { }
+
+    public:
+        dummy_client_connection()
+            : client_connection()
+            { close(); }
+
+        bool fill_buffer(long long usec_timeout=-1, long long *usec_timeout_remaining=NULL)
+            { return false; }
+};
 
 class ReconnectIgnoreFailureSocketWrapper : public ReconnectSocketWrapper
 {
+    private:
+        dummy_client_connection dc;
+
     public:
         ReconnectIgnoreFailureSocketWrapper(int _port, const std::string& _server="127.0.0.1", 
             long long _connect_timeout_usec=socket_client_connection::connect_timeout_usec_default, 
@@ -99,11 +119,9 @@ class ReconnectIgnoreFailureSocketWrapper : public ReconnectSocketWrapper
             { }
 
         client_connection* get_connection(void);
-        void handle(command_client* stubBase, boost::function< void() > f);
+        bool handle(command_client* stubBase, boost::function< void() > f);
 };
 
-
-
 }
 
 #endif