Commit 4d99a85889712ca8b5f0428ab17bd5e89868da37

Authored by Perry Werneck
1 parent 5deea099

Incluindo método para obter a URL do host

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
... ... @@ -77,6 +77,7 @@
77 77 HLLAPI_PACKET_GET_WIDTH,
78 78 HLLAPI_PACKET_GET_HEIGHT,
79 79 HLLAPI_PACKET_GET_LENGTH,
  80 + HLLAPI_PACKET_GET_HOST,
80 81  
81 82 HLLAPI_PACKET_INVALID
82 83  
... ...
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 {
... ...