Commit cd3c0d8f7c1336c92fc88e46a2ee6ef7f1189d72

Authored by Perry Werneck
1 parent 8321d0f5

Adicionando suporte D-Bus para a função set_unlock_delay.

pw3270.spec.in
... ... @@ -51,7 +51,7 @@
51 51 %endif
52 52  
53 53 %if %{?suse_version} >= 1310
54   - %define _office 1
  54 + %define _office 0
55 55 %define _bldreq gtk3-devel libopenssl-devel
56 56 %endif
57 57 %endif
... ...
src/classlib/local.cc
... ... @@ -163,6 +163,7 @@
163 163 int (*_erase_eol)(H3270 *hSession);
164 164 int (*_erase_input)(H3270 *hSession);
165 165 int (*_action)(H3270 *hSession, const char *name);
  166 + int (*_set_unlock_delay)(H3270 *hSession, unsigned short ms);
166 167  
167 168 const char * (*_ebc2asc)(H3270 *hSession, unsigned char *buffer, int sz);
168 169 const char * (*_asc2ebc)(H3270 *hSession, unsigned char *buffer, int sz);
... ... @@ -231,6 +232,8 @@
231 232 { (void **) & _asc2ebc, "lib3270_asc2ebc" },
232 233  
233 234 { (void **) & _action, "lib3270_action" },
  235 + { (void **) & _set_unlock_delay, "lib3270_set_unlock_delay" },
  236 +
234 237 };
235 238  
236 239 for(unsigned int f = 0; f < (sizeof (call) / sizeof ((call)[0]));f++)
... ... @@ -518,6 +521,11 @@
518 521 return _action(hSession,name);
519 522 }
520 523  
  524 + void set_unlock_delay(unsigned short ms)
  525 + {
  526 + _set_unlock_delay(hSession,ms);
  527 + }
  528 +
521 529 };
522 530  
523 531 session * session::create_local(void) throw (std::exception)
... ...
src/classlib/remote.cc
... ... @@ -65,6 +65,7 @@
65 65 #define HLLAPI_PACKET_PRINT "print"
66 66 #define HLLAPI_PACKET_ASC2EBC "asc2ebc"
67 67 #define HLLAPI_PACKET_EBC2ASC "ebc2asc"
  68 + #define HLLAPI_PACKET_SET_UNLOCK_DELAY "setUnlockDelay"
68 69 #endif // WIN32
69 70  
70 71 #include <pw3270/class.h>
... ... @@ -182,6 +183,25 @@
182 183  
183 184 }
184 185  
  186 + void set_intval(HLLAPI_PACKET id, int value)
  187 + {
  188 + struct hllapi_packet_set_int packet;
  189 + DWORD cbSize = (DWORD) sizeof(packet);
  190 + BOOL status;
  191 +
  192 + memset(&packet,0,sizeof(packet));
  193 + packet.packet_id = id;
  194 + packet.value = value;
  195 +
  196 + status = TransactNamedPipe(hPipe,(LPVOID) &packet, cbSize, &packet, sizeof(packet), &cbSize,NULL);
  197 +
  198 + if(status)
  199 + return packet.rc;
  200 +
  201 + throw exception(GetLastError(),"%s","Transaction error");
  202 +
  203 + }
  204 +
185 205  
186 206 #elif defined(HAVE_DBUS)
187 207  
... ... @@ -350,6 +370,22 @@
350 370 return -1;
351 371 }
352 372  
  373 + void set_intval(const char *method, int value)
  374 + {
  375 + DBusMessage * outMsg = create_message(method);
  376 +
  377 + if(outMsg)
  378 + {
  379 + dbus_int32_t v = (dbus_int32_t) value;
  380 +
  381 + dbus_message_append_args(outMsg, DBUS_TYPE_INT32, &v, DBUS_TYPE_INVALID);
  382 +
  383 + DBusMessage * rspMsg = call(outMsg);
  384 + dbus_message_unref(rspMsg);
  385 +
  386 + }
  387 + }
  388 +
353 389 #else
354 390  
355 391  
... ... @@ -1516,6 +1552,11 @@
1516 1552 return (const char *) text;
1517 1553 }
1518 1554  
  1555 + void set_unlock_delay(unsigned short ms)
  1556 + {
  1557 + set_intval(HLLAPI_PACKET_SET_UNLOCK_DELAY,(int) ms);
  1558 + }
  1559 +
1519 1560 };
1520 1561  
1521 1562 session * session::create_remote(const char *session) throw (std::exception)
... ...
src/include/pw3270/class.h
... ... @@ -157,6 +157,9 @@
157 157 virtual LIB3270_MESSAGE get_program_message(void) = 0;
158 158 virtual LIB3270_SSL_STATE get_secure(void) = 0;
159 159  
  160 + // Misc
  161 + virtual void set_unlock_delay(unsigned short ms) = 0;
  162 +
160 163 // charset
161 164 #ifdef WIN32
162 165 void set_display_charset(const char *remote = 0, const char *local = "CP1252");
... ...
src/include/pw3270/ipcpackets.h
... ... @@ -72,6 +72,7 @@
72 72 HLLAPI_PACKET_FILE_TRANSFER,
73 73  
74 74 HLLAPI_PACKET_GET_SSL_STATE,
  75 + HLLAPI_PACKET_SET_UNLOCK_DELAY,
75 76  
76 77 HLLAPI_PACKET_INVALID
77 78  
... ... @@ -185,6 +186,13 @@ struct hllapi_packet_set_text
185 186 char text[1];
186 187 };
187 188  
  189 +struct hllapi_packet_set_int
  190 +{
  191 + unsigned char packet_id;
  192 + int rc;
  193 + int value;
  194 +};
  195 +
188 196 struct hllapi_packet_file_transfer
189 197 {
190 198 unsigned char packet_id;
... ...
src/java/jni3270.cbp
... ... @@ -47,6 +47,7 @@
47 47 <Unit filename="../classlib/testprogram.cc" />
48 48 <Unit filename="../include/lib3270.h" />
49 49 <Unit filename="../include/pw3270/class.h" />
  50 + <Unit filename="../include/pw3270/ipcpackets.h" />
50 51 <Unit filename="Makefile.in" />
51 52 <Unit filename="actions.cc" />
52 53 <Unit filename="clipboard.cc" />
... ...
src/java/plugin.cc
... ... @@ -343,6 +343,11 @@
343 343 return v3270_transfer_file(v3270_get_default_widget(),options,local,remote,lrecl,blksize,primspace,secspace,dft);
344 344 }
345 345  
  346 + void set_unlock_delay(unsigned short ms)
  347 + {
  348 + lib3270_set_unlock_delay(hSession, ms);
  349 + }
  350 +
346 351 int quit(void) {
347 352 gtk_main_quit();
348 353 return 0;
... ...
src/lib3270/kybd.c
... ... @@ -2977,5 +2977,8 @@ int kybd_prime(H3270 *hSession)
2977 2977 LIB3270_EXPORT void lib3270_set_unlock_delay(H3270 *session, unsigned short delay)
2978 2978 {
2979 2979 CHECK_SESSION_HANDLE(session);
  2980 +
  2981 + trace("%s(%d)",__FUNCTION__,(int) delay);
  2982 +
2980 2983 session->unlock_delay_ms = delay;
2981 2984 }
... ...
src/plugins/dbus3270/gobject.c
... ... @@ -524,6 +524,13 @@ void pw3270_dbus_print(PW3270Dbus *object, DBusGMethodInvocation *context)
524 524 dbus_g_method_return(context,lib3270_print(pw3270_dbus_get_session_handle(object)));
525 525 }
526 526  
  527 +void pw3270_dbus_set_unlock_delay(PW3270Dbus *object, int value, DBusGMethodInvocation *context)
  528 +{
  529 + lib3270_set_unlock_delay(pw3270_dbus_get_session_handle(object),(unsigned short) value);
  530 + dbus_g_method_return(context,0);
  531 +}
  532 +
  533 +
527 534 void pw3270_dbus_ebc2asc(PW3270Dbus *object, const gchar *from, DBusGMethodInvocation *context)
528 535 {
529 536 int sz = strlen(from);
... ...
src/plugins/dbus3270/pw3270dbus.xml
... ... @@ -220,6 +220,12 @@
220 220 <arg type="i" name="result" direction="out" />
221 221 </method>
222 222  
  223 + <method name="setUnlockDelay">
  224 + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
  225 + <arg type="i" name="value" direction="in" />
  226 + <arg type="i" name="result" direction="out" />
  227 + </method>
  228 +
223 229 </interface>
224 230  
225 231 </node>
... ...
src/plugins/dbus3270/service.h
... ... @@ -126,6 +126,8 @@
126 126  
127 127 void pw3270_dbus_filetransfer(PW3270Dbus *object, const gchar *local, const gchar *remote, int flags, int lrecl, int blksize, int primspace, int secspace, int dft, DBusGMethodInvocation *context);
128 128  
  129 + void pw3270_dbus_set_unlock_delay(PW3270Dbus *object, int value, DBusGMethodInvocation *context);
  130 +
129 131 G_END_DECLS
130 132  
131 133 #endif // _PW3270_DBUS_SERVICE_H
... ...
src/plugins/dbus3270/test.sh
... ... @@ -65,6 +65,9 @@ run_command()
65 65 dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.getDisplayCharset
66 66 ;;
67 67  
  68 + unlockdelay)
  69 + dbus-send --session --print-reply --dest=$DEST.$SESSION $BPATH $DEST.setUnlockDelay int32:$2
  70 + ;;
68 71  
69 72 *)
70 73 echo "Comando $1 desconhecido"
... ...
src/plugins/rx3270/pluginmain.cc
... ... @@ -154,6 +154,8 @@
154 154 int quit(void);
155 155 int action(const char *name);
156 156  
  157 + void set_unlock_delay(unsigned short ms);
  158 +
157 159 protected:
158 160  
159 161 private:
... ... @@ -836,3 +838,8 @@ int plugin::file_transfer(LIB3270_FT_OPTION options, const gchar *local, const g
836 838 {
837 839 return v3270_transfer_file(v3270_get_default_widget(),options,local,remote,lrecl,blksize,primspace,secspace,dft);
838 840 }
  841 +
  842 +void plugin::set_unlock_delay(unsigned short ms)
  843 +{
  844 + lib3270_set_unlock_delay(hSession, (unsigned short) ms);
  845 +}
... ...