drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From par...@apache.org
Subject [1/3] drill git commit: DRILL-1219. C++ Client. Fix timeout for 32-bit windows platform
Date Wed, 18 Feb 2015 05:30:13 GMT
Repository: drill
Updated Branches:
  refs/heads/master 36fc560f0 -> 30c09ec48


DRILL-1219. C++ Client. Fix timeout for 32-bit windows platform


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/ab4d7998
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/ab4d7998
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/ab4d7998

Branch: refs/heads/master
Commit: ab4d799807bdcf6ecb74c6c0ffd655d6a1a965ad
Parents: 36fc560
Author: alzarei <azarei@ece.ubc.ca>
Authored: Mon Feb 16 14:41:28 2015 -0800
Committer: Parth Chandra <pchandra@maprtech.com>
Committed: Tue Feb 17 16:15:33 2015 -0800

----------------------------------------------------------------------
 .../native/client/src/clientlib/drillClientImpl.cpp    | 11 +++++++++++
 .../native/client/src/clientlib/drillClientImpl.hpp    | 13 ++++++-------
 contrib/native/client/src/include/drill/common.hpp     |  8 ++++++++
 3 files changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/ab4d7998/contrib/native/client/src/clientlib/drillClientImpl.cpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.cpp b/contrib/native/client/src/clientlib/drillClientImpl.cpp
index f9c17f9..ea3a7ee 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.cpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.cpp
@@ -196,6 +196,12 @@ connectionStatus_t DrillClientImpl::recvHandshake(){
     if(m_rbuf!=NULL){
         Utils::freeBuffer(m_rbuf, MAX_SOCK_RD_BUFSIZE); m_rbuf=NULL;
     }
+#ifdef WIN32_SHUTDOWN_ON_TIMEOUT
+    if (m_pError != NULL) {
+        return static_cast<connectionStatus_t>(m_pError->status);
+    }
+#endif // WIN32_SHUTDOWN_ON_TIMEOUT
+
     return CONN_SUCCESS;
 }
 
@@ -731,7 +737,12 @@ void DrillClientImpl::handleReadTimeout(const boost::system::error_code
& err){
             // to have the BOOST_ASIO_ENABLE_CANCELIO macro (as well as the BOOST_ASIO_DISABLE_IOCP
macro?)
             // defined. To be really sure, we need to close the socket. Closing the socket
is a bit
             // drastic and we will defer that till a later release.
+#ifdef WIN32_SHUTDOWN_ON_TIMEOUT
+            boost::system::error_code ignorederr;
+            m_socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignorederr);
+#else // NOT WIN32_SHUTDOWN_ON_TIMEOUT
             m_socket.cancel();
+#endif // WIN32_SHUTDOWN_ON_TIMEOUT
         }
     }
     return;

http://git-wip-us.apache.org/repos/asf/drill/blob/ab4d7998/contrib/native/client/src/clientlib/drillClientImpl.hpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/clientlib/drillClientImpl.hpp b/contrib/native/client/src/clientlib/drillClientImpl.hpp
index c87e1b7..d287bfc 100644
--- a/contrib/native/client/src/clientlib/drillClientImpl.hpp
+++ b/contrib/native/client/src/clientlib/drillClientImpl.hpp
@@ -20,15 +20,14 @@
 #ifndef DRILL_CLIENT_IMPL_H
 #define DRILL_CLIENT_IMPL_H
 
-/* Define some BOOST defines */
+#include "drill/common.hpp"
+
+// Define some BOOST defines
+// WIN32_SHUTDOWN_ON_TIMEOUT is defined in "drill/common.hpp" for Windows 32 bit platform
+#ifndef WIN32_SHUTDOWN_ON_TIMEOUT
 #define BOOST_ASIO_ENABLE_CANCELIO
-// If we want to support older versions of windows than Windows 7, we should
-// disable IOCP
-//#ifdef _WIN32
-//#define BOOST_ASIO_DISABLE_IOCP
-//#endif // _WIN32
+#endif //WIN32_SHUTDOWN_ON_TIMEOUT
 
-#include "drill/common.hpp"
 #include <stdlib.h>
 #include <time.h>
 #include <queue>

http://git-wip-us.apache.org/repos/asf/drill/blob/ab4d7998/contrib/native/client/src/include/drill/common.hpp
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/include/drill/common.hpp b/contrib/native/client/src/include/drill/common.hpp
index 824d670..e149ed1 100644
--- a/contrib/native/client/src/include/drill/common.hpp
+++ b/contrib/native/client/src/include/drill/common.hpp
@@ -50,6 +50,14 @@
 #define CODER_DEBUGGING
 #endif
 
+// http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/basic_stream_socket/cancel/overload1.html
+// : "Calls to cancel() will always fail with boost::asio::error::operation_not_supported
when run on Windows XP, Windows Server 2003, and earlier versions of Windows..."
+// As such, achieving cancel needs to be implemented differently;
+#if defined(_WIN32)  && !defined(_WIN64)
+#define WIN32_SHUTDOWN_ON_TIMEOUT
+#endif // _WIN32 && !_WIN64
+
+
 namespace Drill {
 
 typedef std::vector<uint8_t> DataBuf;


Mime
View raw message