Commit 2d55eeba9ad84a7d4c0ba213b0165ece47f299bf
1 parent
7c499d47
Exists in
master
and in
3 other branches
Working on IPC module.
Showing
5 changed files
with
36 additions
and
17 deletions
Show diff stats
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 | ... | ... |