Заголовок таблицы

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Внутренние файлы/Заголовок таблицы

Формат заголовка таблицы описывается следующей структурой данных на языке Си.

struct run_header
{
  int version;
  time_t start_time;
  time_t sched_time;
  time_t duration;
  time_t stop_time;
  unsigned char pad[44];
};

Здесь предполагается, что тип int имеет размер 4 байта (32 бита), тип time_t является синонимом типа long, который также имеет размер 4 байта (32 бита). Тип unsigned char имеет размер 1 байт (8 битов). Для платформ с другими размерами примитивных типов определение структуры заголовка должно быть соответствующим образом изменено. Целые значения хранятся в том порядке байтов, который принят на данной платформе. Например, на Linux-ix86 целые значения хранятся в порядке байтов “Little-endian”.

Поле version хранит номер версии формата базы посылок. Текущая версия имеет номер 1. Номер версии будет увеличиваться каждый раз, когда формат базы посылок меняется несовместимым с предыдущими версиями образом.

Поле start_time хранит фактическое время начала турнира, если турнир уже начался. Если турнир ещё не начался, в данном поле хранится значение 0. Время хранится во внутреннем формате Unix-систем, то есть как количество секунд, прошедшее от 1 января 1970 года.

Поле sched_time хранит назначенное время начала турнира. Для уже начавшегося турнира (то есть для турнира, у которого start_time не равно 0) значение этого поля не имеет значения. Если значение этого поля равно 0, то для данного турнира никакое время старта не было назначено. Назначить время старта турнира можно с помощью интерфейса администратора турнира, предоставляемого CGI-программой master. В момент первого запуска сервера турнира, когда файл базы посылок создаётся, в данное поле записывается значение 0.

Поле duration хранит установленную продолжительность турнира в секундах. Для турниров неограниченной продолжительности данное поле содержит значение 0. Изменить назначенную продолжительность турнира можно с помощью интерфейса администратора турнира, предоставляемого CGI-программой master. В момент первого запуска сервера турнира для данного турнира при создании файла базы посылок в данное поле копируется значение глобальной конфигурационной переменной contest_time конфигурационного файла турнира serve.cfg.

Поле stop_time хранит фактическое время окончания турнира. Если турнир ещё не окончен, данное поле хранит значение 0. Турнир заканчивается автоматически, когда истекает его продолжительность, либо турнир в любой момент может быть закончен по команде администратора с помощью интерфейса, предоставляемого CGI-программой master.

Поле pad используется для дополнения структуры до размера 64 байта.