码迷,mamicode.com
首页 > 其他好文 > 详细

Dante 路由批处理小析

时间:2015-04-01 11:27:13      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:接口   开发   路由   设备   

前言

使用dante 设备进行路由的时候,官方给出的demo API 接口是点对点提交subscription 。 当网络中的设备和所需要路由的信道快速增加时,点对点的遍历提交subscription 的开发方式就显得有点力不从心。

问题

有没有一种方式可以快速将所有的接受信道直接提交的发送信道上的方法呢?
经过一番调查研究之后,dante SDK 头文件的 routing_batch.h进入了我的视角
下面主要是是对routing_batch.h文件当中的官方说明做个汉化和补充,英文较好的童鞋,请自行绕过

routing_batch 主要功能

routing_batch 提供面向批处理的路由类型和定义。这些功能允许高效的配置设备的多方面功能。批处理功能(和方式)和普通情况下运行路由API略有不同

  • 在发送批处理配置消息之前,routing_batch 是不需要获取设备的性能(capabilities)。然而,如果未获取到设备性能信息,routing_batch API将不提供任何错误检查(用于信道的ID等),或试图更新设备内部状态。请注意,对于远程设备必须优先解决了设备的IP地址问题才能执行批处理操作。

  • API 不会在函数内部拷贝任何由主机应用程序提供的批处理数据。但假定这些信息(传参到API里面的数据)将继续存在并保持有效,直至该请求已经完成。因此,主机应用程序不能改变或释放提供了批处理数据,直到完成回调被称为或主机应用程序已经明确通过功能dr_device_cancel_request()函数取消了请求。此要求是必要的,因为该API为了彻底配置设备可能需要发送和接收的多个消息。

订阅 批处理

aud_error_t
dr_device_batch_subscribe
(
    dr_device_t * device,
    dr_device_response_fn * response_fn,
    dante_request_id_t * request_id,
    uint16_t num_subscriptions,
    dr_batch_subscription_t * subscriptions
);

相关说明

  • 对设备提供批 subscriptions 操作
    *
    • @device 需要配置的设备句柄
    • @response_fn 函数执行完之后的回调函数
    • @request_id 请求标识符
    • @num_subscriptions 批处理的subscriptions 的数量
    • @subscriptions 批处理过程中的subscriptions. 一定不能为空

备注

*API,使用的是subscriptions的指针拷贝(浅拷贝),但没有拷贝数组内容(深拷贝)。在dr_device_batch_subscribe正在处理的过程中,参数指针不能被释放或者修改。否者函数将出现异常。

发送信道标签 批处理

aud_error_t
dr_device_batch_txlabel
(
    dr_device_t * device,
    dr_device_response_fn * response_fn,
    dante_request_id_t * request_id,
    uint16_t num_labels,
    const dr_batch_txlabel_t * labels
);

相关说明

  • 发送信道标签 批处理
    • @device 需要配置的设备句柄
    • @response_fn 函数执行完之后的回调函数
    • @request_id 请求标识符
    • @num_labels 需要批处理的标签数量
    • @labels 批操作中的标签. 一定不能为空

备注:

函数执行过程中,未完成回调之前,请勿修改参数内容(多线程不安全)。请参考dr_device_batch_subscribe的备注说明

接受信道标签 批处理

aud_error_t
dr_device_batch_rxlabel
(
    dr_device_t * device,
    dr_device_response_fn * response_fn,
    dante_request_id_t * request_id,
    uint16_t num_labels,
    const dr_batch_rxlabel_t * labels
);

相关说明

  • 接受信道标签 批处理

    • @device 需要配置的设备句柄
    • @response_fn 函数执行完之后的回调函数
    • @request_id 请求标识符
    • @num_labels 需要批处理的标签数量
    • @labels 批操作中的标签. 一定不能为空

备注:

函数执行过程中,未完成回调之前,请勿修改参数内容(多线程不安全)。请参考dr_device_batch_subscribe的备注说明

发送流 批处理

aud_error_t
dr_device_batch_txflow
(
    dr_device_t * device,
    dr_device_response_fn * response_fn,
    dante_request_id_t * request_id,
    uint16_t num_flows,
    const dr_batch_txflow_t * flows
);

相关说明

流的批处理

  • @device 需要配置的设备句柄
  • @response_fn 函数执行完之后的回调函数
  • @request_id 请求标识符
  • @num_flows 需要批处理的“流”数量
  • @flows “流”句柄. 一定不能为空

备注:

函数执行过程中,未完成回调之前,请勿修改参数内容(多线程不安全)。请参考dr_device_batch_subscribe的备注说明

Dante 路由批处理小析

标签:接口   开发   路由   设备   

原文地址:http://blog.csdn.net/leos_blog/article/details/44803335

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!