THRIFT-1348 C++ Qt bindings
Patch: Doug Rosvick and Vitali Lovich

git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1242900 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/cpp/src/qt/TQTcpServer.h b/lib/cpp/src/qt/TQTcpServer.h
new file mode 100644
index 0000000..82bec39
--- /dev/null
+++ b/lib/cpp/src/qt/TQTcpServer.h
@@ -0,0 +1,48 @@
+#ifndef _THRIFT_TASYNC_QTCP_SERVER_H_
+#define _THRIFT_TASYNC_QTCP_SERVER_H_
+
+#include <QObject>
+#include <QTcpServer>
+
+#include <boost/shared_ptr.hpp>
+
+#include <tr1/functional>
+
+namespace apache { namespace thrift { namespace protocol {
+class TProtocol;
+class TProtocolFactory;
+}}} // apache::thrift::protocol
+
+namespace apache { namespace thrift { namespace async {
+
+class TAsyncProcessor;
+
+class TQTcpServer : public QObject {
+ Q_OBJECT
+ public:
+  TQTcpServer(boost::shared_ptr<QTcpServer> server,
+              boost::shared_ptr<TAsyncProcessor> processor,
+              boost::shared_ptr<apache::thrift::protocol::TProtocolFactory> protocolFactory,
+              QT_PREPEND_NAMESPACE(QObject)* parent = NULL);
+  virtual ~TQTcpServer();
+
+ private Q_SLOTS:
+  void processIncoming();
+  void beginDecode();
+  void socketClosed();
+
+ private:
+  class ConnectionContext;
+
+  void finish(boost::shared_ptr<ConnectionContext> ctx, bool healthy);
+
+  boost::shared_ptr<QTcpServer> server_;
+  boost::shared_ptr<TAsyncProcessor> processor_;
+  boost::shared_ptr<apache::thrift::protocol::TProtocolFactory> pfact_;
+
+  std::map<QT_PREPEND_NAMESPACE(QTcpSocket)*, boost::shared_ptr<ConnectionContext> > ctxMap_;
+};
+
+}}} // apache::thrift::async
+
+#endif // #ifndef _THRIFT_TASYNC_QTCP_SERVER_H_