Commit b094d22b54a449197b53e5585665ba0bc069966b
1 parent
8c031cd6
Exists in
master
and in
5 other branches
Melhorando método connect da classe de apoio
Showing
11 changed files
with
75 additions
and
32 deletions
Show diff stats
src/classlib/Makefile.in
@@ -121,6 +121,8 @@ install-sdk: $(BINRLS)/$(LIBNAME) | @@ -121,6 +121,8 @@ install-sdk: $(BINRLS)/$(LIBNAME) | ||
121 | @$(MKDIR) $(DESTDIR)$(libdir) | 121 | @$(MKDIR) $(DESTDIR)$(libdir) |
122 | @$(INSTALL_DATA) $(BINRLS)/$(LIBNAME) $(DESTDIR)$(libdir) | 122 | @$(INSTALL_DATA) $(BINRLS)/$(LIBNAME) $(DESTDIR)$(libdir) |
123 | 123 | ||
124 | +cleanDebug: clean | ||
125 | + | ||
124 | clean: | 126 | clean: |
125 | @rm -fr $(OBJDIR) | 127 | @rm -fr $(OBJDIR) |
126 | @rm -fr $(BINDIR) | 128 | @rm -fr $(BINDIR) |
src/classlib/local.cc
@@ -418,9 +418,9 @@ | @@ -418,9 +418,9 @@ | ||
418 | return _get_connection_state(hSession); | 418 | return _get_connection_state(hSession); |
419 | } | 419 | } |
420 | 420 | ||
421 | - int connect(bool wait) | 421 | + int connect(void) |
422 | { | 422 | { |
423 | - return _connect(hSession,(int) wait); | 423 | + return _connect(hSession,0); |
424 | } | 424 | } |
425 | 425 | ||
426 | int set_url(const char *uri) | 426 | int set_url(const char *uri) |
src/classlib/remote.cc
@@ -712,7 +712,7 @@ | @@ -712,7 +712,7 @@ | ||
712 | return (LIB3270_CSTATE) query_intval(HLLAPI_PACKET_GET_CSTATE); | 712 | return (LIB3270_CSTATE) query_intval(HLLAPI_PACKET_GET_CSTATE); |
713 | } | 713 | } |
714 | 714 | ||
715 | - int connect(bool wait) | 715 | + int connect(void) |
716 | { | 716 | { |
717 | int rc; | 717 | int rc; |
718 | 718 | ||
@@ -736,12 +736,6 @@ | @@ -736,12 +736,6 @@ | ||
736 | rc = -1; | 736 | rc = -1; |
737 | 737 | ||
738 | #endif | 738 | #endif |
739 | - | ||
740 | - trace("%s: rc=%d",__FUNCTION__,rc); | ||
741 | - | ||
742 | - if(!rc && wait) | ||
743 | - return wait_for_ready(120); | ||
744 | - | ||
745 | return rc; | 739 | return rc; |
746 | 740 | ||
747 | } | 741 | } |
@@ -783,8 +777,8 @@ | @@ -783,8 +777,8 @@ | ||
783 | 777 | ||
784 | while(time(0) < end) | 778 | while(time(0) < end) |
785 | { | 779 | { |
786 | - //if(!is_connected()) | ||
787 | - // return ENOTCONN; | 780 | + if(!is_connected()) |
781 | + return ENOTCONN; | ||
788 | 782 | ||
789 | if(is_ready()) | 783 | if(is_ready()) |
790 | return 0; | 784 | return 0; |
@@ -871,8 +865,12 @@ | @@ -871,8 +865,12 @@ | ||
871 | int iterate(bool wait) | 865 | int iterate(bool wait) |
872 | { | 866 | { |
873 | #if defined(WIN32) | 867 | #if defined(WIN32) |
868 | + if(wait) | ||
869 | + Sleep(250); | ||
874 | return 0; | 870 | return 0; |
875 | #elif defined(HAVE_DBUS) | 871 | #elif defined(HAVE_DBUS) |
872 | + if(wait) | ||
873 | + usleep(250); | ||
876 | return 0; | 874 | return 0; |
877 | #else | 875 | #else |
878 | return -1; | 876 | return -1; |
src/classlib/session.cc
@@ -34,6 +34,10 @@ | @@ -34,6 +34,10 @@ | ||
34 | 34 | ||
35 | #include <pw3270/class.h> | 35 | #include <pw3270/class.h> |
36 | 36 | ||
37 | +#ifndef WIN32 | ||
38 | + #include <unistd.h> | ||
39 | +#endif // !WIN32 | ||
40 | + | ||
37 | #ifdef HAVE_SYSLOG | 41 | #ifdef HAVE_SYSLOG |
38 | #include <syslog.h> | 42 | #include <syslog.h> |
39 | #endif // HAVE_SYSLOG | 43 | #endif // HAVE_SYSLOG |
@@ -481,7 +485,7 @@ | @@ -481,7 +485,7 @@ | ||
481 | return set_url(host); | 485 | return set_url(host); |
482 | } | 486 | } |
483 | 487 | ||
484 | - int session::connect(const char *host, bool wait) | 488 | + int session::connect(const char *host, time_t wait) |
485 | { | 489 | { |
486 | int rc = 0; | 490 | int rc = 0; |
487 | 491 | ||
@@ -491,8 +495,22 @@ | @@ -491,8 +495,22 @@ | ||
491 | trace("%s: set_url(%s) = %d",__FUNCTION__,host,rc); | 495 | trace("%s: set_url(%s) = %d",__FUNCTION__,host,rc); |
492 | } | 496 | } |
493 | 497 | ||
494 | - if(!rc) | ||
495 | - rc = connect(wait); | 498 | + rc = connect(); |
499 | + trace("%s: connect=%d",__FUNCTION__,rc); | ||
500 | + | ||
501 | + if(!rc && wait) | ||
502 | + { | ||
503 | + time_t timeout = time(0)+wait; | ||
504 | + rc = ETIMEDOUT; | ||
505 | + | ||
506 | + while(time(0) < timeout && rc == ETIMEDOUT) | ||
507 | + { | ||
508 | + trace("%s: Waiting",__FUNCTION__); | ||
509 | + if(is_connected()) | ||
510 | + rc = 0; | ||
511 | + iterate(true); | ||
512 | + } | ||
513 | + } | ||
496 | 514 | ||
497 | return rc; | 515 | return rc; |
498 | } | 516 | } |
src/classlib/testprogram.cc
@@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
41 | 41 | ||
42 | { | 42 | { |
43 | string s; | 43 | string s; |
44 | - session *session = session::start("pw3270:a"); | 44 | + session *session = session::start(""); |
45 | // session *session = session::start("new"); | 45 | // session *session = session::start("new"); |
46 | 46 | ||
47 | cout << "pw3270 version: " << session->get_version() << endl; | 47 | cout << "pw3270 version: " << session->get_version() << endl; |
@@ -60,7 +60,7 @@ | @@ -60,7 +60,7 @@ | ||
60 | s = session->get_host_charset(); | 60 | s = session->get_host_charset(); |
61 | cout << "\tHost charset: " << s.c_str() << endl; | 61 | cout << "\tHost charset: " << s.c_str() << endl; |
62 | 62 | ||
63 | - session->connect(false); | 63 | + cout << "Connect: " << session->connect("fandezhi.efglobe.com:23",60) << endl << endl; |
64 | 64 | ||
65 | cout << "\tWaitForReady: " << session->wait_for_ready(10) << endl; | 65 | cout << "\tWaitForReady: " << session->wait_for_ready(10) << endl; |
66 | 66 | ||
@@ -75,6 +75,7 @@ | @@ -75,6 +75,7 @@ | ||
75 | sleep(2); | 75 | sleep(2); |
76 | 76 | ||
77 | // Create another session | 77 | // Create another session |
78 | + /* | ||
78 | { | 79 | { |
79 | session *session = session::start("pw3270:a"); | 80 | session *session = session::start("pw3270:a"); |
80 | 81 | ||
@@ -82,6 +83,7 @@ | @@ -82,6 +83,7 @@ | ||
82 | delete session; | 83 | delete session; |
83 | 84 | ||
84 | } | 85 | } |
86 | + */ | ||
85 | 87 | ||
86 | 88 | ||
87 | return 0; | 89 | return 0; |
src/include/pw3270/class.h
@@ -134,9 +134,9 @@ | @@ -134,9 +134,9 @@ | ||
134 | virtual string get_display_charset(void); | 134 | virtual string get_display_charset(void); |
135 | 135 | ||
136 | // Connection & Network | 136 | // Connection & Network |
137 | - int connect(const char *host, bool wait = true); | ||
138 | - int set_host(const char *host); | ||
139 | - virtual int connect(bool wait = true) = 0; | 137 | + int connect(const char *host, time_t wait = 0); |
138 | + int set_host(const char *host); | ||
139 | + virtual int connect(void) = 0; | ||
140 | virtual int set_url(const char *hostname) = 0; | 140 | virtual int set_url(const char *hostname) = 0; |
141 | virtual int disconnect(void) = 0; | 141 | virtual int disconnect(void) = 0; |
142 | virtual int wait_for_ready(int seconds) = 0; | 142 | virtual int wait_for_ready(int seconds) = 0; |
src/include/pw3270/hllapi.h
@@ -100,7 +100,35 @@ extern "C" { | @@ -100,7 +100,35 @@ extern "C" { | ||
100 | 100 | ||
101 | #else | 101 | #else |
102 | 102 | ||
103 | - #error NOT IMPLEMENTED | 103 | + typedef unsigned short DWORD |
104 | + | ||
105 | + LIB3270_EXPORT int __stdcall hllapi(const LPWORD func, LPSTR str, LPWORD length, LPWORD rc); | ||
106 | + | ||
107 | + LIB3270_EXPORT DWORD __stdcall hllapi_init(LPSTR mode); | ||
108 | + LIB3270_EXPORT DWORD __stdcall hllapi_deinit(void); | ||
109 | + | ||
110 | + LIB3270_EXPORT DWORD __stdcall hllapi_get_revision(void); | ||
111 | + LIB3270_EXPORT DWORD __stdcall hllapi_get_datadir(LPSTR datadir); | ||
112 | + | ||
113 | + LIB3270_EXPORT DWORD __stdcall hllapi_connect(LPSTR uri, WORD wait); | ||
114 | + LIB3270_EXPORT DWORD __stdcall hllapi_disconnect(void); | ||
115 | + LIB3270_EXPORT DWORD __stdcall hllapi_get_message_id(void); | ||
116 | + LIB3270_EXPORT DWORD __stdcall hllapi_is_connected(void); | ||
117 | + LIB3270_EXPORT DWORD __stdcall hllapi_get_state(void); | ||
118 | + LIB3270_EXPORT DWORD __stdcall hllapi_get_screen_at(WORD row, WORD col, LPSTR buffer); | ||
119 | + LIB3270_EXPORT DWORD __stdcall hllapi_get_screen(WORD pos, LPSTR buffer, WORD len); | ||
120 | + LIB3270_EXPORT DWORD __stdcall hllapi_enter(void); | ||
121 | + LIB3270_EXPORT DWORD __stdcall hllapi_set_text_at(WORD row, WORD col, LPSTR text); | ||
122 | + LIB3270_EXPORT DWORD __stdcall hllapi_cmp_text_at(WORD row, WORD col, LPSTR text); | ||
123 | + LIB3270_EXPORT DWORD __stdcall hllapi_emulate_input(LPSTR buffer, WORD len, WORD pasting); | ||
124 | + LIB3270_EXPORT DWORD __stdcall hllapi_wait_for_ready(WORD seconds); | ||
125 | + LIB3270_EXPORT DWORD __stdcall hllapi_wait(WORD seconds); | ||
126 | + LIB3270_EXPORT DWORD __stdcall hllapi_pfkey(WORD key); | ||
127 | + LIB3270_EXPORT DWORD __stdcall hllapi_pakey(WORD key); | ||
128 | + LIB3270_EXPORT DWORD __stdcall hllapi_setcursor(WORD key); | ||
129 | + LIB3270_EXPORT DWORD __stdcall hllapi_getcursor(); | ||
130 | + LIB3270_EXPORT DWORD __stdcall hllapi_erase_eof(void); | ||
131 | + LIB3270_EXPORT DWORD __stdcall hllapi_print(void); | ||
104 | 132 | ||
105 | #endif // _WIN32 | 133 | #endif // _WIN32 |
106 | 134 |
src/plugins/hllapi/Makefile.in
@@ -66,23 +66,17 @@ DEBUG_CFLAGS=-DDEBUG=1 -g -Wall | @@ -66,23 +66,17 @@ DEBUG_CFLAGS=-DDEBUG=1 -g -Wall | ||
66 | LIB3270_MODE ?= Default | 66 | LIB3270_MODE ?= Default |
67 | 67 | ||
68 | ifeq ($(LIB3270_MODE),Debug) | 68 | ifeq ($(LIB3270_MODE),Debug) |
69 | - PW3270_LIBS=-L../../../.bin/Debug@DLLDIR@ -l@PACKAGE_TARNAME@ -l3270 | ||
70 | PW3270_CFLAGS=-I../../../src/include | 69 | PW3270_CFLAGS=-I../../../src/include |
71 | - LIB3270_LIBS=-L../../../.bin/Debug@DLLDIR@ -l3270 | ||
72 | LIB3270_CFLAGS=-I../../../src/include | 70 | LIB3270_CFLAGS=-I../../../src/include |
73 | endif | 71 | endif |
74 | 72 | ||
75 | ifeq ($(LIB3270_MODE),Release) | 73 | ifeq ($(LIB3270_MODE),Release) |
76 | - PW3270_LIBS=-L../../../.bin/Release@DLLDIR@ -l@PACKAGE_TARNAME@ -l3270 | ||
77 | PW3270_CFLAGS=-I../../../src/include | 74 | PW3270_CFLAGS=-I../../../src/include |
78 | - LIB3270_LIBS=-L../../../.bin/Release@DLLDIR@ -l3270 | ||
79 | LIB3270_CFLAGS=-I../../../src/include | 75 | LIB3270_CFLAGS=-I../../../src/include |
80 | endif | 76 | endif |
81 | 77 | ||
82 | ifeq ($(LIB3270_MODE),Default) | 78 | ifeq ($(LIB3270_MODE),Default) |
83 | - LIB3270_LIBS ?= `pkg-config --libs lib3270` | ||
84 | LIB3270_CFLAGS ?= `pkg-config --cflags lib3270` | 79 | LIB3270_CFLAGS ?= `pkg-config --cflags lib3270` |
85 | - PW3270_LIBS ?= `pkg-config --libs pw3270 lib3270` | ||
86 | PW3270_CFLAGS ?= `pkg-config --cflags pw3270 lib3270` | 80 | PW3270_CFLAGS ?= `pkg-config --cflags pw3270 lib3270` |
87 | endif | 81 | endif |
88 | 82 |
src/plugins/hllapi/calls.cc
@@ -37,7 +37,8 @@ | @@ -37,7 +37,8 @@ | ||
37 | 37 | ||
38 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ | 38 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
39 | 39 | ||
40 | - static session * hSession = NULL; | 40 | + static session * hSession = NULL; |
41 | + static time_t hllapi_timeout = 120; | ||
41 | 42 | ||
42 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 43 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
43 | 44 | ||
@@ -100,7 +101,7 @@ | @@ -100,7 +101,7 @@ | ||
100 | 101 | ||
101 | try | 102 | try |
102 | { | 103 | { |
103 | - rc = session::get_default()->connect(uri,wait); | 104 | + rc = session::get_default()->connect(uri,hllapi_timeout); |
104 | } | 105 | } |
105 | catch(std::exception &e) | 106 | catch(std::exception &e) |
106 | { | 107 | { |
src/plugins/hllapi/client.h
@@ -45,7 +45,7 @@ | @@ -45,7 +45,7 @@ | ||
45 | 45 | ||
46 | void * hllapi_pipe_init(const char *id); | 46 | void * hllapi_pipe_init(const char *id); |
47 | void hllapi_pipe_deinit(void *h); | 47 | void hllapi_pipe_deinit(void *h); |
48 | - const char * hllapi_pipe_get_revision(void); | 48 | + const char * hllapi_pipe_get_revision(void); |
49 | void hllapi_pipe_release_memory(void *p); | 49 | void hllapi_pipe_release_memory(void *p); |
50 | int hllapi_pipe_connect(void *h, const char *n, int wait); | 50 | int hllapi_pipe_connect(void *h, const char *n, int wait); |
51 | void hllapi_pipe_disconnect(void *h); | 51 | void hllapi_pipe_disconnect(void *h); |
src/plugins/rx3270/pluginmain.cc
@@ -90,7 +90,7 @@ | @@ -90,7 +90,7 @@ | ||
90 | LIB3270_CSTATE get_cstate(void); | 90 | LIB3270_CSTATE get_cstate(void); |
91 | int disconnect(void); | 91 | int disconnect(void); |
92 | int set_url(const char *uri); | 92 | int set_url(const char *uri); |
93 | - int connect(bool wait = true); | 93 | + int connect(void); |
94 | bool is_connected(void); | 94 | bool is_connected(void); |
95 | bool is_ready(void); | 95 | bool is_ready(void); |
96 | 96 | ||
@@ -543,9 +543,9 @@ extern "C" | @@ -543,9 +543,9 @@ extern "C" | ||
543 | return 0; | 543 | return 0; |
544 | } | 544 | } |
545 | 545 | ||
546 | - int plugin::connect(bool wait) | 546 | + int plugin::connect(void) |
547 | { | 547 | { |
548 | - return lib3270_connect(hSession,wait); | 548 | + return lib3270_connect(hSession,0); |
549 | } | 549 | } |
550 | 550 | ||
551 | bool plugin::is_connected(void) | 551 | bool plugin::is_connected(void) |