Coder Social home page Coder Social logo

The eCAL Cop (core only project)

License

The enhanced Communication Abstraction Layer (eCAL) is a middleware that enables scalable, high performance interprocess communication on a single computer node or between different nodes in a computer network.

The goal of the ecal core only project is to create a modular core with clearly defined dependencies based on the configured features. This will enormously reduce the integration effort into other projects and the porting effort to specific hardware.

Visit the eCAL Documentation at 🌐 https://ecal.io for more information.

Differences to Eclipse-eCAL

  • C/C++ language support only
  • internal communication protocol based on nanopb instead of google::protobuf
  • innerprocess communication layer removed (handled by shared memory transport layer too)

The core is fully "wire compatible" to eclipse-ecal on all transport layers (shared memory, udp multicast, tcp) as well as on the discovery (registration, monitoring) layer.

How to build

Clone the repository and its submodules

git clone https://github.com/ecal-io/ecal-cop.git
cd ecal-cop
git submodule init
git submodule update

Build it

mkdir _build
cd _build
cmake .. -A x64
cmake --build .

CMake Options

This section provides documentation for the CMake options used in configuring the eCAL library. These options allow you to customize the build and enable or disable specific features. Please adapt the options according to your project requirements.

Additional Builds

ECAL_CORE_BUILD_SAMPLES
  • This option controls whether the eCAL samples should be built. If not needed, you can disable this option to reduce build time.
ECAL_CORE_BUILD_SAMPLES_PROTOBUF
  • This option controls whether the eCAL protobuf samples should be built. If not needed, you can disable this option to reduce build time.
  • Requires google::protobuf serialization library.
ECAL_CORE_BUILD_TESTS
  • This option determines whether the eCAL Google Tests should be built. If enabled, it includes the compilation of unit tests for eCAL. Disabling this option will skip the build of tests if they are not required in your development environment.
  • Requires gtest library.
ECAL_CORE_BUILD_TESTS_PROTOBUF
  • This option determines whether the eCAL Google Tests using protobuf serialization should be built.
  • Requires gtest library and google::protobuf serialization library.

Core Internal Feature Configuration

ECAL_CORE_CONFIG_INIFILE
  • Enabling this option allows eCAL to be configured via an ecal.ini file. This file is used to set various configuration parameters for eCAL, providing flexibility in adjusting its behavior without modifying the source code.
  • Requires simpleini library.
ECAL_CORE_COMMAND_LINE
  • Enabling this option includes support for eCAL application command-line interfaces (cmd line). This allows you to interact with eCAL applications through the command line, providing additional runtime configuration options.
  • Requires tclap library.
ECAL_CORE_REGISTRATION
  • Enabling this option activates the eCAL registration layer. This layer is responsible for managing and registering different components within the eCAL ecosystem, facilitating communication between them.
ECAL_CORE_MONITORING
  • Enabling this option activates the eCAL monitoring functionality.
ECAL_CORE_PUBLISHER
  • Enabling this option includes the eCAL publisher functionality. This is essential for components that need to publish data to the eCAL communication infrastructure.
ECAL_CORE_SUBSCRIBER
  • Enabling this option includes the eCAL subscriber functionality. This is crucial for components that need to subscribe to and receive data from the eCAL communication infrastructure.
ECAL_CORE_SERVICE
  • Enabling this option includes the eCAL server/client functionality.
ECAL_CORE_TIMEPLUGIN
  • Enabling this option includes the eCAL time plugin functionality. This allows for precise synchronization of time across different components using eCAL.
ECAL_CORE_NPCAP_SUPPORT
  • Enabling this option replaces the standard ASIO UDP receiver by a NPCAP based UDP receiver to increase the performance on Windows platforms.
  • Requires udpcap library.
ECAL_CORE_REGISTRATION_SHM
  • Enabling this option activates the eCAL registration layer based on shared memory for high performance local communication scenarios only.
ECAL_CORE_TRANSPORT_UDP
  • Enabling this option includes the eCAL UDP Multicast message transport layer.
ECAL_CORE_TRANSPORT_TCP
  • Enabling this option includes the eCAL TCP message transport layer.
  • Requires tcp_pubsub library.
ECAL_CORE_TRANSPORT_SHM
  • Enabling this option includes the eCAL local shared memory message transport layer.

Note: Please adjust these options based on your project's needs, ensuring that the selected features align with your desired functionality and dependencies.

Eclipse eCAL (enhanced Communication Abstraction Layer)'s Projects

.eclipsefdn icon .eclipsefdn

Repository to host configurations related to the Eclipse Foundation.

ecal icon ecal

📦 eCAL - enhanced Communication Abstraction Layer. A high performance publish-subscribe, client-server cross-plattform middleware.

ecal-rs icon ecal-rs

Rust bindings to the Continental eCAL API

fineftp-server icon fineftp-server

📦 C++ FTP Server Library for Windows 🪟, Linux 🐧 & more 💾

tcp_pubsub icon tcp_pubsub

📦 TCP based publish-subscribe library for C++ 🌐

udpcap icon udpcap

📦 Npcap-based UDP socket emulation library for C++ 👨‍💻

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.