# hayeon-lee/someip-simulator architecture

> Architecture diagram of the GitHub repository hayeon-lee/someip-simulator, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hayeon-lee/someip-simulator
- Repository: https://github.com/hayeon-lee/someip-simulator

## Overview

vSomeIP is a C++ SOME/IP middleware stack. Its principal workflow starts with an application using the public API, proceeds through runtime and routing to local or network transport, and delivers SOME/IP messages to another application; service discovery supports finding and announcing remote services. Configuration, security, plugins, tracing, logging, and E2E protection are additional product capabilities. The tree and excerpts establish module responsibilities, but do not expose enough call sites to verify every runtime handoff, so unverified links are dashed.

Main entry points: [`implementation/routing/src/routing_manager_impl.cpp`](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_manager_impl.cpp) (Routing manager), [`implementation/endpoints/src/endpoint_manager_impl.cpp`](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/endpoint_manager_impl.cpp) (Endpoint manager), [`implementation/routing/src/routing_manager_client.cpp`](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_manager_client.cpp) (Client routing), [`implementation/runtime/src/runtime.cpp`](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/runtime.cpp) (Runtime API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api_runtime["Application runtime"]
  node_app["SOME/IP application<br/>[application.hpp]"]
  node_runtime["Runtime API<br/>[runtime.cpp]"]
  node_application_impl["Application lifecycle"]
  node_routing_application["Routing bootstrap"]
end

subgraph group_routing["Service routing"]
  node_routing_client["Client routing"]
  node_routing_core["Routing manager"]
  node_routing_state["Client state"]
  node_events["Events and groups<br/>[event.cpp]"]
  node_service_info["Service registry<br/>[serviceinfo.cpp]"]
  node_discovery["Service discovery"]
end

subgraph group_transport["Communication transport"]
  node_endpoint_manager["Endpoint manager"]
  node_local_endpoint["Local IPC endpoint<br/>[local_endpoint.hpp]"]
  node_tcp_endpoint["TCP endpoints"]
  node_udp_endpoint["UDP endpoints"]
end

subgraph group_message["Messages and protection"]
  node_message_codec["Message codec<br/>[serializer.cpp]"]
  node_message_model["Message model<br/>[message_impl.cpp]"]
  node_e2e["E2E protection<br/>[config.cpp]"]
end

subgraph group_support["Configuration and extensions"]
  node_configuration["Configuration"]
  node_security["Security policies"]
  node_plugins["Plugin manager"]
  node_tracing["Tracing<br/>[connector_impl.cpp]"]
  node_logger["Logging<br/>[logger_impl.cpp]"]
end

node_app -.->|"uses API"| node_runtime
node_runtime -.->|"creates application"| node_application_impl
node_application_impl -.->|"starts routing"| node_routing_application
node_routing_application -->|"initializes"| node_routing_core
node_routing_client -->|"uses state"| node_routing_state
node_routing_client -.->|"routes requests"| node_routing_core
node_routing_core -->|"manages endpoints"| node_endpoint_manager
node_routing_core -->|"uses discovery"| node_discovery
node_routing_core -->|"updates events"| node_events
node_routing_core -->|"tracks services"| node_service_info
node_endpoint_manager -->|"creates local IPC"| node_local_endpoint
node_endpoint_manager -->|"creates TCP"| node_tcp_endpoint
node_endpoint_manager -->|"creates UDP"| node_udp_endpoint
node_routing_core -->|"serializes messages"| node_message_codec
node_message_codec -.->|"encodes message"| node_message_model
node_discovery -.->|"uses transport"| node_endpoint_manager
node_configuration -.->|"provides settings"| node_routing_core
node_security -->|"checks permissions"| node_routing_client
node_plugins -.->|"loads extensions"| node_configuration
node_tracing -.->|"observes traffic"| node_routing_core
node_routing_core -.->|"logs activity"| node_logger
node_e2e -.->|"protects payloads"| node_message_model

click node_app "https://github.com/hayeon-lee/someip-simulator/blob/main/interface/vsomeip/application.hpp"
click node_runtime "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/runtime.cpp"
click node_application_impl "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/application_impl.cpp"
click node_routing_application "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/routing_application.cpp"
click node_routing_client "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_manager_client.cpp"
click node_routing_core "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_manager_impl.cpp"
click node_routing_state "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_client_state_machine.cpp"
click node_events "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/event.cpp"
click node_service_info "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/serviceinfo.cpp"
click node_discovery "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/service_discovery/src/service_discovery_impl.cpp"
click node_endpoint_manager "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/endpoint_manager_impl.cpp"
click node_local_endpoint "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/include/local_endpoint.hpp"
click node_tcp_endpoint "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/tcp_client_endpoint_impl.cpp"
click node_udp_endpoint "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/udp_client_endpoint_impl.cpp"
click node_message_codec "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/message/src/serializer.cpp"
click node_message_model "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/message/src/message_impl.cpp"
click node_e2e "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/e2e_protection/src/e2exf/config.cpp"
click node_configuration "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/configuration/src/configuration_impl.cpp"
click node_security "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/security/src/policy_manager_impl.cpp"
click node_plugins "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/plugin/src/plugin_manager_impl.cpp"
click node_tracing "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/tracing/src/connector_impl.cpp"
click node_logger "https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/logger/src/logger_impl.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_app,node_runtime,node_application_impl,node_routing_application toneBlue
class node_routing_client,node_routing_core,node_routing_state,node_events,node_service_info,node_discovery toneAmber
class node_endpoint_manager,node_local_endpoint,node_tcp_endpoint,node_udp_endpoint toneMint
class node_message_codec,node_message_model,node_e2e toneRose
class node_configuration,node_security,node_plugins,node_tracing,node_logger toneIndigo
```

## Components

### Application runtime

- [SOME/IP application](https://github.com/hayeon-lee/someip-simulator/blob/main/interface/vsomeip/application.hpp): `interface/vsomeip/application.hpp`
- [Runtime API](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/runtime.cpp): `implementation/runtime/src/runtime.cpp`
- [Application lifecycle](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/application_impl.cpp): `implementation/runtime/src/application_impl.cpp`
- [Routing bootstrap](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/runtime/src/routing_application.cpp): `implementation/runtime/src/routing_application.cpp`

### Service routing

- [Client routing](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_manager_client.cpp): `implementation/routing/src/routing_manager_client.cpp`
- [Routing manager](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_manager_impl.cpp): `implementation/routing/src/routing_manager_impl.cpp`
- [Client state](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/routing_client_state_machine.cpp): `implementation/routing/src/routing_client_state_machine.cpp`
- [Events and groups](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/event.cpp): `implementation/routing/src/event.cpp`
- [Service registry](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/routing/src/serviceinfo.cpp): `implementation/routing/src/serviceinfo.cpp`
- [Service discovery](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/service_discovery/src/service_discovery_impl.cpp): `implementation/service_discovery/src/service_discovery_impl.cpp`

### Communication transport

- [Endpoint manager](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/endpoint_manager_impl.cpp): `implementation/endpoints/src/endpoint_manager_impl.cpp`
- [Local IPC endpoint](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/include/local_endpoint.hpp): `implementation/endpoints/include/local_endpoint.hpp`
- [TCP endpoints](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/tcp_client_endpoint_impl.cpp): `implementation/endpoints/src/tcp_client_endpoint_impl.cpp`
- [UDP endpoints](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/endpoints/src/udp_client_endpoint_impl.cpp): `implementation/endpoints/src/udp_client_endpoint_impl.cpp`

### Messages and protection

- [Message codec](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/message/src/serializer.cpp): `implementation/message/src/serializer.cpp`
- [Message model](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/message/src/message_impl.cpp): `implementation/message/src/message_impl.cpp`
- [E2E protection](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/e2e_protection/src/e2exf/config.cpp): `implementation/e2e_protection/src/e2exf/config.cpp`

### Configuration and extensions

- [Configuration](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/configuration/src/configuration_impl.cpp): `implementation/configuration/src/configuration_impl.cpp`
- [Security policies](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/security/src/policy_manager_impl.cpp): `implementation/security/src/policy_manager_impl.cpp`
- [Plugin manager](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/plugin/src/plugin_manager_impl.cpp): `implementation/plugin/src/plugin_manager_impl.cpp`
- [Tracing](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/tracing/src/connector_impl.cpp): `implementation/tracing/src/connector_impl.cpp`
- [Logging](https://github.com/hayeon-lee/someip-simulator/blob/main/implementation/logger/src/logger_impl.cpp): `implementation/logger/src/logger_impl.cpp`

## Connections

- SOME/IP application → Runtime API: uses API
- Runtime API → Application lifecycle: creates application
- Application lifecycle → Routing bootstrap: starts routing
- Routing bootstrap → Routing manager: initializes (evidence: `implementation/runtime/src/routing_application.cpp`)
- Client routing → Client state: uses state (evidence: `implementation/routing/src/routing_manager_client.cpp`)
- Client routing → Routing manager: routes requests
- Routing manager → Endpoint manager: manages endpoints
- Routing manager → Service discovery: uses discovery
- Routing manager → Events and groups: updates events (evidence: `implementation/routing/src/routing_manager_impl.cpp`)
- Routing manager → Service registry: tracks services (evidence: `implementation/routing/src/routing_manager_impl.cpp`)
- Endpoint manager → Local IPC endpoint: creates local IPC (evidence: `implementation/endpoints/src/endpoint_manager_impl.cpp`)
- Endpoint manager → TCP endpoints: creates TCP (evidence: `implementation/endpoints/src/endpoint_manager_impl.cpp`)
- Endpoint manager → UDP endpoints: creates UDP (evidence: `implementation/endpoints/src/endpoint_manager_impl.cpp`)
- Routing manager → Message codec: serializes messages (evidence: `implementation/routing/src/routing_manager_impl.cpp`)
- Message codec → Message model: encodes message
- Service discovery → Endpoint manager: uses transport
- Configuration → Routing manager: provides settings
- Security policies → Client routing: checks permissions (evidence: `implementation/routing/src/routing_manager_client.cpp`)
- Plugin manager → Configuration: loads extensions
- Tracing → Routing manager: observes traffic
- Routing manager → Logging: logs activity
- E2E protection → Message model: protects payloads
