O.G.A.S. English

Методы мастерской и пульта

Что окно мастерской берёт у платформы и чем её зовёт, методы функции ui и функции пульта canvas: документ пульта, поверхность для окна, рисунки, виды, заготовки.

Введение

Документ — часть договора Обмен с ядром: источники данных мастерской, методы программы окна и описание пульта. Отображение для человека — Мастерская. Коды отказов — Коды ошибок.

1 Данные мастерской

Функции не описывают отрисовку: мастерская рисует свои виды сама, а данные берёт обычными запросами к функциям (Мастерская, раздел 8).

Таблица 1 — Данные мастерской

Что показывает мастерская Откуда берёт
граф процесса process.open, process.list, process.kinds, process.node.template, process.node.candidates, process.validate, process.inspect; событие process.changed — список процессов читается заново, кто бы ни создал, импортировал или сохранил процесс
программа, её события и прогоны process.program.list, process.objects, process.variable.list, process.ask.list, process.show.get, process.runs.list, process.snapshot; события program.changed, run.changed, node.changed, variable.changed, show.changed, ask.opened, ask.closed
пульт canvas.snapshot (слоты и revision), canvas.get при правке; пульта ещё нет — команда canvas.ensure создаёт пустой
настройки settings.schema, settings.get; раздел «Состояние» — core.status
модули module.list; вкладка «Проверка» — ответ module.test
память узла-модуля в панели узла module.state.list; «Очистить память» — команда module.state.clear
журнал и проблемы observe.logs.query, observe.problems.list (поля проблемы — Форматы файлов, раздел 13)

Действие человека — обычная команда хозяину (process.run.start, process.event.fire, canvas.save, settings.set, module.install …); список команд — в договоре хозяина. При знакомстве функция называет свои поверхности в поле surfaces — это нужно, чтобы видеть состав платформы; смысла этих имён ядро не разбирает.

2 Окно

Окно мастерской — программа Windows; она подключается к функции ui по адресу 127.0.0.1 (порт и токен сессии приходят в командной строке запуска, Мастерская, раздел 2). Как передаются сообщения и как выглядит обёртка — Обмен с ядром, разделы 2, 3. id запроса окна — window-<номер>.

Таблица 2 — Окно

Метод Кто отвечает Параметры Результат
ui.window.hello функция ui, первое сообщение соединения token { "status": "ready" }
ui.window.font функция ui — { "format": "truetype" \| "opentype" \| "woff" \| "woff2", "data": base64 } — файл ui.font.file, если ui.font.source = file; до 2 500 000 байт
ui.window.defaults функция ui — { "values": { ключ: умолчание } } — умолчания всех ui.* по схеме функции ui; окно рисует ими, пока функция настроек не ответила значениями
ui.window.layout.get функция ui — документ ogas.layout/1 из config/layout.json; до первой записи — { "format", "host": null, "windows": [], "panels": {} } (Форматы файлов, 7.1)
ui.window.layout.set функция ui layout: { host, windows, panels }; без panels записывается пустой набор {}; раскладка, которая не сходится с Форматы файлов, 7.1, — document_invalid с названием поля
ui.window.library.get функция ui — документ ogas.library/1 из config/library.json; до первой записи — { "format", "bars": [{ "id": "programs", "name": "", "programs": [] }], "hidden": { "programs": [], "modules": [] } } (Форматы файлов, 7.3)
ui.window.library.set функция ui library: { bars, hidden, views } {}; библиотека, которая не сходится с Форматы файлов, 7.3, — document_invalid с названием поля
ui.window.face функция ui — { "process_id": id \| null } — процесс, лицо программы которого попросил показать запуск, или null; имя отдаётся один раз: окно, открытое заново, показывает то, о чём его попросят тогда
ui.window.path функция ui path — путь Windows { path } — тот же файл, как его видит Linux (wslpath -u); куда WSL не достаёт — отказ ui_window_path_unknown
ui.window.launch функция ui — { target, arguments, icon } — чем ярлык Windows запускает платформу: запускатель ogas-start.exe (программа окна кладёт его на диск Windows), который передаёт wsl.exe без консоли слова с дистрибутивом и папкой установки, значок — программа окна; ярлык программы дописывает program --process <id>
методы функций (process.*, settings.*, i18n.* …) хозяин метода через ядро как у хозяина как у хозяина
core.status, core.health, core.space, core.event.subscribe, core.shutdown ядро через функцию ui как в Обмен с ядром, раздел 5 как в Обмен с ядром, раздел 5

Остальные core.* и function.handshake окну закрыты — method_not_allowed. Неверный токен или первое сообщение не ui.window.hello — ui_window_unauthorized и закрытие соединения. События ядра функция ui пересылает окну уведомлением event в той же обёртке события (Обмен с ядром, раздел 7). Своего срока на ответ не ставят ни функция ui, ни программа окна: обе только передают вызов, а сколько ждать, решает страница (Устройство платформы, 3.7.1). Страница ждёт столько, сколько нужно хозяину метода, и своего срока не ставит: долгую работу хозяина — проверку модуля, установку окружения — срок окна прервал бы. Вызов без ответа не висит: он кончается отказом function_lost, когда хозяин отключился или не прошёл проверку работоспособности, и ui_window_disconnected, когда оборвалась связь окна с платформой.

Лицо программы открывает запуск (Мастерская, 6.6). Имя программы несёт функция ui:

Окно при запуске спрашивает ui.window.face и, получив имя, показывает лицо сразу, до чтения процесса; затем открывает процесс и включает его программу командой хозяина (process.program.on). Уже открытому окну о просьбе говорит событие ui.face.asked.

3 Пульт

Хозяин workspace.json — функция canvas. Документ пульта — ogas.workspace/3, граф интерфейса: вместилища и элементы (Форматы файлов, раздел 7). Смысл сквозных объектов — у графа: их задают узлы и переменные process.json (Программа: граф и запуски, раздел 16). Пустой пульт допустим: объекты не раскладываются сами. Отказ за форму документа — canvas_invalid, сообщение называет элемент или вместилище и поле.