diff options
author | unknown <stewart@mysql.com[stewart]> | 2007-03-22 22:35:07 +1100 |
---|---|---|
committer | unknown <stewart@mysql.com[stewart]> | 2007-03-22 22:35:07 +1100 |
commit | aa8b15b70b80f6c33c05a1aaf3d926bf10715525 (patch) | |
tree | 632b950d268067bf0f77e5279446dbd650fea6f1 /storage/ndb/src/common/util/OutputStream.cpp | |
parent | c59722ad839db68b751e2f9be64671edc95cefab (diff) | |
download | mariadb-git-aa8b15b70b80f6c33c05a1aaf3d926bf10715525.tar.gz |
[PATCH] WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
use portable method, getting milliseconds between calls - Linux would
let us do funky stuff by getting the timeout from select(2). Everywhere
else sucks and doesn't let us do that :(
Index: ndb-work/storage/ndb/include/util/InputStream.hpp
===================================================================
storage/ndb/include/util/InputStream.hpp:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/include/util/OutputStream.hpp:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/include/util/socket_io.h:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/common/util/InputStream.cpp:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/common/util/OutputStream.cpp:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/common/util/socket_io.cpp:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
storage/ndb/src/mgmsrv/Services.cpp:
WL#3704 mgmapi timeouts: Change to have total timeout for call, not per request
Diffstat (limited to 'storage/ndb/src/common/util/OutputStream.cpp')
-rw-r--r-- | storage/ndb/src/common/util/OutputStream.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/storage/ndb/src/common/util/OutputStream.cpp b/storage/ndb/src/common/util/OutputStream.cpp index ebc352b1b50..0943e47e33f 100644 --- a/storage/ndb/src/common/util/OutputStream.cpp +++ b/storage/ndb/src/common/util/OutputStream.cpp @@ -44,7 +44,7 @@ FileOutputStream::println(const char * fmt, ...){ SocketOutputStream::SocketOutputStream(NDB_SOCKET_TYPE socket, unsigned write_timeout_ms){ m_socket = socket; - m_timeout_ms = write_timeout_ms; + m_timeout_remain= m_timeout_ms = write_timeout_ms; m_timedout= false; } @@ -55,12 +55,18 @@ SocketOutputStream::print(const char * fmt, ...){ if(timedout()) return -1; + int time= 0; va_start(ap, fmt); - const int ret = vprint_socket(m_socket, m_timeout_ms, fmt, ap); + int ret = vprint_socket(m_socket, m_timeout_ms, &time, fmt, ap); va_end(ap); - if (errno==ETIMEDOUT) + if(ret >= 0) + m_timeout_remain-=time; + if(errno==ETIMEDOUT || m_timeout_remain<=0) + { m_timedout= true; + ret= -1; + } return ret; } @@ -71,12 +77,18 @@ SocketOutputStream::println(const char * fmt, ...){ if(timedout()) return -1; + int time= 0; va_start(ap, fmt); - const int ret = vprintln_socket(m_socket, m_timeout_ms, fmt, ap); + int ret = vprintln_socket(m_socket, m_timeout_ms, &time, fmt, ap); va_end(ap); - if (errno==ETIMEDOUT) + if(ret >= 0) + m_timeout_remain-=time; + if (errno==ETIMEDOUT || m_timeout_remain<=0) + { m_timedout= true; + ret= -1; + } return ret; } |