|
Lines 27-32
Link Here
|
| 27 |
#include "tqdbusdatalist.h" |
27 |
#include "tqdbusdatalist.h" |
| 28 |
#include "tqdbusdatamap.h" |
28 |
#include "tqdbusdatamap.h" |
| 29 |
#include "tqdbusobjectpath.h" |
29 |
#include "tqdbusobjectpath.h" |
|
|
30 |
#include "tqdbusunixfd.h" |
| 30 |
#include "tqdbusvariant.h" |
31 |
#include "tqdbusvariant.h" |
| 31 |
|
32 |
|
| 32 |
#include <tqvariant.h> |
33 |
#include <tqvariant.h> |
|
Lines 62-67
static TQT_DBusData::Type qSingleTypeForDBusSignature(char signature)
Link Here
|
| 62 |
case 'o': return TQT_DBusData::ObjectPath; |
63 |
case 'o': return TQT_DBusData::ObjectPath; |
| 63 |
case 'g': return TQT_DBusData::String; |
64 |
case 'g': return TQT_DBusData::String; |
| 64 |
case 'v': return TQT_DBusData::Variant; |
65 |
case 'v': return TQT_DBusData::Variant; |
|
|
66 |
case 'h': return TQT_DBusData::UnixFd; |
| 65 |
|
67 |
|
| 66 |
default: |
68 |
default: |
| 67 |
break; |
69 |
break; |
|
Lines 133-138
static TQValueList<TQT_DBusData> parseSignature(TQCString& signature)
Link Here
|
| 133 |
result << TQT_DBusData::fromObjectPathKeyMap( |
135 |
result << TQT_DBusData::fromObjectPathKeyMap( |
| 134 |
TQT_DBusDataMap<TQT_DBusObjectPath>(valueType)); |
136 |
TQT_DBusDataMap<TQT_DBusObjectPath>(valueType)); |
| 135 |
break; |
137 |
break; |
|
|
138 |
case TQT_DBusData::UnixFd: |
| 139 |
result << TQT_DBusData::fromUnixFdKeyMap( |
| 140 |
TQT_DBusDataMap<TQT_DBusUnixFd>(valueType)); |
| 141 |
break; |
| 136 |
default: |
142 |
default: |
| 137 |
tqWarning("TQT_DBusMarshall: unsupported map key type %s " |
143 |
tqWarning("TQT_DBusMarshall: unsupported map key type %s " |
| 138 |
"at de-marshalling", |
144 |
"at de-marshalling", |
|
Lines 186-191
static TQValueList<TQT_DBusData> parseSignature(TQCString& signature)
Link Here
|
| 186 |
result << TQT_DBusData::fromObjectPathKeyMap( |
192 |
result << TQT_DBusData::fromObjectPathKeyMap( |
| 187 |
TQT_DBusDataMap<TQT_DBusObjectPath>(valueContainer[0])); |
193 |
TQT_DBusDataMap<TQT_DBusObjectPath>(valueContainer[0])); |
| 188 |
break; |
194 |
break; |
|
|
195 |
case TQT_DBusData::UnixFd: |
| 196 |
result << TQT_DBusData::fromUnixFdKeyMap( |
| 197 |
TQT_DBusDataMap<TQT_DBusUnixFd>(valueContainer[0])); |
| 198 |
break; |
| 189 |
default: |
199 |
default: |
| 190 |
tqWarning("TQT_DBusMarshall: unsupported map key type %s " |
200 |
tqWarning("TQT_DBusMarshall: unsupported map key type %s " |
| 191 |
"at de-marshalling", |
201 |
"at de-marshalling", |
|
Lines 273-278
static TQValueList<TQT_DBusData> parseSignature(TQCString& signature)
Link Here
|
| 273 |
result << TQT_DBusData::fromObjectPath( |
283 |
result << TQT_DBusData::fromObjectPath( |
| 274 |
(TQT_DBusObjectPath())); |
284 |
(TQT_DBusObjectPath())); |
| 275 |
break; |
285 |
break; |
|
|
286 |
case TQT_DBusData::UnixFd: |
| 287 |
result << TQT_DBusData::fromUnixFd( |
| 288 |
(TQT_DBusUnixFd())); |
| 289 |
break; |
| 276 |
default: |
290 |
default: |
| 277 |
result << TQT_DBusData(); |
291 |
result << TQT_DBusData(); |
| 278 |
tqWarning("TQT_DBusMarshall: unsupported element type %s " |
292 |
tqWarning("TQT_DBusMarshall: unsupported element type %s " |
|
Lines 585-590
static TQT_DBusData qFetchParameter(DBusMessageIter *it)
Link Here
|
| 585 |
|
599 |
|
| 586 |
return TQT_DBusData::fromStruct(memberList); |
600 |
return TQT_DBusData::fromStruct(memberList); |
| 587 |
} |
601 |
} |
|
|
602 |
case DBUS_TYPE_UNIX_FD: |
| 603 |
return TQT_DBusData::fromUnixFd(TQT_DBusUnixFd(qIterGet<dbus_uint32_t>(it))); |
| 588 |
#if 0 |
604 |
#if 0 |
| 589 |
case DBUS_TYPE_INVALID: |
605 |
case DBUS_TYPE_INVALID: |
| 590 |
// TODO: check if there is better way to detect empty arrays |
606 |
// TODO: check if there is better way to detect empty arrays |
|
Lines 627-632
static void tqAppendToMessage(DBusMessageIter *it, const TQT_DBusObjectPath &pat
Link Here
|
| 627 |
dbus_message_iter_append_basic(it, DBUS_TYPE_OBJECT_PATH, &cdata); |
643 |
dbus_message_iter_append_basic(it, DBUS_TYPE_OBJECT_PATH, &cdata); |
| 628 |
} |
644 |
} |
| 629 |
|
645 |
|
|
|
646 |
static void tqAppendToMessage(DBusMessageIter *it, const TQT_DBusUnixFd &unixFd) |
| 647 |
{ |
| 648 |
const dbus_int32_t cdata = unixFd.fileDescriptor(); |
| 649 |
dbus_message_iter_append_basic(it, DBUS_TYPE_UNIX_FD, &cdata); |
| 650 |
} |
| 651 |
|
| 630 |
static const char* qDBusTypeForTQT_DBusType(TQT_DBusData::Type type) |
652 |
static const char* qDBusTypeForTQT_DBusType(TQT_DBusData::Type type) |
| 631 |
{ |
653 |
{ |
| 632 |
switch (type) |
654 |
switch (type) |
|
Lines 678-683
static const char* qDBusTypeForTQT_DBusType(TQT_DBusData::Type type)
Link Here
|
| 678 |
|
700 |
|
| 679 |
case TQT_DBusData::Map: |
701 |
case TQT_DBusData::Map: |
| 680 |
return DBUS_TYPE_DICT_ENTRY_AS_STRING; |
702 |
return DBUS_TYPE_DICT_ENTRY_AS_STRING; |
|
|
703 |
|
| 704 |
case TQT_DBusData::UnixFd: |
| 705 |
return DBUS_TYPE_UNIX_FD_AS_STRING; |
| 681 |
} |
706 |
} |
| 682 |
return 0; |
707 |
return 0; |
| 683 |
} |
708 |
} |
|
Lines 991-996
static void qDBusObjectPathKeyMapToIterator(DBusMessageIter* it,
Link Here
|
| 991 |
dbus_message_iter_close_container(it, &sub); |
1016 |
dbus_message_iter_close_container(it, &sub); |
| 992 |
} |
1017 |
} |
| 993 |
|
1018 |
|
|
|
1019 |
static void qDBusUnixFdKeyMapToIterator(DBusMessageIter* it, const TQT_DBusData& var) |
| 1020 |
{ |
| 1021 |
DBusMessageIter sub; |
| 1022 |
TQCString sig; |
| 1023 |
|
| 1024 |
TQT_DBusDataMap<TQT_DBusUnixFd> map = var.toUnixFdKeyMap(); |
| 1025 |
|
| 1026 |
sig += DBUS_DICT_ENTRY_BEGIN_CHAR; |
| 1027 |
sig += qDBusTypeForTQT_DBusType(map.keyType()); |
| 1028 |
|
| 1029 |
if (map.hasContainerValueType()) |
| 1030 |
sig += map.containerValueType().buildDBusSignature(); |
| 1031 |
else |
| 1032 |
sig += qDBusTypeForTQT_DBusType(map.valueType()); |
| 1033 |
sig += DBUS_DICT_ENTRY_END_CHAR; |
| 1034 |
|
| 1035 |
dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub); |
| 1036 |
|
| 1037 |
TQT_DBusDataMap<TQT_DBusUnixFd>::const_iterator mit = map.begin(); |
| 1038 |
for (; mit != map.end(); ++mit) |
| 1039 |
{ |
| 1040 |
DBusMessageIter itemIterator; |
| 1041 |
dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY, |
| 1042 |
0, &itemIterator); |
| 1043 |
|
| 1044 |
dbus_message_iter_append_basic(it, DBUS_TYPE_UNIX_FD, &(mit.key())); |
| 1045 |
qDBusDataToIterator(&itemIterator, mit.data()); |
| 1046 |
|
| 1047 |
dbus_message_iter_close_container(&sub, &itemIterator); |
| 1048 |
} |
| 1049 |
|
| 1050 |
dbus_message_iter_close_container(it, &sub); |
| 1051 |
} |
| 1052 |
|
| 994 |
static void qDBusDataToIterator(DBusMessageIter* it, const TQT_DBusData& var) |
1053 |
static void qDBusDataToIterator(DBusMessageIter* it, const TQT_DBusData& var) |
| 995 |
{ |
1054 |
{ |
| 996 |
switch (var.type()) |
1055 |
switch (var.type()) |
|
Lines 1048-1053
static void qDBusDataToIterator(DBusMessageIter* it, const TQT_DBusData& var)
Link Here
|
| 1048 |
case TQT_DBusData::ObjectPath: |
1107 |
case TQT_DBusData::ObjectPath: |
| 1049 |
tqAppendToMessage(it, var.toObjectPath()); |
1108 |
tqAppendToMessage(it, var.toObjectPath()); |
| 1050 |
break; |
1109 |
break; |
|
|
1110 |
case TQT_DBusData::UnixFd: { |
| 1111 |
tqAppendToMessage(it, var.toUnixFd()); |
| 1112 |
break; |
| 1113 |
} |
| 1051 |
case TQT_DBusData::List: { |
1114 |
case TQT_DBusData::List: { |
| 1052 |
TQT_DBusDataList list = var.toList(); |
1115 |
TQT_DBusDataList list = var.toList(); |
| 1053 |
|
1116 |
|
|
Lines 1100-1105
static void qDBusDataToIterator(DBusMessageIter* it, const TQT_DBusData& var)
Link Here
|
| 1100 |
case TQT_DBusData::ObjectPath: |
1163 |
case TQT_DBusData::ObjectPath: |
| 1101 |
qDBusObjectPathKeyMapToIterator(it, var); |
1164 |
qDBusObjectPathKeyMapToIterator(it, var); |
| 1102 |
break; |
1165 |
break; |
|
|
1166 |
case TQT_DBusData::UnixFd: |
| 1167 |
qDBusUnixFdKeyMapToIterator(it, var); |
| 1168 |
break; |
| 1103 |
default: |
1169 |
default: |
| 1104 |
tqWarning("TQT_DBusMarshall: unhandled map key type %s " |
1170 |
tqWarning("TQT_DBusMarshall: unhandled map key type %s " |
| 1105 |
"at marshalling", |
1171 |
"at marshalling", |