Example #1
0
        public void InsertSection(FileSection fileSection)
        {
            if (fileSection == null)
            {
                return;
            }

            if (FileSections[fileSection.SectionNumber] == null)
            {
                FileSections[fileSection.SectionNumber] = fileSection;
            }

            if (fileSection.SectionNumber == LowestSectionNotReceived)
            {
                LowestSectionNotReceived++;
                while (LowestSectionNotReceived < FileSections.Length ? FileSections[LowestSectionNotReceived] != null : false)
                {
                    LowestSectionNotReceived++;
                }
            }

            if (LowestSectionNotReceived == FileSections.Length)
            {
                Completed = true;
            }
        }
Example #2
0
 public File(int numberOfSections)
 {
     NumberOfSections         = numberOfSections;
     FileSections             = new FileSection[NumberOfSections];
     LowestSectionNotReceived = 0;
     Completed = false;
 }
Example #3
0
        public void ReceivePush(FileSection fileSection)
        {
            if (_largestPushReceived == null)
            {
                _largestPushReceived = fileSection;
            }
            else if (fileSection.SectionNumber > _largestPushReceived.SectionNumber)
            {
                _largestPushReceived = fileSection;
            }

            if (!File.Completed)
            {
                _sectionsToInsert.Add(fileSection);
            }
        }
Example #4
0
        public void Pull()
        {
            if (File.Completed)
            {
                return;
            }

            //User user = RandomContact();
            foreach (User contact in ContactList)
            {
                if (Functions.Random.Next(2) == 1)
                {
                    FileSection fileSection = contact.ReceivePull(File.LowestSectionNotReceived);
                    if (fileSection != null)
                    {
                        _sectionsToInsert.Add(fileSection);
                    }
                }
            }
        }
Example #5
0
 public bool HasSection(FileSection fileSection)
 {
     return(FileSections[fileSection.SectionNumber] != null);
 }