Commit cd3c0d8f7c1336c92fc88e46a2ee6ef7f1189d72
1 parent
8321d0f5
Exists in
master
and in
5 other branches
Adicionando suporte D-Bus para a função set_unlock_delay.
Showing
13 changed files
with
95 additions
and
1 deletions
Show diff stats
pw3270.spec.in
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 | +} | ... | ... |