Commit 12e3bf678ac462e5d1f209ebbcc1fd001f532a66
1 parent
93ef46b2
Exists in
master
and in
5 other branches
Melhorando objeto dbus
Showing
2 changed files
with
44 additions
and
117 deletions
Show diff stats
src/classlib/remote.cc
| @@ -229,9 +229,28 @@ | @@ -229,9 +229,28 @@ | ||
| 229 | 229 | ||
| 230 | int query_intval(const char *method) | 230 | int query_intval(const char *method) |
| 231 | { | 231 | { |
| 232 | - if(conn) | ||
| 233 | - return get_intval(call(create_message(method))); | ||
| 234 | - return -1; | 232 | + return get_intval(call(create_message(method))); |
| 233 | + } | ||
| 234 | + | ||
| 235 | + int query_intval(const char *method, int first_arg_type, ...) | ||
| 236 | + { | ||
| 237 | + va_list var_args; | ||
| 238 | + DBusMessage * msg = dbus_message_new_method_call( this->dest, // Destination | ||
| 239 | + this->path, // Path | ||
| 240 | + this->intf, // Interface | ||
| 241 | + method); // method | ||
| 242 | + | ||
| 243 | + if (!msg) | ||
| 244 | + { | ||
| 245 | + throw exception("Error creating DBUS message for method %s",method); | ||
| 246 | + return -1; | ||
| 247 | + } | ||
| 248 | + | ||
| 249 | + va_start(var_args, first_arg_type); | ||
| 250 | + dbus_message_append_args_valist(msg,first_arg_type,var_args); | ||
| 251 | + va_end(var_args); | ||
| 252 | + | ||
| 253 | + return get_intval(call(msg)); | ||
| 235 | } | 254 | } |
| 236 | 255 | ||
| 237 | #else | 256 | #else |
| @@ -412,15 +431,10 @@ | @@ -412,15 +431,10 @@ | ||
| 412 | 431 | ||
| 413 | trace("%s: Using DBUS name %s",__FUNCTION__,busname); | 432 | trace("%s: Using DBUS name %s",__FUNCTION__,busname); |
| 414 | 433 | ||
| 415 | - DBusMessage * msg = create_message("setScript"); | 434 | + const char * id = "r"; |
| 435 | + static const dbus_int32_t flag = 1; | ||
| 436 | + query_intval("setScript", DBUS_TYPE_STRING, &id, DBUS_TYPE_INT32, &flag, DBUS_TYPE_INVALID); | ||
| 416 | 437 | ||
| 417 | - if(msg) | ||
| 418 | - { | ||
| 419 | - const char * id = "r"; | ||
| 420 | - static const dbus_int32_t flag = 1; | ||
| 421 | - dbus_message_append_args(msg, DBUS_TYPE_STRING, &id, DBUS_TYPE_INT32, &flag, DBUS_TYPE_INVALID); | ||
| 422 | - get_intval(call(msg)); | ||
| 423 | - } | ||
| 424 | 438 | ||
| 425 | #else | 439 | #else |
| 426 | 440 | ||
| @@ -440,14 +454,9 @@ | @@ -440,14 +454,9 @@ | ||
| 440 | 454 | ||
| 441 | try | 455 | try |
| 442 | { | 456 | { |
| 443 | - DBusMessage * msg = create_message("setScript"); | ||
| 444 | - if(msg) | ||
| 445 | - { | ||
| 446 | - const char * id = "r"; | ||
| 447 | - static const dbus_int32_t flag = 0; | ||
| 448 | - dbus_message_append_args(msg, DBUS_TYPE_STRING, &id, DBUS_TYPE_INT32, &flag, DBUS_TYPE_INVALID); | ||
| 449 | - get_intval(call(msg)); | ||
| 450 | - } | 457 | + const char * id = "r"; |
| 458 | + static const dbus_int32_t flag = 0; | ||
| 459 | + query_intval("setScript", DBUS_TYPE_STRING, &id, DBUS_TYPE_INT32, &flag, DBUS_TYPE_INVALID); | ||
| 451 | } | 460 | } |
| 452 | catch(exception e) | 461 | catch(exception e) |
| 453 | { | 462 | { |
| @@ -490,14 +499,7 @@ | @@ -490,14 +499,7 @@ | ||
| 490 | 499 | ||
| 491 | #elif defined(HAVE_DBUS) | 500 | #elif defined(HAVE_DBUS) |
| 492 | 501 | ||
| 493 | - int rc; | ||
| 494 | - DBusMessage * msg = create_message("connect"); | ||
| 495 | - if(!msg) | ||
| 496 | - return -1; | ||
| 497 | - | ||
| 498 | - dbus_message_append_args(msg, DBUS_TYPE_STRING, &uri, DBUS_TYPE_INVALID); | ||
| 499 | - | ||
| 500 | - rc = get_intval(call(msg)); | 502 | + int rc = query_intval("connect", DBUS_TYPE_STRING, &uri, DBUS_TYPE_INVALID); |
| 501 | 503 | ||
| 502 | if(!rc && wait) | 504 | if(!rc && wait) |
| 503 | return wait_for_ready(120); | 505 | return wait_for_ready(120); |
| @@ -537,15 +539,8 @@ | @@ -537,15 +539,8 @@ | ||
| 537 | { | 539 | { |
| 538 | static const dbus_int32_t delay = 2; | 540 | static const dbus_int32_t delay = 2; |
| 539 | 541 | ||
| 540 | - DBusMessage * msg = create_message("waitForReady"); | ||
| 541 | - int rc; | ||
| 542 | - | ||
| 543 | - if(!msg) | ||
| 544 | - return -1; | 542 | + int rc = query_intval("waitForReady", DBUS_TYPE_INT32, &delay, DBUS_TYPE_INVALID); |
| 545 | 543 | ||
| 546 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &delay, DBUS_TYPE_INVALID); | ||
| 547 | - | ||
| 548 | - rc = get_intval(call(msg)); | ||
| 549 | trace("waitForReady exits with rc=%d",rc); | 544 | trace("waitForReady exits with rc=%d",rc); |
| 550 | 545 | ||
| 551 | if(rc != ETIMEDOUT) | 546 | if(rc != ETIMEDOUT) |
| @@ -677,14 +672,7 @@ | @@ -677,14 +672,7 @@ | ||
| 677 | dbus_int32_t r = (dbus_int32_t) row; | 672 | dbus_int32_t r = (dbus_int32_t) row; |
| 678 | dbus_int32_t c = (dbus_int32_t) col; | 673 | dbus_int32_t c = (dbus_int32_t) col; |
| 679 | 674 | ||
| 680 | - DBusMessage * msg = create_message("setTextAt"); | ||
| 681 | - if(msg) | ||
| 682 | - { | ||
| 683 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); | ||
| 684 | - return get_intval(call(msg)); | ||
| 685 | - } | ||
| 686 | - | ||
| 687 | - return -1; | 675 | + return query_intval("setTextAt", DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); |
| 688 | 676 | ||
| 689 | #else | 677 | #else |
| 690 | 678 | ||
| @@ -714,12 +702,7 @@ | @@ -714,12 +702,7 @@ | ||
| 714 | dbus_int32_t r = (dbus_int32_t) row; | 702 | dbus_int32_t r = (dbus_int32_t) row; |
| 715 | dbus_int32_t c = (dbus_int32_t) col; | 703 | dbus_int32_t c = (dbus_int32_t) col; |
| 716 | 704 | ||
| 717 | - DBusMessage * msg = create_message("cmpTextAt"); | ||
| 718 | - if(msg) | ||
| 719 | - { | ||
| 720 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); | ||
| 721 | - return get_intval(call(msg)); | ||
| 722 | - } | 705 | + return query_intval("cmpTextAt", DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); |
| 723 | 706 | ||
| 724 | #endif | 707 | #endif |
| 725 | 708 | ||
| @@ -782,12 +765,7 @@ | @@ -782,12 +765,7 @@ | ||
| 782 | dbus_int32_t r = (dbus_int32_t) row; | 765 | dbus_int32_t r = (dbus_int32_t) row; |
| 783 | dbus_int32_t c = (dbus_int32_t) col; | 766 | dbus_int32_t c = (dbus_int32_t) col; |
| 784 | 767 | ||
| 785 | - DBusMessage * msg = create_message("setCursorAt"); | ||
| 786 | - if(msg) | ||
| 787 | - { | ||
| 788 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_INVALID); | ||
| 789 | - return get_intval(call(msg)); | ||
| 790 | - } | 768 | + return query_intval("setCursorAt", DBUS_TYPE_INT32, &r, DBUS_TYPE_INT32, &c, DBUS_TYPE_INVALID); |
| 791 | 769 | ||
| 792 | #endif | 770 | #endif |
| 793 | 771 | ||
| @@ -806,12 +784,7 @@ | @@ -806,12 +784,7 @@ | ||
| 806 | 784 | ||
| 807 | dbus_int32_t k = (dbus_int32_t) addr; | 785 | dbus_int32_t k = (dbus_int32_t) addr; |
| 808 | 786 | ||
| 809 | - DBusMessage * msg = create_message("setCursorAddress"); | ||
| 810 | - if(msg) | ||
| 811 | - { | ||
| 812 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); | ||
| 813 | - return get_intval(call(msg)); | ||
| 814 | - } | 787 | + return query_intval("setCursorAddress", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); |
| 815 | 788 | ||
| 816 | #endif | 789 | #endif |
| 817 | 790 | ||
| @@ -841,14 +814,7 @@ | @@ -841,14 +814,7 @@ | ||
| 841 | 814 | ||
| 842 | dbus_int32_t k = (dbus_int32_t) key; | 815 | dbus_int32_t k = (dbus_int32_t) key; |
| 843 | 816 | ||
| 844 | - DBusMessage * msg = create_message("pfKey"); | ||
| 845 | - if(msg) | ||
| 846 | - { | ||
| 847 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); | ||
| 848 | - return get_intval(call(msg)); | ||
| 849 | - } | ||
| 850 | - | ||
| 851 | - return -1; | 817 | + return query_intval("pfKey", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); |
| 852 | 818 | ||
| 853 | #else | 819 | #else |
| 854 | 820 | ||
| @@ -870,13 +836,7 @@ | @@ -870,13 +836,7 @@ | ||
| 870 | 836 | ||
| 871 | dbus_int32_t k = (dbus_int32_t) key; | 837 | dbus_int32_t k = (dbus_int32_t) key; |
| 872 | 838 | ||
| 873 | - DBusMessage * msg = create_message("paKey"); | ||
| 874 | - if(msg) | ||
| 875 | - { | ||
| 876 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); | ||
| 877 | - return get_intval(call(msg)); | ||
| 878 | - } | ||
| 879 | - return -1; | 839 | + return query_intval("paKey", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); |
| 880 | 840 | ||
| 881 | #else | 841 | #else |
| 882 | 842 | ||
| @@ -904,14 +864,7 @@ | @@ -904,14 +864,7 @@ | ||
| 904 | dbus_int32_t i = (dbus_int32_t) ix; | 864 | dbus_int32_t i = (dbus_int32_t) ix; |
| 905 | dbus_int32_t v = (dbus_int32_t) value; | 865 | dbus_int32_t v = (dbus_int32_t) value; |
| 906 | 866 | ||
| 907 | - DBusMessage * msg = create_message("setToggle"); | ||
| 908 | - if(msg) | ||
| 909 | - { | ||
| 910 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &i, DBUS_TYPE_INT32, &v, DBUS_TYPE_INVALID); | ||
| 911 | - return get_intval(call(msg)); | ||
| 912 | - } | ||
| 913 | - | ||
| 914 | - return -1; | 867 | + return query_intval("setToggle", DBUS_TYPE_INT32, &i, DBUS_TYPE_INT32, &v, DBUS_TYPE_INVALID); |
| 915 | 868 | ||
| 916 | #else | 869 | #else |
| 917 | return -1; | 870 | return -1; |
| @@ -938,14 +891,7 @@ | @@ -938,14 +891,7 @@ | ||
| 938 | 891 | ||
| 939 | #elif defined(HAVE_DBUS) | 892 | #elif defined(HAVE_DBUS) |
| 940 | 893 | ||
| 941 | - DBusMessage * msg = create_message("input"); | ||
| 942 | - if(msg) | ||
| 943 | - { | ||
| 944 | - dbus_message_append_args(msg, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); | ||
| 945 | - return get_intval(call(msg)); | ||
| 946 | - } | ||
| 947 | - return -1; | ||
| 948 | - | 894 | + return query_intval("input", DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID); |
| 949 | #else | 895 | #else |
| 950 | 896 | ||
| 951 | return -1; | 897 | return -1; |
| @@ -966,14 +912,7 @@ | @@ -966,14 +912,7 @@ | ||
| 966 | 912 | ||
| 967 | dbus_int32_t k = (dbus_int32_t) baddr; | 913 | dbus_int32_t k = (dbus_int32_t) baddr; |
| 968 | 914 | ||
| 969 | - DBusMessage * msg = create_message("getFieldStart"); | ||
| 970 | - if(msg) | ||
| 971 | - { | ||
| 972 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); | ||
| 973 | - return get_intval(call(msg)); | ||
| 974 | - } | ||
| 975 | - | ||
| 976 | - return -1; | 915 | + return query_intval("getFieldStart", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); |
| 977 | 916 | ||
| 978 | #else | 917 | #else |
| 979 | 918 | ||
| @@ -995,14 +934,7 @@ | @@ -995,14 +934,7 @@ | ||
| 995 | 934 | ||
| 996 | dbus_int32_t k = (dbus_int32_t) baddr; | 935 | dbus_int32_t k = (dbus_int32_t) baddr; |
| 997 | 936 | ||
| 998 | - DBusMessage * msg = create_message("getFieldLength"); | ||
| 999 | - if(msg) | ||
| 1000 | - { | ||
| 1001 | - dbus_message_append_args(msg, DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); | ||
| 1002 | - return get_intval(call(msg)); | ||
| 1003 | - } | ||
| 1004 | - | ||
| 1005 | - return -1; | 937 | + return query_intval("getFieldLength", DBUS_TYPE_INT32, &k, DBUS_TYPE_INVALID); |
| 1006 | 938 | ||
| 1007 | #else | 939 | #else |
| 1008 | 940 | ||
| @@ -1048,14 +980,7 @@ | @@ -1048,14 +980,7 @@ | ||
| 1048 | 980 | ||
| 1049 | int set_clipboard(const char *text) | 981 | int set_clipboard(const char *text) |
| 1050 | { | 982 | { |
| 1051 | - DBusMessage * msg = create_message("setClipboard"); | ||
| 1052 | - if(msg) | ||
| 1053 | - { | ||
| 1054 | - dbus_message_append_args(msg, DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); | ||
| 1055 | - return get_intval(call(msg)); | ||
| 1056 | - } | ||
| 1057 | - | ||
| 1058 | - return -1; | 983 | + return query_intval("setClipboard", DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID); |
| 1059 | } | 984 | } |
| 1060 | #endif // HAVE_DBUS | 985 | #endif // HAVE_DBUS |
| 1061 | 986 |
src/plugins/rx3270/sample/remote.rex
| 1 | 1 | ||
| 2 | use arg uri | 2 | use arg uri |
| 3 | 3 | ||
| 4 | +trace "?R" | ||
| 5 | + | ||
| 4 | host = .rx3270~new("pw3270:a") | 6 | host = .rx3270~new("pw3270:a") |
| 5 | 7 | ||
| 6 | -say "PW3270 version is "||host~revision() | 8 | +say "PW3270 revision is "||host~revision() |
| 7 | say "Connection state is "||host~connected() | 9 | say "Connection state is "||host~connected() |
| 8 | say "Ready state is "||host~ready() | 10 | say "Ready state is "||host~ready() |
| 9 | 11 |