diff --git a/src/include/lib3270++.h b/src/include/lib3270++.h index 19dc7fa..3aada0e 100644 --- a/src/include/lib3270++.h +++ b/src/include/lib3270++.h @@ -202,7 +202,7 @@ virtual void disconnect() = 0; // Wait for session state. - virtual void waitForReady(time_t timeout = DEFAULT_TIMEOUT) throw() = 0; + virtual void waitForReady(time_t timeout = DEFAULT_TIMEOUT) = 0; // Gets virtual std::string toString(int baddr = 0, size_t len = -1, char lf = '\n') const = 0; diff --git a/src/lib3270++/ipc/session.cc b/src/lib3270++/ipc/session.cc index f263445..7322601 100644 --- a/src/lib3270++/ipc/session.cc +++ b/src/lib3270++/ipc/session.cc @@ -55,18 +55,22 @@ } // Wait for session state. - void IPC::Session::waitForReady(time_t timeout) throw() { + void IPC::Session::waitForReady(time_t timeout) { int rc; - Request request(*this,"waitForReady"); time_t end = time(nullptr) + timeout; while(time(nullptr) < end) { - request.call(); + debug("Running waitForReady request..."); - request.pop(rc); + Request(*this,"waitForReady") + .push(1) + .call() + .pop(rc); + + debug("Wait for ready returned ",rc); if(rc == 0) return; diff --git a/src/lib3270++/linux/request.cc b/src/lib3270++/linux/request.cc index fcd18c7..3a2ba56 100644 --- a/src/lib3270++/linux/request.cc +++ b/src/lib3270++/linux/request.cc @@ -146,6 +146,11 @@ return *this; } + IPC::Request & IPC::Request::push(int32_t arg) { + dbus_message_append_args(this->msg.out,DBUS_TYPE_INT32,&arg,DBUS_TYPE_INVALID); + return *this; + } + IPC::Request & IPC::Request::pop(std::string &value) { const char * str = ""; diff --git a/src/lib3270++/private.h b/src/lib3270++/private.h index 9d4c07d..0c81ad9 100644 --- a/src/lib3270++/private.h +++ b/src/lib3270++/private.h @@ -295,6 +295,7 @@ // Push values Request & push(const char *arg); + Request & push(int32_t arg); // Pop values Request & pop(std::string &value); @@ -331,7 +332,7 @@ void disconnect() override; // Wait for session state. - void waitForReady(time_t timeout = 5) throw() override; + void waitForReady(time_t timeout = 5) override; // Get properties. void getProperty(const char *name, int &value) const override; diff --git a/src/lib3270++/testprogram/testprogram.cc b/src/lib3270++/testprogram/testprogram.cc index cc7b2ff..a27dbb8 100644 --- a/src/lib3270++/testprogram/testprogram.cc +++ b/src/lib3270++/testprogram/testprogram.cc @@ -47,22 +47,31 @@ TN3270::Host host{"pw3270:a"}; - cout - << "Version: " << host.getVersion() - << "\tRevision: " << host.getRevision() - << std::endl; + try { - cout - << "Connection state is " << host.getConnectionState() - << "\tProgram message is " << host.getProgramMessage() - << std::endl; + cout + << "Version: " << host.getVersion() + << "\tRevision: " << host.getRevision() + << std::endl; - // host.connect(getenv("LIB3270_DEFAULT_HOST")); + cout + << "Connection state is " << host.getConnectionState() + << "\tProgram message is " << host.getProgramMessage() + << std::endl; + + // host.connect(getenv("LIB3270_DEFAULT_HOST")); + + if(host) { + cout << host << endl; + } + + } catch(const std::exception &e) { + + cerr << std::endl << e.what() << std::endl << std::endl; - if(host) { - cout << host << endl; } + return 0; } -- libgit2 0.21.2