Coder Social home page Coder Social logo

johnsmithsss / fdbus Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jeremyczhen/fdbus

0.0 0.0 0.0 3.69 MB

FDBus - Fast Distributed Bus

Home Page: https://blog.csdn.net/jeremy_cz/article/details/89060291

CMake 1.54% C++ 76.21% C 10.52% Java 7.40% Makefile 0.13% Python 4.21%

fdbus's Introduction

Introduction

FDBus Documentation

https://readthedocs.org/projects/fdbus/badge/?version=latest

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)

Supported system

  • Linux
  • Windows
  • QNX

Dependence

  • 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)

Download

https://github.com/jeremyczhen/fdbus.git

Documentation & Blog

https://blog.csdn.net/jeremy_cz/article/details/89060291

How to build

It is recommended to build with buildCentral. For more details please find help for FDK

cmake options

The following options can be specified with -Dfdbus_XXX=ON/OFF when running cmake.
The status with * is set as default.
fdbus_BUILD_TESTS
* ON : build examples
OFF: 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 server
fdbus_ENABLE_MESSAGE_METADATA
* ON : time stamp is included in fdbus message to track delay of message during request-reply interaction
OFF: 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 blocking
fdbus_SOCKET_ENABLE_PEERCRED
* ON : peercred of UDS (Unix Domain Socket) is enabled
OFF: 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 server
fdbus_SECURITY
ON : enable security
* OFF: disable security
fdbus_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 file
default: /tmp
CONFIG_SOCKET_CONNECT_TIMEOUT
specify timeout of connect() when connect to socket server in ms.
"0" means block forever.
default: 2000

fdbus's People

Contributors

jeremyczhen avatar lubin20999 avatar skawu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.