Incomplete files service: различия между версиями

Материал из fidoman.ru
 
(не показаны 2 промежуточные версии этого же участника)
Строка 30: Строка 30:
 
  - завершение файла, с проверкой, что всё скачано.
 
  - завершение файла, с проверкой, что всё скачано.
  
 +
=== Проверки ===
 +
- контрольные суммы по всему файлу, по отдельным участкам, по блокам (если клиентское ПО их предоставляет)
 +
- блокирование записи, если сама запись может быть проверена ко контрольным суммам и они неверны
 +
- сигнал об ошибке, если контрольная сумма может быть проверена только после нескольких записей и результат неверен (невозможно выяснить, какая запись содержала ошибку). В том числе результат записи всего файла, если контрольная сумма на весь файл.
 +
- блокирование повторных записей на один и тот же участок
 +
- частный случай предыдущего - блокирование записи в момент, когда весь файл собран
 +
 +
== Срок жизни неполного файла ==
 +
 +
Неполные файлы могут быть как временными (например, скачивание файла), так и постоянными (торрент, ожидающий загрузки). Исходя из этого может устанавливаться срок ожидания наполнения, а также неймспейс, в котором доступен файл:
 +
- сессия: неполный файл существует в контексте сессии, удаляется при отключении клиента
 +
- по сроку: даём фиксированное время на наполнение файла, при отсутствии активности в течение этого срока удаляем
 +
- по активности: если источник при успешной сессии не дополняет файл, считаем, что он стал не нужен и удаляем
 +
- постоянный: надеемся на наполнение пока не удалён вручную. Неймспейс - внутренний для наполняющего клиента.
  
 
[[Category:solutions]]
 
[[Category:solutions]]

Текущая версия от 10:35, 23 февраля 2025

Стандартный сервис для получаемых файлов

Файлы скачиваются не одномоментно, поэтому в течение какого-то времени в системе хранится неполная версия файла. Будь то crdownload, .part и т.п.

Исходный домен - откуда файл - веб/торрент/ftn и т.д. Исходный адрес - адрес скачивания

- идентифицирую источник, по этим данным можно найти файл, если скачивание уже началось

Целевое имя - имя файла Размер - если известен Хэши

Доступные регионы - уже скачанные участки файла База+размер (список) либо постраничный битмап (второе требует дописываний кратными выровненными блоками)

Успешность скачивания - весь указанный размер заполнен. Запись за его пределами - ошибка. - хэши соответствуют

После завершения скачивания файл передаётся сконфигурированному для домена получателю (место на файловой системе, какая-то программа для обработки).

Функции

- инициализация пустого файла, с указанием размера (или неизвестного размера), способов верификации.
- добавление скачанного участка
- получение списка недостающих участков, или факта неизвестности длины
- фиксация длины, когда она стала известна
- завершение файла, с проверкой, что всё скачано.

Проверки

- контрольные суммы по всему файлу, по отдельным участкам, по блокам (если клиентское ПО их предоставляет)
- блокирование записи, если сама запись может быть проверена ко контрольным суммам и они неверны
- сигнал об ошибке, если контрольная сумма может быть проверена только после нескольких записей и результат неверен (невозможно выяснить, какая запись содержала ошибку). В том числе результат записи всего файла, если контрольная сумма на весь файл.
- блокирование повторных записей на один и тот же участок
- частный случай предыдущего - блокирование записи в момент, когда весь файл собран

Срок жизни неполного файла

Неполные файлы могут быть как временными (например, скачивание файла), так и постоянными (торрент, ожидающий загрузки). Исходя из этого может устанавливаться срок ожидания наполнения, а также неймспейс, в котором доступен файл:

- сессия: неполный файл существует в контексте сессии, удаляется при отключении клиента
- по сроку: даём фиксированное время на наполнение файла, при отсутствии активности в течение этого срока удаляем
- по активности: если источник при успешной сессии не дополняет файл, считаем, что он стал не нужен и удаляем
- постоянный: надеемся на наполнение пока не удалён вручную. Неймспейс - внутренний для наполняющего клиента.