diff --git a/src/include/lib3270++.h b/src/include/lib3270++.h index e75e060..19dc7fa 100644 --- a/src/include/lib3270++.h +++ b/src/include/lib3270++.h @@ -306,7 +306,7 @@ } inline operator bool() const { - return isConnected() && isReady(); + return isReady(); } inline operator ProgramMessage() const { diff --git a/src/lib3270++/ipc/session.cc b/src/lib3270++/ipc/session.cc index b6d53fe..cfc975d 100644 --- a/src/lib3270++/ipc/session.cc +++ b/src/lib3270++/ipc/session.cc @@ -45,13 +45,6 @@ namespace TN3270 { - /* - void IPC::Session::wait(time_t timeout) { - - - } - */ - void IPC::Session::connect(const char *url) { Request request(*this,"connect"); request.push(url).call(); @@ -63,7 +56,24 @@ // Wait for session state. void IPC::Session::waitForReady(time_t timeout) throw() { - throw std::system_error(EINVAL, std::system_category()); + + int rc; + Request request(*this,"waitforready"); + + time_t end = time(nullptr) + timeout; + + while(time(nullptr) < end) { + + request.call(); + + request.pop(rc); + + if(rc == 0) + return; + + } + + throw std::system_error(ETIMEDOUT, std::system_category()); } std::string IPC::Session::toString(int baddr, size_t len, char lf) const { diff --git a/src/lib3270++/testprogram/testprogram.cc b/src/lib3270++/testprogram/testprogram.cc index d4f5a7a..cc7b2ff 100644 --- a/src/lib3270++/testprogram/testprogram.cc +++ b/src/lib3270++/testprogram/testprogram.cc @@ -59,13 +59,9 @@ // host.connect(getenv("LIB3270_DEFAULT_HOST")); - /* - cout << host << endl; - - host << TN3270::ENTER; - - cout << host << endl; - */ + if(host) { + cout << host << endl; + } return 0; } -- libgit2 0.21.2