jetlinks之Codec&config(四)

jetlinks之Codec

提示:jetlinks之Codec编码器,用于元素对象的编码解密


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:jetlinks编码器,主要对各种数据类型的编码解码,
包含以下类型:
Boolean,ByteBuf,Byte,byte[],Double,Enum,Throwable,Float,Integer
,JSONArray,JSONObject,Message(消息),Payload(消息负载) 等


一、编码器

在这里插入图片描述
Decoder 解码
Encoder 编码
Codec 编码器接口定义
CodecsSupport 编码支持接口定义,支持编解码优先级排序设置
DefaultCodecsSupport 默认编码支持实现,若有具体泛型类型则按具体类型进行编解码,若无则按json进行编解码
Codecs 编码器 加载所有类型编码器,支持编码器注册, 查询等操作

        ServiceLoader
                .load(CodecsSupport.class)
                .forEach(allCodec::add);
        allCodec.sort(Comparator.comparingInt(CodecsSupport::getOrder));

二、配置

1.代码结构

在这里插入图片描述

ConfigKey 用于定义配置key,增加key的可读性,支持key,名称说明,类型设置,提供相关of构造器,
ConfigKeyValue 键值对定义,继承ConfigKey 增加value定义
ConfigStorage 配置存储器,用于定义配置存储接口以及常用方法(添加,删除,清空方法)
ConfigStorageManager 配置存储管理器
SimpleConfigKey 简单配置实现
StorageConfigurable 配置化支撑
Configurable 可配置接口定义
该包主要定义配置相关,对配置类型进行定义,配置存储管理器设定及可配置接口进行定义。
目前jetlinks-core包中主要有以下类都实现了
在这里插入图片描述

三、jetlinks的defaults默认配置

1.代码概览

在这里插入图片描述
提示:主要包含一些基础的定义

ProtocolSupport 消息协议支持接口,通过实现此接口来自定义消息协议
主要包含一些基础的定义包含 协议ID ,协议名称,说明 属性,提供 获取支持的协议类型,获取设备消息编码解码器,获取设备消息发送拦截器, 用于拦截发送消息的行为,获取默认的设备物模型编解码器,获取协议所需的配置信息定义,获取自定义设备状态检查器
ProtocolSupports 多协议支持接口 是否支持多协议

Authenticator 认证器,用于设备连接的时候进行认证,
CompositeProtocolSupport 组合协议支撑
DefaultDeviceMessageSender 消息发送器默认实现 实现消息发送器定义

2.消息协议

初次熟悉代码,本章仅做记录,简单理解下协议部分,等对整体有更深的认知后再进行单独学习理解
ProtocolSupport 消息协议支持接口,通过实现此接口来自定义消息协议,包含 协议ID ,协议名称,说明等属性,提供获取协议类型,编码解码器,发送拦截器,物模型等方法
CompositeProtocolSupport 组合协议支撑
在这里插入图片描述
协议实现ProtocolSupport接口
组合协议实现主要包含以下属性:
基础属性:协议ID,协议名称,协议说明
协议物模型编码器,协议配置信息定义,设备物模型定义,消息转换器定义
物模型拓展信息定义,设备消息拦截器,设备认证,设备状态检查器,初始化配置信息
方法:设备注册生效回调函数,设备注销前调用函数,当设备物模型变更时调用函数,产品注册后调用函数,产品注销前调用函数,产品物模型变更回调

ProtocolSupports 协议组定义
CompositeProtocolSupports 协议组实现,多协议设置封装,主要提供是否支持判断,协议获取等方法

3.消息发送器

DeviceMessageSender 消息发送器定义
DefaultDeviceMessageSender 消息发送器默认实现
FunctionInvokeMessageSender 通用设备功能消息发送器定义

  /**
     * 发送一个支持回复的消息.    
     */
 <R extends DeviceMessageReply> Flux<R> send(Publisher<RepayableDeviceMessage<R>> message);
     /**
     * 发送消息并自定义返回结果转换器
     */
  <R extends DeviceMessage> Flux<R> send(Publisher<? extends DeviceMessage> message, Function<Object, R> replyMapping);
   /**
     * 发送消息并获取返回
     */
    <R extends DeviceMessage> Flux<R> send(DeviceMessage message);
       /**
     * 发送消息后返回结果,不等待回复
     */
    default Mono<Void> sendAndForget(DeviceMessage message) {
    }
        /**
     * 发送{@link org.jetlinks.core.message.function.FunctionInvokeMessage}消息更便捷的API
     */
 FunctionInvokeMessageSender invokeFunction(String function);
     /**
     * 发送{@link org.jetlinks.core.message.property.ReadPropertyMessage}消息更便捷的API
     */
    ReadPropertyMessageSender readProperty(String... property);

FunctionInvokeMessageSender 通用消息发送器 理解:为自定义发送消息提供的简便API
在这里插入图片描述
该接口主要提供了以下方法:
消息回调,header设置,消息ID设置,消息参数添加,消息参数集合设置,消息发送器检查(检查相关设备操作配置等是否完善),有回复发送,异步发送(忽略返回)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值