Qt IVI Inter-Process Communication Integration

An Inter-Process Communication (IPC) enables APIs to be split into multiple processes. Each process runs independently, sometimes on a separate host machine, and the communication is done using an IPC. The IPC also allows for multiple clients, or frontends to access the same service. These frontends can be, for example, the main Infotainment System UI, or different applications that run within the UI or mobile devices.

Benefits of using an IPC

An IPC enables functionality distribution and information sharing, between multiple processes or even between multiple host machines. Separate processes improve the overall reliability of a complex system and make it possible to separate computation-intensive code from the UI code. Additionally, backends that use an IPC can be accessible via multiple frontend points, be it the central UI, separate applications, or even mobile devices or third party applications.

Combined with QtIvi's automatic code generation and uniform feature loading, developing distributed features requires less development overhead, with more interchangeability and transparency for the UI code.

Qt Remote Objects

The Qt IVI Generator makes it possible to generate Middleware Backends that utilize the QtRemoteObjects module. The client-side code is generated as a QtIvi backend plugin and and as a a Middleware Service, either a server stub or a full simulation server. The client is generated using the backend_qtro template; the server using the server_qtro template. Both the plugin and the server contain generated C++ code and an intermediate .rep file that is further processed by Qt’s replica compiler to produce the actual source and replica classes.

The generated plugin is loaded and used in the same way as other QtIvi plugins and is interchangeable with any other backend implementation with the same API. Since all method calls over QtIvi feature interfaces are asynchronous, the use of a QtRemoteObjects based backend is similar to any other type of backend.

The generated plugin is buildable and usable as-is; you don't have to make any changes. Your task is then to implement the intended functionality on the server-side. To help you get started with the server, there's a generated class included, which initializes the connection. All connection parameters to the plugin and to the server are passed over a config file, either in a default location or at a user-specified path.

For a steb-by-step introduction to remote backends, see Generate QtRemoteObjects based backends with the Qt IVI Generator.

© 2020 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.