AllJoyn数据传输过程

一、概述
AllJoyn提供Methods,signals,properties作为接口成员,AllJoyn APP可以使用这些接口成员来实现数据交换。应用之间交换数据必须建立AllJoun Session,除非是使用Sessionless来发送。
这里写图片描述
发送方架构

这里写图片描述
接收方架构

消息消费方通过获得远程对象的本地代理对象,通过调用本地代理对象来实现对远程对象的操作。实现数据传送。

二、通过方法实现数据传送
下面的用例通过方法调用说明数据交换:
1、提供方发送回复。
2、提供方不发送回复。
提供方发送回复流程:
这里写图片描述
消息流程如下:
1、数据的提供方和消费方连接到Alljoynrouter,执行广播和发现步骤去发现所需服务(service)。
2、提供方APP通过AllJoyn core libary注册服务对象,这一步需要在网络上公开服务对象到远程节点上。AllJoyn core libary为每一个服务对象的相关方法添加一个MethodHandler。
3、数据提供方APP绑定一个回话端口通过AllJoyn core libary的BindSessionPort API,这个调用指定会话的端口,会话选项和一个会话sessionportlistener。
4、数据提供方和消费方APP执行Alljoyn服务广播和发现去发现提供方提供的服务。
5、消费方建立一个与提供方一样的AllJoyn 会话,到现在已经建立了一个会话可以使提供方和消费方来实现数据传输。
6、消费方通过AllJoyn core libary的GetProxyBusObjcet API创建一个proxyBusObect。消费方指定一个提供方的唯一名字,对象路径,会话ID,和总线接口来使代理对象应答。
7、消费者应用程序从创建的代理对象获取总线接口以及调用一个在总线接口上方法。应用程序为这个方法提供输入参数。
8、 ProxyBusObject:MethodCall method 被调用,产生一个AllJoyn METHOD_CALLl消息的调用方法。
9、代理对象发送这个产生的METHOD_CALL消息到Alljoyn 路由上。
10、AllJoyn路由接收到这个消息,通过这条消息中的携带的会话ID,目的地等信息去确定这条消息被路由到哪里。这条消息被路由到远方的数据提供方的AllJoyn 路由上。
11、Alljoyn 路由发送的METHOD_CALL消息到远方的Alljoyn路由通过建立的会话连接,这个METHOD_CALL消息包含了序列号,服务对象路径,接口名字,方法名字,会话ID和发件人的唯一名称作为消息的头域的一部分。方法的输入参数包括在消息正文的一部分。
12、提供方路由接收到这条 METHOD_CALL消息。从这条消息包含的会话ID,目的地去确定这条消息的路由节点,在这种情况下,信息需要传送到AllJoyn core libary应用程序终结点。
13、AllJoyn路由器发送method_call消息到 AllJoyn core libary的端点。
14、AllJoyn core libary调用已注册的MethodHandler中的在接收的消息中指定的成员方法。MethodHandler调用的总线接口的服务对象中的实际的方法,接收这个方法的回复,为方法的回复产生一个METHOD_RETURN消息,发送到 AllJoyn路由。
15、AllJoyn路由接收到这个METHOD_RETURN消息,从这条消息的会话ID,目的地信息中获得这条消息的路由地址,在这种情况下,信息需要传送到AllJoyn core libary应用程序终结点。
16、提供方路由发送这条METHOD_RETURN消息到远端的AllJoyn路由通过一间来的会话连接。METHOD_RETURN包含了一条回复的数据串,会话ID,发送方的唯一名字作为这条消息头的一部分,为method_return消息的任何输出参数被指定为消息体部分。
17、消费方路由接收这条METHOD_RETURN消息,从这条消息的会话ID,目的地信息中获得这条消息的路由地址,在这种情况下,信息需要传送到AllJoyn core libary应用程序终结点。
18、AllJoyn路由发送这条METHOD_RETURN消息到应用端点,这条消息携带着输出参数应答原始 METHOD_CALL消息。

以上为Method方法的数据传输流程,其他signals,properties数据传送也差不多,请参考AllJoyn的官方文档。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值