libt2n: (gerd) add hello messages
[libt2n] / src / connection.hxx
index 9142c52..2343984 100644 (file)
 
 #include <string>
 
+#include <netinet/in.h>
+
+#include "types.hxx"
+
 namespace libt2n
 {
 
+/** @brief a connection between client and server. abstact.
+*/
 class connection
 {
     private:
@@ -31,28 +37,41 @@ class connection
 
     protected:
         connection()
-        { closed=false; }
+            { closed=false; }
 
         std::string buffer;
 
-        typedef unsigned int packet_size_indicator;
+        typedef uint32_t packet_size_indicator;
 
         packet_size_indicator bytes_available();
 
         virtual void real_write(const std::string& data)=0;
 
+        virtual std::ostream* get_logstream(log_level_values level)=0;
+
     public:
-        ~connection()
+        virtual ~connection()
             { close(); }
 
+        /// is this connection closed or not
         bool is_closed()
             { return closed; }
 
+        /// close this connection
         virtual void close()
             { closed=true; }
 
-        virtual void fill_buffer(long long usec_timeout=-1)=0;
+        /** @brief look for new data and store it in the local buffer
+            @param usec_timeout wait until new data is found, max timeout usecs.
+                  -1: wait endless
+                   NULL: no timeout
+            @retval true if new data was found (does not mean that the received data 
+                    is a complete packet though)
+        */
+        virtual bool fill_buffer(long long usec_timeout=-1)=0;
         bool get_packet(std::string& data);
+
+        /// returns true if a complete data packet is in the buffer. retrieve it with get_packet().
         bool packet_available()
             { return bytes_available(); }