16个版本
0.3.2 | 2024年5月20日 |
---|---|
0.3.1 | 2024年1月16日 |
0.2.3 | 2022年9月22日 |
0.2.2 | 2022年2月25日 |
0.1.0 | 2020年10月22日 |
#183 在 无标准库 中
10,091 每月下载量
在 19 个包中使用 (18 直接使用)
36KB
185 行
coap-message
CoAP消息抽象
此包定义了可读和可写CoAP消息的接口,这些消息用于物联网中在表示(REST)中传输状态。通过这些接口,允许独立于用于序列化和反序列化消息到协议的实际CoAP库编写CoAP服务器和客户端。
定义的特质仅覆盖CoAP在请求/响应交换级别的属性,而不覆盖特定传输的细节。特别是,它们不公开令牌、消息ID或消息类型:在某些传输中甚至不存在,通常库也不需要公开它们。同样,没有描述分配消息的方法:对于受限设备,这可能甚至不可能,而对于支持多种配置传输的CoAP库,分配的消息类型可能很容易取决于预期用途。它们也不覆盖远程地址,因为这些也是特定传输的。
该包还提供了一些类型的简单实现:[Code] for [u8],以及 [OptionNumber] for [u16]。
用法
更多示例和演示可以在coap-message-demos中找到,它说明了如何构建基于coap-message的处理程序,以及如何在实践中使用不同的CoAP实现来使用它们。其中大多数应用程序都通过coap-handler中的实现使用coap-message,这些实现为常见情况提供了快捷方式。
如果您是消息特质的实现方,您可能想看看coap-message-utils,它包含了一些有用的构建块。
错误处理
可读的消息类型设计有最小故障可能性——例如,遍历选项不能引发“消息过早结束”风格的错误,有效载荷始终“存在”(尽管可能是空的)。这编码了消息类型意味着消息有效性的概念。
坚持最小化解析循环消耗的库(如嵌入式系统中的典型情况)可以选择将格式错误表示为关键、不安全转发选项(例如,私有使用编号65535)。因为消费者在预先检查消息时必须检查所有选项,所以在执行消息之前确保错误不会被忽略。
可写消息的操作可能失败。典型的错误原因是在传输可以携带的消息大小(UDP上的路径MTU或TCP上对等方的Max-Message-Size)或分配的缓冲区大小溢出。由于某些功能(例如,未实现所有选项或代码)的实现可能导致错误,因此在尝试使用之前可以检查这些错误,因为它们使用关联的[Code]和[OptionNumber]类型,这些类型是可能失败的。
许可:MIT OR Apache-2.0
依赖项
~155KB