您的位置:首页 > 其它

AllJoyn-跨平台方法调用返回值为键值对(Maps)

2016-04-22 11:47 295 查看
AllJoyn-跨平台方法调用返回值为键值对(Maps)
依然以android为service,以windows为client,增加返回值为maps的方法。
service端增加:
@BusMethod
HashMap<Integer,String> catMap(String a,String b) throws BusException;
实现增加:
public HashMap<Integer,String> catMap(String a,String b){
HashMap<Integer,String> temp=new HashMap<>();
temp.put(a.length(),a);
temp.put(2,b);
return temp;
}
client增加接口方法:

<span style="white-space:pre">	</span>testIntf->AddMethod("catMap", "ss", "a{is}", "inStr1,inStr2,outStrAE", 0);
client方法调用,解析maps代码如下:
//maps
printf("%s\n",reply->GetSignature());
MsgArg *entries;
size_t num;
reply->GetArgs("a{is}", &num, &entries);
for (size_t i = 0; i < num; i++) {
char *str1;
char *str2;
uint32_t key;
status = entries[i].Get("{is}", &key, &str1);
printf("%d-%s\n", key, str1);
if (status == ER_BUS_SIGNATURE_MISMATCH) {
status = entries[i].Get("{i(ss)}", &key, &str1, &str2);
}
}
下面看下实现效果:



map里边的键值对无序的,所以出来的顺序和放入键值对的顺序不一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: