.. | ||
client.go | ||
client_test.go | ||
filecache.go | ||
filecache_test.go | ||
handler.go | ||
README.md |
filecache
Пакет filecache
занимается хранением кеша файлов и определяет протокол передачи файлов между частями системы.
filecache.Cache
управляет файлами и занимается контролем одновременного доступа. Вы можете реализовать этот
тип поверх *artifact.Cache
, поведение требуется точно такое же.
Передача файлов
Тип filecache.Handler
реализует handler, позволяющий заливать и скачивать файлы из кеша.
- Вызов
GET /file?id=123
должен возвращать содержимое файла сid=123
. - Вызов
PUT /file?id=123
должен заливать содержимое файла сid=123
.
Обратите внимание: Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации, первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно, то есть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики поведения вам поможет пакет singleflight.