4 группы перечислений · значения сверены с xsbase.h и xrt_decl.h

Справочник перечислений

Состояния выполнения, семь состояний перезагрузки, трёхзначный результат запроса и битовая маска HTTP-методов. Маска методов — это одновременно результат разбора одиночного метода и множество методов при регистрации маршрута.

XS_RunState (состояние выполнения)

ЗначениеИмяСмысл
0XS_RUN_STARTINGидёт сборка
1XS_RUN_RUNNINGобслуживает запросы
2XS_RUN_RELOAD_FAILEDпоследняя перезагрузка не удалась, старое поколение продолжает обслуживать
3XS_RUN_STOPPINGидёт освобождение
4XS_RUN_STOPPEDостановлен

Висит на XS_ServerInfo.State и XS_HostInfo.State; читать его для инспекционных сводок безопасно (чтение значения перечисления не связано с временем жизни заимствований).

XS_ReloadState (семь состояний перезагрузки)

ACCEPTED ──▶ PREPARING ──▶ SUCCEEDED (принято) (компиляция) (успех) ├──▶ FAILED ошибка компиляции/проверки; старое поколение обслуживает как есть ├──▶ SUPERSEDED перекрыт более новым намерением того же server └──▶ CANCELLED отменён до подачи
ЗначениеИмяСмысл
0XS_RELOAD_UNKNOWNисходное / запрос ничего не нашёл
1XS_RELOAD_ACCEPTEDнамерение принято (вернулся стабильный ID)
2XS_RELOAD_PREPARINGидут снимок и компиляция кандидата
3XS_RELOAD_SUCCEEDEDновое поколение опубликовано
4XS_RELOAD_FAILEDнеудача; причина — в Message
5XS_RELOAD_SUPERSEDEDперекрыт новейшим намерением (latest-wins)
6XS_RELOAD_CANCELLEDотменён до входа в зону побочных эффектов

XS_RequestResult (трёхзначный результат запроса)

ЗначениеИмяСемантика
0XS_OKполный ответ уже записан; драйвер вычитывает остаток body и продолжает keep-alive
1XS_FALLBACKне обработано: GET/HEAD проваливаются в статический слой, остальное — 404
2XS_TAKEOVERприложение забирает соединение: pull/Future сами ведут приём-передачу и в конце Close

XHTTP_METHOD_* (битовые маски HTTP-методов)

Распространённые методы занимают непересекающиеся одиночные биты; ненулевое значение — это и разобранный одиночный метод, и атомарный бит в множестве методов. Комбинационные макросы задают типовые маршрутизационные наборы.

ЗначениеИмяПримечание
0x00000000XHTTP_METHOD_INVALIDпустое значение или некорректный токен; в множестве естественным образом не совпадает ни с одним методом
0x00000001XHTTP_METHOD_OTHERметод с корректным синтаксисом, но без встроенного класса (метод-расширение)
0x00000002XHTTP_METHOD_GETGET
0x00000004XHTTP_METHOD_HEADHEAD
0x00000008XHTTP_METHOD_POSTPOST
0x00000010XHTTP_METHOD_PUTPUT
0x00000020XHTTP_METHOD_DELETEDELETE
0x00000040XHTTP_METHOD_CONNECTCONNECT
0x00000080XHTTP_METHOD_OPTIONSOPTIONS
0x00000100XHTTP_METHOD_TRACETRACE
0x00000200XHTTP_METHOD_PATCHPATCH

Комбинационные макросы

/* множество методов типовых CRUD-маршрутов; PUT и PATCH — оба методы обновления */ #define XHTTP_METHOD_CRUD ( GET | POST | PUT | PATCH | DELETE ) /* совпадает с любым встроенным методом или синтаксически корректным методом-расширением */ #define XHTTP_METHOD_ANY ( OTHER | GET | HEAD | POST | PUT | DELETE | CONNECT | OPTIONS | TRACE | PATCH )
Обратите внимание: CRUD не содержит HEAD (HEAD читает только метаданные, по семантике — как GET); ANY содержит OTHER и покрывает методы-расширения. Если маршрут зарегистрирован только на GET, запрос HEAD будет отвергнут в слоте метода (405 + Allow: GET) — поведение, проверенное опытным путём в главе 2.