AllJoyn-跨平台方法调用返回值为自定义类型
service端代码:
public class MyStruct{
@Position(0)
public String fileName;
@Position(1)
public int isoValue;
@Position(2)
public boolean dateTaken;
}
@BusMethod(replySignature = "sib")
MyStruct catStruct(String a,String b)throws BusException;
方法实现:
public MyStruct catStruct(String a,String b){
MyStruct temp=new MyStruct();
temp.fileName=a;
temp.isoValue=a.length();
temp.dateTaken=a.length()>b.length()?true:false;
return temp;
}
client端:
增加的接口方法:
testIntf->AddMethod("catStruct", "ss", "sib", "inStr1,inStr2,outStrStruct", 0);
调用:
QStatus status = remoteObj.MethodCall(INTERFACE_NAME, "catStruct", inputs, 2, reply, 5000);
解析自定义类型的数据:
//struct
struct {
char* str1;
int aInt;
bool bBool;
}myStruct;
printf("%s\n",reply->GetSignature());
reply->GetArgs("sib", &myStruct.str1, &myStruct.aInt, &myStruct.bBool);
printf("%s-%d-%s\n", myStruct.str1, myStruct.aInt, myStruct.bBool == true ? "true" : "false");
调用实现结果截图: