Commit 4d99a85889712ca8b5f0428ab17bd5e89868da37
1 parent
5deea099
Exists in
master
and in
5 other branches
Incluindo método para obter a URL do host
Showing
11 changed files
with
74 additions
and
6 deletions
Show diff stats
src/classlib/local.cc
... | ... | @@ -129,6 +129,7 @@ |
129 | 129 | int (*_disconnect)(H3270 *h); |
130 | 130 | int (*_connect)(H3270 *h,int wait); |
131 | 131 | const char (*_set_url)(H3270 *h, const char *n); |
132 | + const char * (*_get_url)(H3270 *h, char *str, int len); | |
132 | 133 | int (*_is_connected)(H3270 *h); |
133 | 134 | void (*_main_iterate)(H3270 *h, int wait); |
134 | 135 | int (*_wait)(H3270 *hSession, int seconds); |
... | ... | @@ -198,6 +199,7 @@ |
198 | 199 | { (void **) & _disconnect, "lib3270_disconnect" }, |
199 | 200 | { (void **) & _connect, "lib3270_connect" }, |
200 | 201 | { (void **) & _set_url, "lib3270_set_url" }, |
202 | + { (void **) & _get_url, "lib3270_get_url" }, | |
201 | 203 | { (void **) & _main_iterate, "lib3270_main_iterate" }, |
202 | 204 | { (void **) & _wait, "lib3270_wait" }, |
203 | 205 | { (void **) & _enter, "lib3270_enter" }, |
... | ... | @@ -300,6 +302,12 @@ |
300 | 302 | return (_set_url(hSession,uri) == 0); |
301 | 303 | } |
302 | 304 | |
305 | + string get_url() | |
306 | + { | |
307 | + char buffer[1024]; | |
308 | + return string(_get_url(hSession,buffer,sizeof(buffer))); | |
309 | + } | |
310 | + | |
303 | 311 | int disconnect(void) |
304 | 312 | { |
305 | 313 | this->lock(); | ... | ... |
src/classlib/remote.cc
... | ... | @@ -56,6 +56,8 @@ |
56 | 56 | #define HLLAPI_PACKET_GET_SSL_STATE "getSecureState" |
57 | 57 | #define HLLAPI_PACKET_IS_READY "isReady" |
58 | 58 | #define HLLAPI_PACKET_DISCONNECT "disconnect" |
59 | + #define HLLAPI_PACKET_GET_HOST "getURL" | |
60 | + #define HLLAPI_PACKET_SET_HOST "setURL" | |
59 | 61 | #define HLLAPI_PACKET_GET_CURSOR "getCursorAddress" |
60 | 62 | #define HLLAPI_PACKET_GET_WIDTH "getScreenWidth" |
61 | 63 | #define HLLAPI_PACKET_GET_HEIGHT "getScreenHeight" |
... | ... | @@ -834,7 +836,7 @@ |
834 | 836 | |
835 | 837 | #elif defined(HAVE_DBUS) |
836 | 838 | |
837 | - rc = query_intval("setHost", DBUS_TYPE_STRING, &uri, DBUS_TYPE_INVALID); | |
839 | + rc = query_intval(HLLAPI_PACKET_SET_HOST, DBUS_TYPE_STRING, &uri, DBUS_TYPE_INVALID); | |
838 | 840 | |
839 | 841 | #else |
840 | 842 | |
... | ... | @@ -846,6 +848,21 @@ |
846 | 848 | |
847 | 849 | } |
848 | 850 | |
851 | + string get_url() | |
852 | + { | |
853 | +#if defined(WIN32) | |
854 | + | |
855 | + struct hllapi_packet_query query = { HLLAPI_PACKET_GET_HOST }; | |
856 | + return query_string(&query,sizeof(query),1024); | |
857 | + | |
858 | +#elif defined(HAVE_DBUS) | |
859 | + | |
860 | + return query_string(HLLAPI_PACKET_GET_HOST); | |
861 | + | |
862 | +#else | |
863 | + return string(); | |
864 | +#endif | |
865 | + } | |
849 | 866 | |
850 | 867 | int wait_for_ready(int seconds) |
851 | 868 | { | ... | ... |
src/include/lib3270.h
... | ... | @@ -443,7 +443,7 @@ |
443 | 443 | |
444 | 444 | |
445 | 445 | /** |
446 | - * Get servic or port for the connect/reconnect operations. | |
446 | + * Get service or port for the connect/reconnect operations. | |
447 | 447 | * |
448 | 448 | * @param h Session handle. |
449 | 449 | * |
... | ... | @@ -454,6 +454,8 @@ |
454 | 454 | |
455 | 455 | LIB3270_EXPORT void lib3270_set_srvcname(H3270 *h, const char *srvc); |
456 | 456 | |
457 | + LIB3270_EXPORT const char * lib3270_get_url(H3270 *h, char *buffer, int len); | |
458 | + | |
457 | 459 | /** |
458 | 460 | * Get session options. |
459 | 461 | * | ... | ... |
src/include/pw3270/class.h
... | ... | @@ -166,7 +166,10 @@ |
166 | 166 | int connect(const char *host, time_t wait = 0); |
167 | 167 | int set_host(const char *host); |
168 | 168 | virtual int connect(void) = 0; |
169 | + | |
169 | 170 | virtual int set_url(const char *hostname) = 0; |
171 | + virtual string get_url() = 0; | |
172 | + | |
170 | 173 | virtual int disconnect(void) = 0; |
171 | 174 | virtual int wait_for_ready(int seconds) = 0; |
172 | 175 | virtual int wait(int seconds) = 0; | ... | ... |
src/include/pw3270/ipcpackets.h
src/lib3270/host.c
... | ... | @@ -219,6 +219,19 @@ static void update_host(H3270 *h) |
219 | 219 | |
220 | 220 | } |
221 | 221 | |
222 | +LIB3270_EXPORT const char * lib3270_get_url(H3270 *h, char *buffer, int len) | |
223 | +{ | |
224 | + CHECK_SESSION_HANDLE(h); | |
225 | + | |
226 | + snprintf(buffer,len,"%s://%s:%s", | |
227 | + ((h->options & LIB3270_OPTION_SSL) == 0) ? "tn3270" : "tn3270s", | |
228 | + h->host.current, | |
229 | + h->host.srvc | |
230 | + ); | |
231 | + | |
232 | + return buffer; | |
233 | +} | |
234 | + | |
222 | 235 | LIB3270_EXPORT const char * lib3270_set_url(H3270 *h, const char *n) |
223 | 236 | { |
224 | 237 | CHECK_SESSION_HANDLE(h); | ... | ... |
src/plugins/dbus3270/gobject.c
... | ... | @@ -103,7 +103,7 @@ void pw3270_dbus_connect(PW3270Dbus *object, const gchar *uri, DBusGMethodInvoca |
103 | 103 | dbus_g_method_return(context,lib3270_connect(hSession,0)); |
104 | 104 | } |
105 | 105 | |
106 | -void pw3270_dbus_set_host(PW3270Dbus *object, const gchar *uri, DBusGMethodInvocation *context) | |
106 | +void pw3270_dbus_set_ur_l(PW3270Dbus *object, const gchar *uri, DBusGMethodInvocation *context) | |
107 | 107 | { |
108 | 108 | trace("%s object=%p context=%p",__FUNCTION__,object,context); |
109 | 109 | |
... | ... | @@ -112,6 +112,17 @@ void pw3270_dbus_set_host(PW3270Dbus *object, const gchar *uri, DBusGMethodInvoc |
112 | 112 | dbus_g_method_return(context,lib3270_set_url(pw3270_dbus_get_session_handle(PW3270_DBUS(object)),uri) == NULL); |
113 | 113 | } |
114 | 114 | |
115 | +void pw3270_dbus_get_ur_l(PW3270Dbus *object, DBusGMethodInvocation *context) | |
116 | +{ | |
117 | + char buffer[1024]; | |
118 | + | |
119 | + trace("%s object=%p context=%p",__FUNCTION__,object,context); | |
120 | + | |
121 | + lib3270_get_url(pw3270_dbus_get_session_handle(PW3270_DBUS(object)),buffer,sizeof(buffer)); | |
122 | + dbus_g_method_return(context,buffer); | |
123 | +} | |
124 | + | |
125 | + | |
115 | 126 | void pw3270_dbus_disconnect(PW3270Dbus *object, DBusGMethodInvocation *context) |
116 | 127 | { |
117 | 128 | trace("%s object=%p context=%p",__FUNCTION__,object,context); | ... | ... |
src/plugins/dbus3270/pw3270dbus.xml
... | ... | @@ -14,11 +14,15 @@ |
14 | 14 | <arg type="s" name="uri" direction="in" /> |
15 | 15 | <arg type="i" name="result" direction="out" /> |
16 | 16 | </method> |
17 | - <method name="setHost"> | |
17 | + <method name="setURL"> | |
18 | 18 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> |
19 | 19 | <arg type="s" name="uri" direction="in" /> |
20 | 20 | <arg type="i" name="result" direction="out" /> |
21 | 21 | </method> |
22 | + <method name="getURL"> | |
23 | + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> | |
24 | + <arg type="s" name="uri" direction="out" /> | |
25 | + </method> | |
22 | 26 | <method name="disconnect"> |
23 | 27 | <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> |
24 | 28 | <arg type="i" name="result" direction="out" /> | ... | ... |
src/plugins/dbus3270/service.h
... | ... | @@ -66,7 +66,8 @@ |
66 | 66 | void pw3270_dbus_get_revision(PW3270Dbus *object, DBusGMethodInvocation *context); |
67 | 67 | void pw3270_dbus_quit(PW3270Dbus *object, DBusGMethodInvocation *context); |
68 | 68 | void pw3270_dbus_connect(PW3270Dbus *object, const gchar *uri, DBusGMethodInvocation *context); |
69 | - void pw3270_dbus_set_host(PW3270Dbus *object, const gchar *uri, DBusGMethodInvocation *context); | |
69 | + void pw3270_dbus_get_ur_l(PW3270Dbus *object, DBusGMethodInvocation *context); | |
70 | + void pw3270_dbus_set_ur_l(PW3270Dbus *object, const gchar *uri, DBusGMethodInvocation *context); | |
70 | 71 | void pw3270_dbus_disconnect(PW3270Dbus *object, DBusGMethodInvocation *context); |
71 | 72 | |
72 | 73 | void pw3270_dbus_get_message_id(PW3270Dbus *object, DBusGMethodInvocation *context); | ... | ... |
src/plugins/hllapi/pluginmain.c
... | ... | @@ -219,6 +219,11 @@ |
219 | 219 | ((struct hllapi_packet_text *) source->buffer)->text) != NULL); |
220 | 220 | break; |
221 | 221 | |
222 | + case HLLAPI_PACKET_GET_HOST: | |
223 | +// send_text(source,lib3270_get_host(lib3270_get_default_session_handle(),((struct hllapi_packet_text *) source->buffer)->text),-1); | |
224 | + #error Alocar buffer dinâmico | |
225 | + break; | |
226 | + | |
222 | 227 | case HLLAPI_PACKET_DISCONNECT: |
223 | 228 | send_result(source,lib3270_disconnect(lib3270_get_default_session_handle())); |
224 | 229 | break; | ... | ... |
src/pw3270/v3270/widget.c
... | ... | @@ -767,9 +767,12 @@ static void ctlr_done(H3270 *session) |
767 | 767 | |
768 | 768 | static void update_connect(H3270 *session, unsigned char connected) |
769 | 769 | { |
770 | +#ifdef DEBUG | |
771 | + char dbg[1024]; | |
772 | +#endif // DEBUG | |
770 | 773 | v3270 *widget = GTK_V3270(lib3270_get_user_data(session)); |
771 | 774 | |
772 | - trace("%s - %s",__FUNCTION__,connected ? "Connected" : "Disconnected"); | |
775 | + trace("%s - %s %s",__FUNCTION__,lib3270_get_url(session,dbg,sizeof(dbg)),connected ? "Connected" : "Disconnected"); | |
773 | 776 | |
774 | 777 | if(connected) |
775 | 778 | { | ... | ... |