# eclipse-score/communication architecture

> Architecture diagram of the GitHub repository eclipse-score/communication, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/eclipse-score/communication
- Repository: https://github.com/eclipse-score/communication

## Overview

LoLa is safety-oriented Adaptive AUTOSAR communication middleware for low-latency intra-ECU IPC. Its main workflow registers a provider’s service, lets consumers discover and subscribe, then publishes events into shared memory and notifies consumers through the messaging layer. The graph also shows method messaging, binding runtime and tracing, plus the Linux/QNX transport alternatives. Workflow stages follow the README; sampled source confirms the shared-memory storage and transport-engine responsibilities, but does not expose every call path, so uncertain wiring is omitted.

Main entry points: [`score/mw/com/impl/bindings/lola/proxy.cpp`](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/proxy.cpp) (Proxy), [`score/mw/com/impl/bindings/lola/messaging/message_passing_service.cpp`](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/messaging/message_passing_service.cpp) (Messaging Service), [`score/mw/com/impl/bindings/lola/skeleton.cpp`](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/skeleton.cpp) (Skeleton), [`score/mw/com/impl/bindings/lola/service_discovery/client/service_discovery_client.cpp`](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/client/service_discovery_client.cpp) (Discovery Client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Service API"]
  node_skeleton["Skeleton<br/>[skeleton.cpp]"]
  node_proxy["Proxy<br/>[proxy.cpp]"]
  node_events["Event Endpoints"]
  node_methods["Method Endpoints"]
  node_runtime["LoLa Runtime<br/>[runtime.cpp]"]
end

subgraph group_discovery["Discovery"]
  node_discovery_client["Discovery Client"]
  node_flag_crawler["Flag Crawler"]
  node_flag_files["Registration Flags<br/>[flag_file.cpp]"]
end

subgraph group_shared["Shared Data"]
  node_service_store["Service Data"]
  node_event_store["Event Slots"]
  node_shm[("Shared Memory")]
  node_tracing["Tracing Runtime"]
end

subgraph group_messaging["Messaging"]
  node_messaging_service["Messaging Service"]
  node_mp_engine["Message Engine<br/>[engine.h]"]
end

subgraph group_platform["Platform Transport"]
  node_unix_engine["Unix Engine"]
  node_qnx_engine["QNX Engine"]
end

node_provider(("Provider App"))
node_consumer(("Consumer App"))
node_os{{"Operating System"}}

node_provider -->|"offers service"| node_skeleton
node_consumer -->|"searches service"| node_discovery_client
node_skeleton -->|"registers elements"| node_service_store
node_service_store -->|"maps event slots"| node_event_store
node_discovery_client -->|"looks up services"| node_flag_crawler
node_flag_crawler -->|"reads registrations"| node_flag_files
node_discovery_client -->|"returns matches"| node_proxy
node_consumer -->|"uses service"| node_proxy
node_provider -->|"publishes events"| node_events
node_events -->|"accesses slots"| node_event_store
node_event_store -->|"stores samples"| node_shm
node_proxy -->|"reads samples"| node_shm
node_skeleton -->|"sends notifications"| node_messaging_service
node_proxy -->|"receives notifications"| node_messaging_service
node_provider -->|"serves calls"| node_methods
node_consumer -->|"invokes methods"| node_methods
node_runtime -->|"uses messaging"| node_messaging_service
node_messaging_service -->|"uses engine"| node_mp_engine
node_mp_engine -->|"selects on Unix"| node_unix_engine
node_mp_engine -->|"selects on QNX"| node_qnx_engine
node_unix_engine -->|"uses sockets"| node_os
node_qnx_engine -->|"uses dispatch"| node_os
node_runtime -->|"supports tracing"| node_tracing

click node_skeleton "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/skeleton.cpp"
click node_proxy "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/proxy.cpp"
click node_events "https://github.com/eclipse-score/communication/tree/main/score/mw/com/impl/bindings/lola"
click node_methods "https://github.com/eclipse-score/communication/tree/main/score/mw/com/impl/bindings/lola/methods"
click node_runtime "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/runtime.cpp"
click node_discovery_client "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/client/service_discovery_client.cpp"
click node_flag_crawler "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/flag_file_crawler.cpp"
click node_flag_files "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/flag_file.cpp"
click node_service_store "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_data_storage.h"
click node_event_store "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/event_data_storage.cpp"
click node_shm "https://github.com/eclipse-score/communication/tree/main/score/memory/shared"
click node_tracing "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/tracing/tracing_runtime.cpp"
click node_messaging_service "https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/messaging/message_passing_service.cpp"
click node_mp_engine "https://github.com/eclipse-score/communication/blob/main/score/message_passing/engine.h"
click node_unix_engine "https://github.com/eclipse-score/communication/blob/main/score/message_passing/unix_domain/unix_domain_engine.cpp"
click node_qnx_engine "https://github.com/eclipse-score/communication/blob/main/score/message_passing/qnx_dispatch/qnx_dispatch_engine.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_skeleton,node_proxy,node_events,node_methods,node_runtime toneBlue
class node_discovery_client,node_flag_crawler,node_flag_files toneAmber
class node_service_store,node_event_store,node_shm,node_tracing toneMint
class node_messaging_service,node_mp_engine toneRose
class node_unix_engine,node_qnx_engine,node_provider,node_consumer,node_os toneIndigo
```

## Components

### Service API

- [Skeleton](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/skeleton.cpp): `score/mw/com/impl/bindings/lola/skeleton.cpp`
- [Proxy](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/proxy.cpp): `score/mw/com/impl/bindings/lola/proxy.cpp`
- [Event Endpoints](https://github.com/eclipse-score/communication/tree/main/score/mw/com/impl/bindings/lola): `score/mw/com/impl/bindings/lola`
- [Method Endpoints](https://github.com/eclipse-score/communication/tree/main/score/mw/com/impl/bindings/lola/methods): `score/mw/com/impl/bindings/lola/methods`
- [LoLa Runtime](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/runtime.cpp): `score/mw/com/impl/bindings/lola/runtime.cpp`

### Discovery

- [Discovery Client](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/client/service_discovery_client.cpp): `score/mw/com/impl/bindings/lola/service_discovery/client/service_discovery_client.cpp`
- [Flag Crawler](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/flag_file_crawler.cpp): `score/mw/com/impl/bindings/lola/service_discovery/flag_file_crawler.cpp`
- [Registration Flags](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_discovery/flag_file.cpp): `score/mw/com/impl/bindings/lola/service_discovery/flag_file.cpp`

### Shared Data

- [Service Data](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/service_data_storage.h): `score/mw/com/impl/bindings/lola/service_data_storage.h`
- [Event Slots](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/event_data_storage.cpp): `score/mw/com/impl/bindings/lola/event_data_storage.cpp`
- [Shared Memory](https://github.com/eclipse-score/communication/tree/main/score/memory/shared): `score/memory/shared`
- [Tracing Runtime](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/tracing/tracing_runtime.cpp): `score/mw/com/impl/bindings/lola/tracing/tracing_runtime.cpp`

### Messaging

- [Messaging Service](https://github.com/eclipse-score/communication/blob/main/score/mw/com/impl/bindings/lola/messaging/message_passing_service.cpp): `score/mw/com/impl/bindings/lola/messaging/message_passing_service.cpp`
- [Message Engine](https://github.com/eclipse-score/communication/blob/main/score/message_passing/engine.h): `score/message_passing/engine.h`

### Platform Transport

- [Unix Engine](https://github.com/eclipse-score/communication/blob/main/score/message_passing/unix_domain/unix_domain_engine.cpp): `score/message_passing/unix_domain/unix_domain_engine.cpp`
- [QNX Engine](https://github.com/eclipse-score/communication/blob/main/score/message_passing/qnx_dispatch/qnx_dispatch_engine.cpp): `score/message_passing/qnx_dispatch/qnx_dispatch_engine.cpp`

### Other components

- **Provider App**
- **Consumer App**
- **Operating System**

## Connections

- Provider App → Skeleton: offers service
- Consumer App → Discovery Client: searches service
- Skeleton → Service Data: registers elements
- Service Data → Event Slots: maps event slots
- Discovery Client → Flag Crawler: looks up services
- Flag Crawler → Registration Flags: reads registrations
- Discovery Client → Proxy: returns matches
- Consumer App → Proxy: uses service
- Provider App → Event Endpoints: publishes events
- Event Endpoints → Event Slots: accesses slots
- Event Slots → Shared Memory: stores samples
- Proxy → Shared Memory: reads samples
- Skeleton → Messaging Service: sends notifications
- Proxy → Messaging Service: receives notifications
- Provider App → Method Endpoints: serves calls
- Consumer App → Method Endpoints: invokes methods
- LoLa Runtime → Messaging Service: uses messaging
- Messaging Service → Message Engine: uses engine
- Message Engine → Unix Engine: selects on Unix
- Message Engine → QNX Engine: selects on QNX
- Unix Engine → Operating System: uses sockets
- QNX Engine → Operating System: uses dispatch
- LoLa Runtime → Tracing Runtime: supports tracing
