public void ClearMatchUnits() { MatchUnits.Clear(); BufferBytes.Clear(); MaxDataLengthBytes = 0; MinDataLengthBytes = 0; ScanResult = new ScanResult(); BufferAsString = string.Empty; ContainsTextSearchUnit = false; MatchUnitIsAddeded = false; }
public void AddToBuffer(int NewByte) { if (NewByte < 0) { return; } if (!MatchUnitIsAddeded) { throw new Exception("Список поисковых юнитов не может быть пустым"); } BufferBytes.Add((byte)NewByte); BufferAsString = ContainsTextSearchUnit ? AdapterFileReader.EncodingMode.GetString(BufferBytes.ToArray()) : string.Empty; CheckData(); if (ScanResult.SuccessMatch) { if (ScanResult.MatchUnit.ReplacementData != null) { List <byte> clear_data_list_bytes = new List <byte>(); if (ScanResult.MatchUnit.GetType().IsSubclassOf(typeof(AbstractMatchUnitText))) { clear_data_list_bytes.AddRange(AdapterFileReader.EncodingMode.GetBytes(BufferAsString.Substring(0, ScanResult.MatchUnit.IndexOf))); if (ScanResult.MatchUnit.ReplacementData.Count > 0) { clear_data_list_bytes.AddRange(ScanResult.MatchUnit.ReplacementData); } if (ScanResult.MatchUnit is MatchUnitRegexp) { clear_data_list_bytes.AddRange(AdapterFileReader.EncodingMode.GetBytes(BufferAsString.Substring(ScanResult.MatchUnit.IndexOf + ((MatchUnitRegexp)ScanResult.MatchUnit).DetectedMatch.Length))); } else { clear_data_list_bytes.AddRange(AdapterFileReader.EncodingMode.GetBytes(BufferAsString.Substring(ScanResult.MatchUnit.IndexOf + ((MatchUnitText)ScanResult.MatchUnit).SearchExpression.Length))); } } else { if (ScanResult.MatchUnit.IndexOf > 0) { clear_data_list_bytes.AddRange(BufferBytes.Take(ScanResult.MatchUnit.IndexOf)); } if (ScanResult.MatchUnit.ReplacementData.Count > 0) { clear_data_list_bytes.AddRange(ScanResult.MatchUnit.ReplacementData); } if (ScanResult.MatchUnit.IndexOf + ScanResult.MatchUnit.GetDetectedSearchData().Length < BufferBytes.Count) { clear_data_list_bytes.AddRange(BufferBytes.Skip(ScanResult.MatchUnit.IndexOf + ScanResult.MatchUnit.ReplacementData.Count)); } } int filteredDataCount = BufferBytes.Count - clear_data_list_bytes.Count; FilteredDataCounter += filteredDataCount; BufferBytes.Clear(); BufferBytes.AddRange(clear_data_list_bytes); BufferAsString = ContainsTextSearchUnit ? AdapterFileReader.EncodingMode.GetString(BufferBytes.ToArray()) : string.Empty; } } }