Чтобы реализовать клиентскую программу, вызывающую метод службы, предоставляемой серверной программой, необходимо:
*.edl.cpp.h) клиентской программы.*.idl.cpp.h)./opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/kosipc/application.h/opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/kosipc/api.h/opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/kosipc/connect_static_channel.hkosipc::MakeApplicationAutodetect(). (Также можно использовать функции kosipc::MakeApplication() и kosipc::MakeApplicationPureClient().)riid) вызвав функцию kosipc::ConnectStaticChannel().Функция принимает имя IPC-канала (из файла init.yaml) и квалифицированное имя службы (из CDL- и EDL-описаний компонента решения).
MakeProxy().Пример
// Создание и инициализация объекта приложения
kosipc::Application app = kosipc::MakeApplicationAutodetect();
// Создание и инициализация прокси-объекта
auto proxy = app.MakeProxy<IDLInterface>(
kosipc::ConnectStaticChannel(channelName, endpointName))
// Вызов метода требуемой службы
proxy->DoSomeWork();
Чтобы реализовать серверную программу, предоставляющую службы другим программам, необходимо:
*.edl.cpp.h, содержащий описание компонентной структуры программы, включая все предоставляемые службы./opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/kosipc/event_loop.h/opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/kosipc/api.h/opt/KasperskyOS-Community-Edition-<version>/sysroot-*-kos/include/kosipc/serve_static_channel.hkosipc::MakeApplicationAutodetect().kosipc::components::Root, которая описывает компонентную структуру программы и описания интерфейсов всех предоставляемых программой служб.kosipc::components::Root с объектами, реализующими соответствующие службы.Поля структуры Root повторяют иерархию компонентов и служб, заданную совокупностью CDL- и EDL-файлов.
ServeStaticChannel().Функция принимает имя IPC-канала (из файла init.yaml) и структуру, созданную на шаге 5.
kosipc::EventLoop, вызвав функцию MakeEventLoop().Run() объекта kosipc::EventLoop.Пример
// Создание объектов классов, которые реализуют интерфейсы,
// предоставляемые сервером в виде служб
MyIDLInterfaceImp_1 impl_1;
MyIDLInterfaceImp_2 impl_2;
// Создание и инициализация объекта приложения
kosipc::Application app = kosipc::MakeApplicationAutodetect();
// Создание и инициализация объекта root, описывающего
// компоненты и службы сервера
kosipc::components::Root root;
// Связывание объекта root с объектами классов, реализующими службы сервера
root.component1.endpoint1 = &impl_1;
root.component2.endpoint2 = &impl_2;
// Создание и инициализация объекта, который реализует
// цикл диспетчеризации входящих IPC-сообщений
kosipc::EventLoop loop = app.MakeEventLoop(ServeStaticChannel(channelName, root));
// Запуск цикла в текущем потоке
loop.Run();
В начало