Транспорт и формат сообщений F1
Формат запроса и ответа, выбор среды выполнения и обработка отказов.
Процессор запускается командой compute_contract_cli --session. После приветственной строки он принимает по одному запросу JSON в строке и отвечает одной строкой на каждый. В браузере используется тот же формат — через вызов сеанса в WebAssembly.
# путь внутри установленного приложения — см. «Установка F1»"$F1_CLI" --sessionОбщие поля запроса
| Поле | Тип TypeScript | Обяз. | Что это |
|---|---|---|---|
operation |
ComputeRequest["operation"] |
да | Имя операции; по нему ядро выбирает, что делать. |
requestedBackend |
"wasm" | "native-desktop" | "service-host" | null |
нет | Где вы просите выполнить запрос. |
requestId |
string |
нет | Ваш номер запроса. Ядро возвращает его в ответе слово в слово — так ответ связывается с запросом по имени, а не по порядку прихода. |
Ответ при успехе — ComputeSuccessEnvelope
| Поле | Тип TypeScript | Обяз. | Что это |
|---|---|---|---|
ok |
true |
да | Запрос выполнен. |
requestId |
string |
нет | Тот же номер, что вы прислали. |
requestedBackend |
ComputeBackendKind |
да | Где вы просили выполнить. |
backendUsed |
ComputeBackendKind |
да | Где выполнено на самом деле. |
fallbackUsed |
boolean |
да | true, если запрошенная среда оказалась недоступна и ядро выполнило запрос в другой. |
warnings |
ComputeWarning[] |
да | Предупреждения: на успех не влияют, но их стоит показать или записать. |
responsiveRecalc |
ContractResponsiveRecalcSnapshot | null |
нет | Состояние фонового пересчёта на момент ответа, если он включён. |
payload |
ComputeResponsePayload |
да | Результат самой операции; его состав у каждой операции свой. |
Ответ при отказе — ComputeErrorEnvelope
| Поле | Тип TypeScript | Обяз. | Что это |
|---|---|---|---|
ok |
false |
да | Запрос отклонён; книга не изменилась. |
requestId |
string |
нет | Тот же номер, что вы прислали. |
requestedBackend |
ComputeBackendKind |
да | Где вы просили выполнить. |
backendUsed |
ComputeBackendKind |
да | Где выполнено на самом деле. |
fallbackUsed |
boolean |
да | true, если запрошенная среда оказалась недоступна и ядро выполнило запрос в другой. |
warnings |
ComputeWarning[] |
да | Предупреждения: на успех не влияют, но их стоит показать или записать. |
code |
string |
да | Код отказа — устойчивая строка, по которой отказ различают в коде. |
message |
string |
да | Пояснение словами. |
details |
string | null |
нет | Подробности, если ядру есть что добавить. |
dataValidationSource |
ContractDataValidationSourceValidation | null |
нет | Заполняется, когда отказ вызван проверкой данных: какое поле не принято и почему. |
calculationStatus |
ContractCalculationStatus | null |
нет | Состояние вычислений, если отказ с ним связан. |