连接同步组件
本节介绍 AutoCode 连接同步组件。
创建连接同步组件
在组件编辑器视图工具中选择:Constructor -> ConnSyncMCom。
在组件编辑器视图中绘制连接同步组件,新创建的组件模型如下:
注意:
连接同步组件可以新建事件。新建事件输入端口自动设置为 BindComPort (绑定第一个事件,由第一个事件输入端口调用);连接同步所有输出端口要连接到同一个服务的 CALL 端口。
连接同步组件介绍
功能描述
连接同步组件用于客户端连接或重连时,向服务端发起 CALL 调用请求,同步一个或一组数据资源,数据将从相应资源订阅接口返回,从而实现在客户端连接时使用同一套资源订阅接口从服务端同步数据。
该组件需同时订阅相应资源配合使用,建模模型如下。
接口原型如下,详细信息请参考 vsoa_client_auto_consistent:
bool vsoa_client_auto_consistent(vsoa_client_auto_t *cliauto, char *const urls[], int url_cnt, unsigned int rpc_timeout);
组件模型
连接同步组件是多通道管道组件:只有第一个事件输入端口允许外部连接;组件中其它事件为 COM_BIND 事件,第一个事件触发组件其它事件执行。 连接同步组件所有事件输出端口都是 VSOA-CALL 类型,输出必须是连接到同一服务,即向同一服务发起 VSOA-CALL 请求。
连接同步组件配制 autoSync = true 的事件,同时满足以下条件的将使用 vsoa_client_auto_consistent 自动同步数据:
- 事件输出端口 VSOA-CALL 为 GET 方法,无请求参数;
- 服务中订阅了同一 URL 资源。
连接同步组件配制 autoSync = true 的事件 ,如果不满足以上条件,生成代码时将出错。 连接同步组件配制 autoSync = false 的事件按普通事件处理。
组件属性
连接同步组件端口属性配置如下:
表 1 端口属性详细说明
I/O 类型 | 名称 | 值 | 选项 | 缺省值 | 是否可配置 | 说明 |
---|---|---|---|---|---|---|
Input | Type | SYS_CONN | / | SYS_CONN | no | 输入端口类型 |
Input | Service | serc2 | / | 自动配置 | no | 客户端连接的服务,输出端口连接到 VSOA-CALL 端口时自动配置 |
Input | Reentrant | true | true, false | true | yes | 会话可重入选项(参考客户端连接事件) |
Input | Option | connect | connect, disconnect, change, firstConnect | connect | yes | 事件触发类型(参考客户端连接事件) |
Output | Type | VSOA | / | VSOA | no | 输出端口类型 |
Output | AutoSync | true | true, false | true | yes | true - 时启动自动同步模式 |
组件事件输出端口 AutoSync
属性设置为 true, 同时组件建模满足自动同步资源条件时,组件自动同步数据(CALL 请求的资源从相应的订阅接口返回);属性设置为 false, 该事件将生成正常调用请求及响应接口,用户可以在响应接口处理数据。 当事件 AutoSync
属性开启,事件不满足自动同步条件时,生成代码将输出错误提示。
启用同步应满足的条件 :
- 该事件输出端口是 GET 方法;
- 该事件输出端口没有配置请求数据(send jstruct);
- 服务同时订阅了该事件输出端口相同的资源;
注意:
连接同步组件每个事件可以独立配置
AutoSync
属性。
事件接口
接口原型如下:
ac_result_t serc1_com2_event1_sconnn_vreq_io(ac_t *acs, bool connect);
ac_result_t serc1_com2_event1_vres_i(ac_t *acs, vsoa_header_t *hdr, serc2_elemb_t *param, void *data, size_t len);
说明:
连接同步组件事件输出端口
AutoSync
属性配置为true
且自动同步属性有效时,AutoCode 不会为该组件事件创建用户接口;当自动同步功能无效时,该事件将创建 CALL 请求与响应接口中。
示例
- 服务模型
- serc1 组件模型
- serc2 组件模型