类 AbstractProtocolResolver<T>

java.lang.Object
com.walker.tcp.protocol.AbstractProtocolResolver<T>
所有已实现的接口:
ProtocolResolver<T>
直接已知子类:
MessageProtocolResolver, StringProtocolResolver

public abstract class AbstractProtocolResolver<T> extends Object implements ProtocolResolver<T>
  • 字段详细资料

    • logger

      protected final transient org.slf4j.Logger logger
  • 构造器详细资料

    • AbstractProtocolResolver

      public AbstractProtocolResolver()
  • 方法详细资料

    • getOrder

      public int getOrder()
      从接口复制的说明: ProtocolResolver
      顺序号来排序,同时也当做唯一ID使用
      指定者:
      getOrder 在接口中 ProtocolResolver<T>
      返回:
    • setOrder

      public void setOrder(int order)
    • setName

      public void setName(String name)
    • setProtocolFeature

      public void setProtocolFeature(Object feature)
    • setDelimiter

      public void setDelimiter(String delimiter)
    • getName

      public String getName()
      从接口复制的说明: ProtocolResolver
      解析器名字
      指定者:
      getName 在接口中 ProtocolResolver<T>
      返回:
    • getProtocolNum

      public String getProtocolNum(T data, int size) throws ProtocolException
      从接口复制的说明: ProtocolResolver
      根据输入数据内容,返回协议编号
      指定者:
      getProtocolNum 在接口中 ProtocolResolver<T>
      参数:
      data - 原始消息内容
      返回:
      抛出:
      ProtocolException - 会抛出未找到协议编号异常
    • getProtocolFeature

      public Object getProtocolFeature()
      从接口复制的说明: ProtocolResolver
      返回该协议的特征,例如:有些设备通信数据包开头以IW标记,这个就是特征。有些可能没有
      指定者:
      getProtocolFeature 在接口中 ProtocolResolver<T>
      返回:
    • getDelimiter

      public String getDelimiter()
      从接口复制的说明: ProtocolResolver
      返回数据协议的结尾符号,大多数以\r\n结尾,也有#结尾等
      指定者:
      getDelimiter 在接口中 ProtocolResolver<T>
      返回:
    • onResolve

      protected abstract String onResolve(T data, int size) throws ProtocolException
      解析具体数据协议编号
      参数:
      data -
      返回:
      抛出:
      ProtocolException
    • isRequireFeatureResolve

      public boolean isRequireFeatureResolve()
      从接口复制的说明: ProtocolResolver
      是否需要再根据特征(前缀)来判断解析器类型。

      目前多个解析情况下,主要根据分隔符来确定解析器,但如果有多个解析器分隔符一样,就要再确定前缀特征才能匹配。 因此该方法设置解析器是否需要继续根据特征来判断,查找ProtocolResolverPostProcessor
      指定者:
      isRequireFeatureResolve 在接口中 ProtocolResolver<T>
      返回:
    • getRequireFeatureResolve

      public boolean getRequireFeatureResolve()
      该方法为了在界面上让freemarker展示使用
      返回:
    • getHeartBeatResponse

      public Response<?> getHeartBeatResponse()
      从接口复制的说明: ProtocolResolver
      获得一个心跳响应对象
      指定者:
      getHeartBeatResponse 在接口中 ProtocolResolver<T>
      返回:
    • doCreateOneResponse

      protected abstract Response<?> doCreateOneResponse()
      产生一个心跳响应对象
      返回:
    • setPermitNotRegisterConnect

      public void setPermitNotRegisterConnect(boolean permitNotRegisterConnect)
    • isPermitNotRegisterConnect

      public boolean isPermitNotRegisterConnect()
      判断是否允许未注册设备连接平台,如果设置为false,那么该方法将配合:isRegistered()来限制未注册设备访问。

      子类需要重新覆盖isReistered()方法。
      指定者:
      isPermitNotRegisterConnect 在接口中 ProtocolResolver<T>
      返回:
    • isRegistered

      protected boolean isRegistered(String clientId)
      该方法返回是否终端设备已经再平台注册,如果不允许“未注册设备连接”的话,需要重写该方法,确认设备列表中是否注册有该设备
      参数:
      clientId -
      返回:
    • isOnlyMatchFeature

      public boolean isOnlyMatchFeature()
      从接口复制的说明: ProtocolResolver
      仅仅依靠报文特征来获得一个完整报文,如果是返回true

      有些设备发送的数据,为了简单不会使用长报文,而且不需要处理报文合并问题,一次一个短报文, 这样就只需要根据特征区分设备信息,而且通常数据长度也在报文中,例如:充电桩。
      指定者:
      isOnlyMatchFeature 在接口中 ProtocolResolver<T>
      返回: