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
IPC
machanism. 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)
Linux
Windows
QNX
- 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/OFF
when 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_STDOUT
ON
: 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_CONNECT
ON
: 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_SYSTEM
ON
: socket number of servers are allocated by the system*OFF
: socket number of servers are allocated by name serverfdbus_SECURITY
ON
: enable security*OFF
: disable securityfdbus_BUILD_JNI
ON
: 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