# vekt1n/baseipcrealization architecture

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

- Interactive diagram: https://gitdiagram.com/vekt1n/baseipcrealization
- Repository: https://github.com/vekt1n/baseipcrealization
- Video tour (about a minute): https://gitdiagram.com/vekt1n/baseipcrealization/video

## Overview

This Linux IPC message bus lets processes exchange messages through POSIX shared-memory queues; tagged publishing adds subscription-based fan-out. Writers publish tagged data, the adapter routes it to subscribed reader queues, and readers consume it; log-tagged messages are forwarded to the logger. The repository also provides daemon lifecycle support and an IPC manager. Adapter routing and persistence are documented and partly sampled; logger behavior and some daemon wiring are described in the README but their implementations were not sampled.

Main entry points: [`MessageBussSubscribtions/SubscribtionsBuss.cpp`](https://github.com/vekt1n/baseipcrealization/blob/main/MessageBussSubscribtions/SubscribtionsBuss.cpp) (Subscription Adapter), [`daemons/reader_daemon.cpp`](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/reader_daemon.cpp) (Reader Daemon), [`SharedMemory/src/BaseMemory.cpp`](https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/BaseMemory.cpp) (BaseMemory IPC), [`daemons/writer1_daemon.cpp`](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/writer1_daemon.cpp) (Writer One)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_messaging["Messaging"]
  node_adapter["Subscription Adapter"]
  node_loggerlib["Logger Library<br/>[Logger.cpp]"]
  node_memory["BaseMemory IPC<br/>[BaseMemory.cpp]"]
end

subgraph group_services["Runtime Services"]
  node_writer1["Writer One<br/>[writer1_daemon.cpp]"]
  node_writer2["Writer Two<br/>[writer2_daemon.cpp]"]
  node_reader["Reader Daemon<br/>[reader_daemon.cpp]"]
  node_logger["Logger Daemon<br/>[logger_daemon.cpp]"]
end

subgraph group_operations["Process Management"]
  node_daemonizer["Daemon Lifecycle<br/>[Daemonizer.cpp]"]
  node_manager["IPC Manager<br/>[ipc_manager.cpp]"]
end

subgraph group_storage["IPC State"]
  node_shm[("POSIX Shared Memory")]
  node_subscriptions["Subscription JSON"]
end

node_operator(("Operator"))
node_processes["Managed Processes"]

node_writer1 -->|"publishes via"| node_memory
node_writer2 -->|"publishes via"| node_memory
node_reader -->|"reads via"| node_memory
node_adapter -->|"reads and sends"| node_memory
node_memory -->|"reads and writes"| node_shm
node_writer1 -->|"publishes tags"| node_adapter
node_writer2 -->|"publishes tags"| node_adapter
node_reader -->|"subscribes via"| node_adapter
node_adapter -->|"dispatches messages"| node_reader
node_adapter -->|"forwards log tags"| node_logger
node_logger -->|"logs events"| node_loggerlib
node_adapter -->|"loads and saves"| node_subscriptions
node_writer1 -->|"logs locally"| node_loggerlib
node_writer2 -->|"logs locally"| node_loggerlib
node_reader -->|"logs locally"| node_loggerlib
node_writer1 -->|"uses lifecycle"| node_daemonizer
node_writer2 -->|"uses lifecycle"| node_daemonizer
node_reader -->|"uses lifecycle"| node_daemonizer
node_adapter -->|"uses lifecycle"| node_daemonizer
node_operator -->|"controls daemons"| node_manager
node_manager -->|"starts and stops"| node_processes

click node_writer1 "https://github.com/vekt1n/baseipcrealization/blob/main/daemons/writer1_daemon.cpp"
click node_writer2 "https://github.com/vekt1n/baseipcrealization/blob/main/daemons/writer2_daemon.cpp"
click node_reader "https://github.com/vekt1n/baseipcrealization/blob/main/daemons/reader_daemon.cpp"
click node_adapter "https://github.com/vekt1n/baseipcrealization/blob/main/MessageBussSubscribtions/SubscribtionsBuss.cpp"
click node_logger "https://github.com/vekt1n/baseipcrealization/blob/main/daemons/logger_daemon.cpp"
click node_loggerlib "https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/Logger.cpp"
click node_memory "https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/BaseMemory.cpp"
click node_daemonizer "https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/Daemonizer.cpp"
click node_manager "https://github.com/vekt1n/baseipcrealization/blob/main/daemons/ipc_manager.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_adapter,node_loggerlib,node_memory toneBlue
class node_writer1,node_writer2,node_reader,node_logger toneAmber
class node_daemonizer,node_manager toneMint
class node_shm,node_subscriptions toneRose
class node_operator,node_processes toneIndigo
```

## Components

### Messaging

- [Subscription Adapter](https://github.com/vekt1n/baseipcrealization/blob/main/MessageBussSubscribtions/SubscribtionsBuss.cpp): `MessageBussSubscribtions/SubscribtionsBuss.cpp`
- [Logger Library](https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/Logger.cpp): `SharedMemory/src/Logger.cpp`
- [BaseMemory IPC](https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/BaseMemory.cpp): `SharedMemory/src/BaseMemory.cpp`

### Runtime Services

- [Writer One](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/writer1_daemon.cpp): `daemons/writer1_daemon.cpp`
- [Writer Two](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/writer2_daemon.cpp): `daemons/writer2_daemon.cpp`
- [Reader Daemon](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/reader_daemon.cpp): `daemons/reader_daemon.cpp`
- [Logger Daemon](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/logger_daemon.cpp): `daemons/logger_daemon.cpp`

### Process Management

- [Daemon Lifecycle](https://github.com/vekt1n/baseipcrealization/blob/main/SharedMemory/src/Daemonizer.cpp): `SharedMemory/src/Daemonizer.cpp`
- [IPC Manager](https://github.com/vekt1n/baseipcrealization/blob/main/daemons/ipc_manager.cpp): `daemons/ipc_manager.cpp`

### IPC State

- **POSIX Shared Memory**
- **Subscription JSON**

### Other components

- **Operator**
- **Managed Processes**

## Connections

- Writer One → BaseMemory IPC: publishes via
- Writer Two → BaseMemory IPC: publishes via
- Reader Daemon → BaseMemory IPC: reads via
- Subscription Adapter → BaseMemory IPC: reads and sends
- BaseMemory IPC → POSIX Shared Memory: reads and writes
- Writer One → Subscription Adapter: publishes tags
- Writer Two → Subscription Adapter: publishes tags
- Reader Daemon → Subscription Adapter: subscribes via
- Subscription Adapter → Reader Daemon: dispatches messages
- Subscription Adapter → Logger Daemon: forwards log tags
- Logger Daemon → Logger Library: logs events
- Subscription Adapter → Subscription JSON: loads and saves
- Writer One → Logger Library: logs locally
- Writer Two → Logger Library: logs locally
- Reader Daemon → Logger Library: logs locally
- Writer One → Daemon Lifecycle: uses lifecycle
- Writer Two → Daemon Lifecycle: uses lifecycle
- Reader Daemon → Daemon Lifecycle: uses lifecycle
- Subscription Adapter → Daemon Lifecycle: uses lifecycle
- Operator → IPC Manager: controls daemons
- IPC Manager → Managed Processes: starts and stops
