IPC-каналы
IPC-каналы соединяют сущности друг с другом и используются для обмена IPC-сообщениями.
Канал представлен парой IPC-дескрипторов: клиентским и серверным, которые связаны друг с другом.
Две сущности соединены IPC-каналом
Канал является направленным. Сущность, которой принадлежит клиентский дескриптор канала (сущность-клиент), может отправлять запросы и получать ответы по этому каналу. Сущность, которой принадлежит серверный дескриптор канала (сущность-сервер), может получать запросы и отправлять ответы по этому каналу.
Сущность может иметь несколько соединений (каналов) с другими сущностями, выступая как клиент в одних соединениях, и как сервер – в других.
Сущность A является клиентом для сущности C и сервером – для сущности B. Обозначения: cl_1, cl_2 – клиентские IPC-дескрипторы; srv_1, srv_2 – серверные IPC-дескрипторы.
Создание и использование каналов
IPC-каналы создаются статически и динамически.
Статически созданные IPC-каналы создаются сущностью Einit
при старте решения. Код сущности Einit
генерируется на основе init-описания, в котором указываются все каналы (т.е. соединения), которые нужно создать.
Помимо статически создаваемых IPC-каналов, сущности могут использовать динамически создаваемые IPC-каналы.
Чтобы отправить и принять IPC-сообщение по конкретному каналу, нужно знать соответствующие значения IPC-дескрипторов (клиентского и серверного). Для получения значений IPC-дескрипторов используется локатор сервисов.