From b417442ed15d0eba5b3555b0ed633ddf8075b673 Mon Sep 17 00:00:00 2001 From: PerryWerneck Date: Tue, 7 Mar 2017 02:14:19 -0300 Subject: [PATCH] Atualizando módulo cliente com as últimas mudanças na parte de IPC --- pw3270.cbp | 1 + src/libpw3270cpp/remote.cc | 42 ++++++++++++++++++++++++++++++++++++++++++ src/libpw3270cpp/testprogram.cc | 8 +++++--- src/plugins/dbus3270/test.sh | 2 +- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/pw3270.cbp b/pw3270.cbp index b694ca7..e1d3575 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -284,6 +284,7 @@ + diff --git a/src/libpw3270cpp/remote.cc b/src/libpw3270cpp/remote.cc index 8649820..c58d0f9 100644 --- a/src/libpw3270cpp/remote.cc +++ b/src/libpw3270cpp/remote.cc @@ -817,6 +817,7 @@ return (LIB3270_SSL_STATE) query_intval(HLLAPI_PACKET_GET_SSL_STATE); } +/* int connect(void) { int rc; @@ -846,6 +847,47 @@ return rc; } +*/ + + virtual int connect() + { + return connect("",0); + } + + virtual int connect(const char *url, time_t wait) + { + debug("%s(%s,%u)",__FUNCTION__,url,(unsigned int) wait); + +#if defined(WIN32) + + #error Reimplementar + +#elif defined(HAVE_DBUS) + + int rc = query_intval("connect", DBUS_TYPE_STRING, &url, DBUS_TYPE_INVALID); + + debug("connect(%s) rc=%d (%s)",url,rc,strerror(rc)); + + if(!rc && wait) { + time_t end = time(0) + wait; + while(!is_connected()) { + if(time(0) > end) { + debug("%s: Timeout",__FUNCTION__); + return ETIMEDOUT; + } + usleep(500); + } + } + +#else + rc = EINVAL; + +#endif + debug("connect(%s) rc=%d (%s)",url,rc,strerror(rc)); + + return rc; + + } int set_url(const char *uri) { diff --git a/src/libpw3270cpp/testprogram.cc b/src/libpw3270cpp/testprogram.cc index 8d1dd85..a9d5c5f 100644 --- a/src/libpw3270cpp/testprogram.cc +++ b/src/libpw3270cpp/testprogram.cc @@ -42,9 +42,9 @@ try { string s; - session *session = session::start("service://?"); + // session *session = session::start("service://?"); // session *session = session::start(""); - // session *session = session::start("new"); + session *session = session::start("pw3270:A"); string name = session->get_session_name(); @@ -68,7 +68,7 @@ // s = session->get_host_charset(); // cout << "\tHost charset: " << s.c_str() << endl; - cout << "Connect: " << session->connect("fandezhi.efglobe.com:23",60) << endl << endl; + cout << "Connect: " << session->connect("tn3270://fandezhi.efglobe.com:23",60) << endl << endl; cout << "\tWaitForReady: " << session->wait_for_ready(10) << endl; @@ -80,6 +80,7 @@ delete session; + /* session = session::start(name.c_str()); cout << "Restored session: " << name << endl << endl; cout << "\tIsConnected: " << session->is_connected() << endl; @@ -88,6 +89,7 @@ session->disconnect(); session->close(); delete session; + */ } catch(std::exception &e) { diff --git a/src/plugins/dbus3270/test.sh b/src/plugins/dbus3270/test.sh index bf81b19..39e7a5c 100755 --- a/src/plugins/dbus3270/test.sh +++ b/src/plugins/dbus3270/test.sh @@ -22,7 +22,7 @@ run_command() ;; connect) - dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.connect string:$2 + dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.connect string:$2 int32:10 ;; disconnect) -- libgit2 0.21.2