--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2006 by Gerd v. Egidy *
+ * gve@intra2net.com *
+ * *
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef __LIBT2N_CONNECTION
+#define __LIBT2N_CONNECTION
+
+#include <string>
+
+namespace libt2n
+{
+
+class connection
+{
+ private:
+ bool closed;
+
+ protected:
+ connection()
+ { closed=false; }
+
+ std::string buffer;
+
+ typedef unsigned int packet_size_indicator;
+
+ packet_size_indicator bytes_available();
+
+ virtual void real_write(const std::string& data)=0;
+
+ public:
+ ~connection()
+ { close(); }
+
+ bool is_closed()
+ { return closed; }
+
+ virtual void close()
+ { closed=true; }
+
+ virtual void fill_buffer(long long usec_timeout=-1)=0;
+ bool get_packet(std::string& data);
+ bool packet_available()
+ { return bytes_available(); }
+
+ void write(const std::string& data);
+};
+
+}
+
+#endif