MCAPI学习笔记<二>——数据类型与属性定义

本文介绍了MCAPI中的数据接收模式,包括channels和messages模式的FIFO队列,以及如何控制队列大小。同时,讨论了Buffer管理的两种方式——messages和packet channels,并详细说明了数据类型的定义和endpoint属性,强调了属性在Channel兼容性中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.当数据到达目的endpoint后,将加入其维护的接收队列中,应用程序接收这些数据的时候对于不同的通信模式会有所不同。

channels模式将采用FIFO的方式接收。

messages模式将采用FIFO order perpriority level(优先级队列)的方式接收。

以上的FIFO队列都是限制大小的,当队列满了之后会返回错误代码或者直接阻塞。mcapi_endpoint_get/set_attribute()可用来查询或者控制给定endpoint的队列大小。

注:

l  如果应用程序在接收所有receivequeue数据之前终止了连接,那么在receive queue中的数据就会丢失。

l  直到使用mcapi_pktchan_release()来手动释放databuffer,MCAPI将会重复使用。

l  不管是哪种通信模式其函数都有阻塞与非阻塞两种模式,_i后缀用来表示非阻塞模式。

 

2.Buffer 管理

  在Buffer管理中MCAPI提供两种传输方式:MCAPImessages & MCAPI packet channels(区别之一就是是否面向连接)。

message方式的API提供”user-specifiedbuffer”通信接口:由程序员来规定buffer无需通过MCAPI 调用来分配和释放空间。

packet channels方式提供”system-specifiedbuffer”通信接口,接收方将会获得一个buffer data的地址,这个地址由当前正在运行的系统进行返回,对于packet channel来说由于接收方的buffer由系统分配,因此程序员必须调用mcapi_pktchan_release()

 

3.数据类型

为保证了MCAPI的可移植性以及与MCA的兼容性,其数据做了大量的typedef。其中以mca_开头的数据类型在mca.h中定义,整理如下:

 

4.endpoint属性

MCAPI endpointattributes 提供对endpoint特性或者状态的访问。这些属性多以#define或者typedef在头文件(mcapi.h)中定义,具体实现时可设计为只读。一些endpoint attribute必须具备Channel兼容性,即对于一个已连接成功的Channel其两端的endpoint的该属性必须具备相同值。整理如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值