ahamlabs / ahamlabs/toolB

[Refactor] Port Core Kernel to C++17 for Reactor Pattern & Service State Management

Ouverte
#35 0 commentaires 0 réactions 1 personne assignée Réclamée par @psypherion Voir sur GitHub
enhancement
Langage dominant
C
Étoiles
0
Forks
1
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

🚀 Context & Motivation
To evolve toolB from a raw concurrent server into a comprehensive Middleware Kernel, we need to implement complex state management features (Rate Limiting maps, Auth caches) and a more robust I/O model (Reactor Pattern/Epoll).

While C is performant, it lacks the standard containers and RAII (Resource Acquisition Is Initialization) semantics required to implement these features safely and maintainably. We are migrating the heartware_server to Systems C++ (C++17).

This is not a move to heavy object-oriented programming. We will adhere to a "Flat C++" style:

Using std:: containers for internal state.

Using RAII for resource management (Sockets, FD closure).

Keeping the Shared Memory boundary strictly C-compatible (POD types).

🎯 Objectives
1. Enable Complex State: Allow usage of std::unordered_map for O(1) IP tracking and Rate Limiting.

2. Safety & Cleanup: Replace manual close()/free() calls with RAII wrappers to prevent file descriptor leaks in the future Event Loop.

3. Prepare for Reactor: Establish the foundation for the transition from "Thread-per-Connection" to "Epoll/Event Loop".

🛠 Implementation Tasks

- [ ] Build System Update
- [ ] Update Makefile to use g++ (or clang++) instead of gcc.
- [ ] Set standard flags: -std=c++17 -O3 -Wall -pthread.
- [ ] File Migration
- [ ] Rename src/heartware_server.c → src/heartware_server.cpp.
- [ ] Rename src/c_parser.c → src/c_parser.cpp.
- [ ] SHM Compatibility Layer
- [ ] Wrap toolb_shm.h contents in extern "C" { ... } blocks.
- [ ] CRITICAL: Ensure all Shared Memory structs remain POD (Plain Old Data) types. Do not use std::string or std::vector inside the SHM structs, as this will break Python ctypes compatibility.
- [ ] Code Modernization (Phase 1)
- [ ] Replace malloc/free with new/delete or smart pointers (std::unique_ptr) for internal heap allocations.
- [ ] Create a basic Connection class wrapper to handle socket closing automatically on destruction.
- [ ] ⚠️ Constraints
- [ ] Zero-Copy Logic: The core ring buffer logic must remain pointer-based arithmetic to ensure zero-copy performance.
- [ ] Python Compatibility: No changes should be required on the Python side (toolb_shm_structs.py) during this refactor. The memory layout must remain identical.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.