Esempio n. 1
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (CanWatch != false)
            {
                hash ^= CanWatch.GetHashCode();
            }
            if (MaxAudiences != 0)
            {
                hash ^= MaxAudiences.GetHashCode();
            }
            if (DelayMS != 0)
            {
                hash ^= DelayMS.GetHashCode();
            }
            if (CacheMS != 0)
            {
                hash ^= CacheMS.GetHashCode();
            }
            if (BufferBytes != 0)
            {
                hash ^= BufferBytes.GetHashCode();
            }
            if (LastSize != 0)
            {
                hash ^= LastSize.GetHashCode();
            }
            if (NeedReplay != false)
            {
                hash ^= NeedReplay.GetHashCode();
            }
            return(hash);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets next packet data.
        /// </summary>
        private async Task <byte[]> NextBuffer(uint length = 512)
        {
            var buffer = await socket.InputStream.ReadAsync(new Windows.Storage.Streams.Buffer(length), length, InputStreamOptions.None);

            var resultArray = BufferBytes.Get(buffer);

            return(resultArray);
        }
Esempio n. 3
0
 public void ClearMatchUnits()
 {
     MatchUnits.Clear();
     BufferBytes.Clear();
     MaxDataLengthBytes     = 0;
     MinDataLengthBytes     = 0;
     ScanResult             = new ScanResult();
     BufferAsString         = string.Empty;
     ContainsTextSearchUnit = false;
     MatchUnitIsAddeded     = false;
 }
Esempio n. 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ExFatBootSector"/> class.
        /// </summary>
        internal ExFatBootSector(byte[] bytes)
        {
            _bytes = bytes;
            var buffer = new Buffer(_bytes);

            JmpBoot              = new BufferBytes(buffer, 0, 3);
            OemName              = new BufferByteString(buffer, 3, 8);
            VolumeLengthSectors  = new BufferUInt64(buffer, 72);
            FatOffsetSector      = new BufferUInt32(buffer, 80);
            FatLengthSectors     = new BufferUInt32(buffer, 84);
            ClusterOffsetSector  = new BufferUInt32(buffer, 88);
            ClusterCount         = new BufferUInt32(buffer, 92);
            RootDirectoryCluster = new BufferUInt32(buffer, 96);
            VolumeSerialNumber   = new BufferUInt32(buffer, 100);
            FileSystemRevision   = new BufferUInt16(buffer, 104);
            VolumeFlags          = new BufferUInt16(buffer, 106);
            BytesPerSector       = new CacheValueProvider <uint>(new ShiftValueProvider(new BufferUInt8(buffer, 108)));
            SectorsPerCluster    = new ShiftValueProvider(new BufferUInt8(buffer, 109));
            NumberOfFats         = new BufferUInt8(buffer, 110);
            DriveSelect          = new BufferUInt8(buffer, 111);
            PercentInUse         = new BufferUInt8(buffer, 112);
        }
Esempio n. 5
0
        public virtual void CheckData()
        {
            ScanResult = new ScanResult();

            if (MinDataLengthBytes > BufferBytes.Count)
            {
                return;
            }

            foreach (AbstractMatchUnitCore match_unit in MatchUnits)
            {
                if (match_unit is MatchUnitText)
                {
                    ((MatchUnitText)match_unit).Checking(BufferAsString);
                }
                else if (match_unit is MatchUnitRegexp)
                {
                    ((MatchUnitRegexp)match_unit).Checking(BufferAsString);
                }
                else if (match_unit is MatchUnitBytes)
                {
                    ((MatchUnitBytes)match_unit).Checking(BufferBytes.ToArray());
                }
                else
                {
                    throw new Exception("Тип поискового юнита не определён");
                }

                if (match_unit.SuccessMatch)
                {
                    ScanResult.MatchUnit = match_unit;

                    break;
                }
            }
        }
Esempio n. 6
0
        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;
                }
            }
        }