Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 2.21 KB

File metadata and controls

29 lines (21 loc) · 2.21 KB

Тестовое задание

Реализовать VFS(virtual file system).

На большинстве игровых консолей сильно ограничено количество открытых файлов. Поэтому приходится все сотни тысяч файлов данных игры паковать в несколько физических файлов на диске.

Задача реализовать интерфейс IVFS - реализация должна все данные хранить в нескольких файлах на диске.

namespace TestTask
{
struct File; // Вы имеете право как угодно задать содержимое этой структуры

struct IVFS
{
	File *Open( const char *name ) = 0; // Открыть файл в readonly режиме. Если нет такого файла или же он открыт во writeonly режиме - вернуть nullptr
	File *Create( const char *name ) = 0; // Открыть или создать файл в writeonly режиме. Если нужно, то создать все нужные поддиректории, упомянутые в пути. Вернуть nullptr, если этот файл уже открыт в readonly режиме.
	size_t Read( File *f, char *buff, size_t len ) = 0; // Прочитать данные из файла. Возвращаемое значение - сколько реально байт удалось прочитать
	size_t Write( File *f, char *buff, size_t len ) = 0; // Записать данные в файл. Возвращаемое значение - сколько реально байт удалось записать
	void Close( File *f ) = 0; // Закрыть файл	
};

}

На что нужно обратить внимание

  1. Возможна ситуация, когда есть одновременно открытые readonly и writeonly файлы(разные).
  2. Не забудьте про многопоточность. Работа с вашей системой возможна из нескольких потоков одновременно.