Commit 2d55eeba9ad84a7d4c0ba213b0165ece47f299bf

Authored by Perry Werneck
1 parent 7c499d47

Working on IPC module.

src/include/lib3270++.h
... ... @@ -202,7 +202,7 @@
202 202 virtual void disconnect() = 0;
203 203  
204 204 // Wait for session state.
205   - virtual void waitForReady(time_t timeout = DEFAULT_TIMEOUT) throw() = 0;
  205 + virtual void waitForReady(time_t timeout = DEFAULT_TIMEOUT) = 0;
206 206  
207 207 // Gets
208 208 virtual std::string toString(int baddr = 0, size_t len = -1, char lf = '\n') const = 0;
... ...
src/lib3270++/ipc/session.cc
... ... @@ -55,18 +55,22 @@
55 55 }
56 56  
57 57 // Wait for session state.
58   - void IPC::Session::waitForReady(time_t timeout) throw() {
  58 + void IPC::Session::waitForReady(time_t timeout) {
59 59  
60 60 int rc;
61   - Request request(*this,"waitForReady");
62 61  
63 62 time_t end = time(nullptr) + timeout;
64 63  
65 64 while(time(nullptr) < end) {
66 65  
67   - request.call();
  66 + debug("Running waitForReady request...");
68 67  
69   - request.pop(rc);
  68 + Request(*this,"waitForReady")
  69 + .push(1)
  70 + .call()
  71 + .pop(rc);
  72 +
  73 + debug("Wait for ready returned ",rc);
70 74  
71 75 if(rc == 0)
72 76 return;
... ...
src/lib3270++/linux/request.cc
... ... @@ -146,6 +146,11 @@
146 146 return *this;
147 147 }
148 148  
  149 + IPC::Request & IPC::Request::push(int32_t arg) {
  150 + dbus_message_append_args(this->msg.out,DBUS_TYPE_INT32,&arg,DBUS_TYPE_INVALID);
  151 + return *this;
  152 + }
  153 +
149 154 IPC::Request & IPC::Request::pop(std::string &value) {
150 155  
151 156 const char * str = "";
... ...
src/lib3270++/private.h
... ... @@ -295,6 +295,7 @@
295 295  
296 296 // Push values
297 297 Request & push(const char *arg);
  298 + Request & push(int32_t arg);
298 299  
299 300 // Pop values
300 301 Request & pop(std::string &value);
... ... @@ -331,7 +332,7 @@
331 332 void disconnect() override;
332 333  
333 334 // Wait for session state.
334   - void waitForReady(time_t timeout = 5) throw() override;
  335 + void waitForReady(time_t timeout = 5) override;
335 336  
336 337 // Get properties.
337 338 void getProperty(const char *name, int &value) const override;
... ...
src/lib3270++/testprogram/testprogram.cc
... ... @@ -47,22 +47,31 @@
47 47  
48 48 TN3270::Host host{"pw3270:a"};
49 49  
50   - cout
51   - << "Version: " << host.getVersion()
52   - << "\tRevision: " << host.getRevision()
53   - << std::endl;
  50 + try {
54 51  
55   - cout
56   - << "Connection state is " << host.getConnectionState()
57   - << "\tProgram message is " << host.getProgramMessage()
58   - << std::endl;
  52 + cout
  53 + << "Version: " << host.getVersion()
  54 + << "\tRevision: " << host.getRevision()
  55 + << std::endl;
59 56  
60   - // host.connect(getenv("LIB3270_DEFAULT_HOST"));
  57 + cout
  58 + << "Connection state is " << host.getConnectionState()
  59 + << "\tProgram message is " << host.getProgramMessage()
  60 + << std::endl;
  61 +
  62 + // host.connect(getenv("LIB3270_DEFAULT_HOST"));
  63 +
  64 + if(host) {
  65 + cout << host << endl;
  66 + }
  67 +
  68 + } catch(const std::exception &e) {
  69 +
  70 + cerr << std::endl << e.what() << std::endl << std::endl;
61 71  
62   - if(host) {
63   - cout << host << endl;
64 72 }
65 73  
  74 +
66 75 return 0;
67 76 }
68 77  
... ...