public void Test2() { JT808BlacklistManager jT808BlacklistManager = new JT808BlacklistManager(); jT808BlacklistManager.Add("1"); jT808BlacklistManager.Add("2"); Assert.True(jT808BlacklistManager.Contains("1")); Assert.True(jT808BlacklistManager.Contains("2")); }
private void ReaderBuffer(ref ReadOnlySequence <byte> buffer, JT808TcpSession session, out SequencePosition consumed) { SequenceReader <byte> seqReader = new SequenceReader <byte>(buffer); if (seqReader.TryPeek(out byte beginMark)) { if (beginMark != JT808Package.BeginFlag) { throw new ArgumentException("Not JT808 Packages."); } } byte mark = 0; long totalConsumed = 0; while (!seqReader.End) { if (seqReader.IsNext(JT808Package.BeginFlag, advancePast: true)) { if (mark == 1) { byte[] data = null; try { data = seqReader.Sequence.Slice(totalConsumed, seqReader.Consumed - totalConsumed).ToArray(); //过滤掉不是808标准包(14) //(头)1+(消息 ID )2+(消息体属性)2+(终端手机号)6+(消息流水号)2+(检验码 )1+(尾)1 if (data != null && data.Length > 14) { var package = Serializer.HeaderDeserialize(data); if (BlacklistManager.Contains(package.Header.TerminalPhoneNo)) { if (Logger.IsEnabled(LogLevel.Warning)) { Logger.LogWarning($"[Blacklist {session.Client.RemoteEndPoint}-{session.TerminalPhoneNo}]:{package.OriginalData.ToHexString()}"); } session.ReceiveTimeout.Cancel(); break; } # if DEBUG Interlocked.Increment(ref MessageReceiveCounter); if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"[Accept Hex {session.Client.RemoteEndPoint}-{session.TerminalPhoneNo}]:{package.OriginalData.ToHexString()},Counter:{MessageReceiveCounter}"); } #else if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"[Accept Hex {session.Client.RemoteEndPoint}-{session.TerminalPhoneNo}]:{package.OriginalData.ToHexString()}"); } #endif SessionManager.TryLink(package.Header.TerminalPhoneNo, session); Processor(session, package); } }