FDBus is an easy-to-use, light weight and high performance IPC framework. It is something like DBus or SOME/IP, but with its own characteristics:
- Distributed : unlike
DBus, it has no central hub; client and serives are connected directly - High performance : endpoints talk to each other directly
- Addressing by name : service is addressable through logic name
- Address allocation : service address is allocated dynamically
- Networking : communication inside host and across network
- IDL and code generation : google protocol buffer is recommended
- Language binding : C++ C Java Python
- Total slution : it is more than an
IPCmachanism. it is more like a middleware development framework - Notification Center : In addition to distributed service, it also support centralized notification center like MQTT
- Logging and Debugging : All FDBus messages can be filtered and logged; services can be monitored; connected clients can be listed...
Its usage can be found in the following fields:
- Infotainment; instrument cluster, TBox and other ECU with posix-compatible OS running
- Inter VM communication between guest OSes in hypervisor
- SOHO Gateway
- Instrument for distributed industry control
- Backbone to support SOA (Service-Oriented Architecture)
LinuxWindowsQNX
- cmake - 3.1.3 or above for non-jni build
- cmake - 3.11.1 or above for jni build
- protocol buffer
- compiler supporting C++11 (gcc 4.7+ for Linux; Visual Studio for Windows)
https://github.com/jeremyczhen/fdbus.git
https://blog.csdn.net/jeremy_cz/article/details/89060291
It is recommended to build with buildCentral. For more details please find help for FDK
- The following options can be specified with
-Dfdbus_XXX=ON/OFFwhen runningcmake. - The status with
*is set as default. fdbus_BUILD_TESTS- *
ON: build examplesOFF: don't build examples fdbus_ENABLE_LOG- *``ON`` : enable log output of fdbus lib
OFF: disable log output of fdbus lib fdbus_LOG_TO_STDOUTON: send fdbus log to stdout (terminal)*OFF: fdbus log is sent to log serverfdbus_ENABLE_MESSAGE_METADATA- *
ON: time stamp is included in fdbus message to track delay of message during request-reply interactionOFF: time stamp is disabled fdbus_SOCKET_BLOCKING_CONNECTON: socket method connect() will be blocked forever if server is not ready to accept*OFF: connect() will be blocked with timer to avoid permanent blockingfdbus_SOCKET_ENABLE_PEERCRED- *
ON: peercred of UDS (Unix Domain Socket) is enabledOFF: peercred of UDS is disabled fdbus_ALLOC_PORT_BY_SYSTEMON: socket number of servers are allocated by the system*OFF: socket number of servers are allocated by name serverfdbus_SECURITYON: enable security*OFF: disable securityfdbus_BUILD_JNION: build JNI shared library and jar package*OFF: don't build JNI artifacts- The following options can be specified with
-DMACRO_DEF='VARIABLE=value;VARIABLE=value'FDB_CFG_SOCKET_PATH- specify directory of UDS filedefault: /tmp
CONFIG_SOCKET_CONNECT_TIMEOUT- specify timeout of connect() when connect to socket server in ms."
0" means block forever.default: 2000