🔗

eIPC

Inter-Process Communication

High-performance IPC library with zero-copy message passing, pub/sub, RPC, and shared memory — all with minimal overhead for real-time applications.

Platform FoundationC/C++Active Development

Key Features

Zero-Copy Message Passing — Lock-free ring buffers
Publish-Subscribe — QoS levels (best-effort, reliable)
Remote Procedure Call — Sync and async RPC
Shared Memory — Named regions with access control
Cross-Platform — eos, Linux, macOS, Windows
Transport Abstraction — In-process, IPC, network, serial
Discovery Service — Automatic service discovery

Architecture

Application Layer (Publisher, Subscriber, RPC)
├── eIPC Core (Serialization, Routing, QoS, Discovery)
├── In-Process (Ring Buffer)
├── IPC (Sockets)
├── Network (TCP/UDP)
└── Serial (UART/SPI)

Code Example

c

#include <eipc/eipc.h>
#include <eipc/pubsub.h>

void sensor_publisher(void) {
    eipc_node_t *node = eipc_node_create("sensor_hub");
    eipc_publisher_t *pub = eipc_advertise(node,
        "sensor/heartrate", EIPC_MSG_FLOAT32,
        EIPC_QOS_RELIABLE);

    while (1) {
        float hr = read_heart_rate_sensor();
        eipc_publish(pub, &hr, sizeof(hr));
        eos_task_delay_ms(100);
    }
}

API Highlights

FunctionDescription
eipc_node_create()Create a communication node
eipc_advertise()Create a publisher on a topic
eipc_subscribe()Subscribe to a topic
eipc_publish()Publish a message
eipc_rpc_call()Call a remote procedure