pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolCache.java
@@ -6,35 +6,53 @@
import java.util.Map;
public class ProtocolCache {
   //本系统中,Driver在单线程中运行,所以只用一个实例
   private static final HashMap<String, Driver> drivers = new HashMap<>() ;
    //注解与处理类的映射
   //注解与处理类的映射
   private static final HashMap<String, AnnotationDriverVo> driverMap = new HashMap<>() ;
   private static final HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap = new HashMap<>() ;
   private static final HashMap<String, AnnotationOnLineVo> onLineMap = new HashMap<>() ;
   /**
    * 在单线程环境中运行
    * 通过协议驱动的类名,得到类单例
    * @param protocolName 协议名称
    * @param protocolVersion 协议版本号
    * @return 驱动
    * @throws Exception 异常
    */
   public static Driver getDriver(String protocolName) throws Exception{
      Driver dri = drivers.get(protocolName);
   public static Driver getDriver(String protocolName, short protocolVersion) throws Exception{
      Driver dri = drivers.get(protocolName + protocolVersion) ;
      if(dri == null){
         AnnotationDriverVo vo = driverMap.get(protocolName) ;
         AnnotationDriverVo vo = driverMap.get(protocolName + protocolVersion) ;
         if(vo != null && vo.clazz != null){
            dri = (Driver)vo.clazz.getDeclaredConstructor().newInstance();
            //dri = (Driver)vo.clazz.newInstance() ;
            drivers.put(protocolName, dri) ;
            drivers.put(protocolName + protocolVersion, dri) ;
         }
      }
      return dri ;
   }
   /**
    * 在单线程环境中运行
    * 通过协议驱动的类名,得到类单例
    * @param protocolNameVersion 协议名称和版本号
    * @return 驱动
    * @throws Exception 异常
    */
   public static Driver getDriver(String protocolNameVersion) throws Exception{
      Driver dri = drivers.get(protocolNameVersion) ;
      if(dri == null){
         AnnotationDriverVo vo = driverMap.get(protocolNameVersion) ;
         if(vo != null && vo.clazz != null){
            dri = (Driver)vo.clazz.getDeclaredConstructor().newInstance();
            drivers.put(protocolNameVersion, dri) ;
         }
      }
      return dri ;
   }
   /**
    * 得到驱动的数量,即中间件支持的协议数量
    * @return 驱动总数
@@ -46,7 +64,7 @@
         return drivers.size() ;
      }
   }
   /**
    * 得到第一个驱动
    * @return 驱动
@@ -79,13 +97,25 @@
      return onLineMap;
   }
   /*
   public static void main(String[] args){
      HashMap<String, Integer> mp = new HashMap<>() ;
      mp.put("a1", 1) ;
      mp.put("a2", 2) ;
      List<String> list = new ArrayList<>(mp.keySet()) ;
      System.out.println(list);
   protected AnnotationDriverVo getAnnotationDriver(String protocolName, Short protocolVersion){
      return driverMap.get(protocolName + "" + protocolVersion) ;
   }
   */
}
   protected static AnnotationPrefixedDataAvailableVo getAnnotationPrefixedDataAvailable(String protocolName, Short protocolVersion){
      return prefixedDataAvailableMap.get(protocolName + "" + protocolVersion) ;
   }
   protected static AnnotationOnLineVo getAnnotationOnLine(String protocolName, Short protocolVersion){
      return onLineMap.get(protocolName + "" + protocolVersion) ;
   }
    /*
    public static void main(String[] args){
        HashMap<String, Integer> mp = new HashMap<>() ;
        mp.put("a1", 1) ;
        mp.put("a2", 2) ;
        List<String> list = new ArrayList<>(mp.keySet()) ;
        System.out.println(list);
    }
    */
}