using JTNE.Protocol.Interfaces; using JTNE.Protocol.Internal; using JTNE.Protocol.MessageBody; using System; using System.Text; namespace JTNE.Protocol { /// /// /// public class JTNEGlobalConfigs { private static readonly Lazy instance = new Lazy(() => new JTNEGlobalConfigs()); private JTNEGlobalConfigs() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding = Encoding.GetEncoding("GB18030"); SkipCRCCode = false; DeviceMsgSNDistributed = new DefaultDeviceMsgSNDistributedImpl(); PlatformMsgSNDistributed = new DefaultPlatformMsgSNDistributedImpl(); } /// /// 字符串编码,默认 GB18030 /// public Encoding Encoding { get; } /// /// /// public static JTNEGlobalConfigs Instance { get { return instance.Value; } } /// /// 设备流水号 /// public IDeviceMsgSNDistributed DeviceMsgSNDistributed { get; private set; } /// /// 平台流水号 /// public IPlatformMsgSNDistributed PlatformMsgSNDistributed { get; private set; } /// /// 跳过校验码 /// 测试的时候需要手动修改值,避免验证 /// 默认:false /// public bool SkipCRCCode { get; private set; } /// /// 消息数据体加密算法 /// RSA=>IJTNEEncryptImpl /// AES=>IJTNEEncryptImpl /// public Func DataBodiesEncrypt { get; private set; } /// /// 平台登入加密算法 /// RSA=>IJTNEEncryptImpl /// AES=>IJTNEEncryptImpl /// public Func PlatformLoginEncrypt { get; private set; } /// /// 注册自定义消息 /// /// /// /// public JTNEGlobalConfigs Register_CustomMsgId(byte customMsgId) where TJTNEBodies : JTNEBodies { JTNEMsgIdFactory.SetMap(customMsgId); return instance.Value; } /// /// 重写消息 /// /// /// /// public JTNEGlobalConfigs Overwrite_MsgId(byte overwriteMsgId) where TJTNEBodies : JTNEBodies { JTNEMsgIdFactory.ReplaceMap(overwriteMsgId); return instance.Value; } /// /// /// /// 自定义类型编码 /// 继承JTNE.Protocol.MessageBody.JTNE_0x02_CustomBody /// public JTNEGlobalConfigs Register_JTNE0x02CustomBody(byte typeCode, Type type) { if (!JTNE_0x02_CustomBody.CustomTypeCodes.ContainsKey(typeCode)) { JTNE_0x02_CustomBody.CustomTypeCodes.Add(typeCode, type); } return instance.Value; } /// /// /// /// 自定义类型编码 /// 继承JTNE.Protocol.MessageBody.JTNE_0x81_Body /// public JTNEGlobalConfigs Register_JTNE0x81CustomBody(byte typeCode, Type type) { if (!JTNE_0x81_Body.JTNE_0x81Method.ContainsKey(typeCode)) { JTNE_0x81_Body.JTNE_0x81Method.Add(typeCode, type); } return instance.Value; } /// /// /// /// 自定义类型编码 /// 继承JTNE.Protocol.MessageBody.JTNE_0x81_Body /// public JTNEGlobalConfigs Register_JTNE0x81CustomDepenedBody(byte DependerParamId, byte DependedParamId) { if (!JTNE_0x81_Body.JTNE_0x81LengthOfADependOnValueOfB.ContainsKey(DependerParamId)) { JTNE_0x81_Body.JTNE_0x81LengthOfADependOnValueOfB.Add(DependerParamId, DependedParamId); } return instance.Value; } /// /// /// /// 自定义类型编码 /// 继承JTNE.Protocol.MessageBody.JTNE_0x81_Body /// public JTNEGlobalConfigs Register_JTNE0x82CustomBody(byte typeCode, Type type) { if (!JTNE_0x82_Body.JTNE_0x82Method.ContainsKey(typeCode)) { JTNE_0x82_Body.JTNE_0x82Method.Add(typeCode, type); } return instance.Value; } /// /// 设置跳过校验码 /// 场景:测试的时候,可能需要手动改数据,所以测试的时候有用 /// /// /// public JTNEGlobalConfigs SetSkipCRCCode(bool skipCRCCode) { instance.Value.SkipCRCCode = skipCRCCode; return instance.Value; } /// /// 设置设备流水号 /// /// /// public JTNEGlobalConfigs SetDeviceMsgSNDistributed(IDeviceMsgSNDistributed deviceMsgSNDistributed) { instance.Value.DeviceMsgSNDistributed = deviceMsgSNDistributed; return instance.Value; } /// /// 设置平台流水号 /// /// /// public JTNEGlobalConfigs SetPlatformMsgSNDistributed(IPlatformMsgSNDistributed platformMsgSNDistributed) { instance.Value.PlatformMsgSNDistributed = platformMsgSNDistributed; return instance.Value; } /// /// 设置消息数据体加密算法 /// /// /// public JTNEGlobalConfigs SetDataBodiesEncrypt(Func dataBodiesEncrypt) { instance.Value.DataBodiesEncrypt = dataBodiesEncrypt; return instance.Value; } /// /// 设置平台登入加密算法 /// /// /// public JTNEGlobalConfigs SetPlatformLoginEncrypt(Func platformLoginEncrypt) { instance.Value.PlatformLoginEncrypt = platformLoginEncrypt; return instance.Value; } } }