Обеспечение взаимодействия устройств

Устройства, работающие под управлением операционной системы «Сивелькирия», могут взаимодействовать по сети на уровне представленных в ней объектных интерфейсов. Поскольку любые объекты, с которыми работают программы, представляются через эти интерфейсы, это фактически означает возможность обмена любыми данными и управляющей информацией между любыми программами и устройствами «из коробки», без дополнительных усилий со стороны программиста. Взаимодействие между устройствами, на которых выполняются экземпляры ОС «Сивелькирия», может происходить на разных уровнях:

  1. На уровне хранимых данных. При использовании одного устройства пользователь может напрямую обращаться к данным, хранимым на другом устройстве. Использование общих интерфейсов для данных на диске и в памяти позволяет отследить и решить потенциальные конфликты общего доступа в момент их возникновения.
  2. На уровне абстракции данных от точки хранения. Для избранных (или всех) объектов может быть включена синхронизация между несколькими устройствами, осуществляемая локально (по сети) или через облачный сервер. Доступ к объекту всегда будет гарантировать обладание актуальной копией, причём сама синхронизация может выполняться в фоне, в том числе параллельно доступу (полное содержимое большого файла ещё выкачивается, но его фрагмент, нужный в данный момент, уже читается напрямую из источника, хранящего актуальную копию).
  3. На уровне состояния. Состояние, в котором находится одно устройство (список воспроизведения, очередь печати, список подключений, активность сетевых интерфейсов и так далее) может напрямую просматриваться и изменяться с другого устройства с применением программ, запущенных на последнем. Например, если размещённая в комнате акустическая система подключена к настольному компьютеру, то с мобильного телефона, связанного с ним по Wi-Fi, можно управлять громкостью и списком воспроизведения независимо от того, какие конкретные модули используются на данной машине. Перевод звонка с одного устройства на другое является другим примером.
  4. На уровне интерфейса пользователя. Возможен прямой перенос окна с одной машины на другую. Например, пользователь может отслеживать прогресс некоторой длительной операции (загрузки файлов и т. п.), выполняемой на другой машине, напрямую просматривая окно, в котором выполняется эта операция. Другой пример — это перенос окна чтения корпоративной почты на смартфон в пределах рабочей сети. При этом окно может принимать вид, более подходящий для нового устройства. Перевод интерфейса может производиться как по требованию, так и автоматически: так, окно видеозвонка может перемещаться между устройствами в различных комнатах, сопровождая пользователя, причём такая функция будет работать независимо от используемого ПО и каналов связи (в том числе, когда используемый протокол сам по себе не допускает перевод звонка между устройствами).

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

Разбивка взаимодействий по категориям позволяет гибко настраивать систему доступа. В примере с аудиосистемой, управляемой с одного из компьютеров, регулирование громкости или остановка воспроизведения могут быть доступны любому из устройств, находящихся в комнате, но отображение списка воспроизведения или доступ к воспроизводимым файлам могут быть ограничены. В примере с подключением смартфонов сотрудников к корпоративной сети доступ к почте может быть разрешён, а доступ к документам, содержащим личные данные клиентов, — ограничен.

Если «Сивелькирия» выполняется в режиме агента под родительской операционной системой, всё, что доступно агенту, будь то файловая система, экран, звуковые устройства, список уведомлений и так далее, становится доступно устройствам, подключенным к данному экземпляру «Сивелькирии» (с применением тех же механизмов и прав доступа).

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

Другой пример — использование UPnP для связи между устройствами через границы инфрасети. Поскольку необходимость связи между устройствами возникает постоянно, сервера, обслуживаемые командой разработки ОС, предоставляют автоматизированный сервис первичного установления соединений (обмена адресами устройств), доступный всем пользователям операционной системы. Частные сервера установления соединений также поддерживаются. Таким образом, два устройства, зарегистрированные на одном сервере установления соединений, могут соединиться для совместной работы в любое время.