update readme
This commit is contained in:
59
README.md
59
README.md
@ -1,9 +1,19 @@
|
||||
# IACore (Independent Architecture Core)
|
||||
|
||||

|
||||

|
||||

|
||||
<div align="center">
|
||||
<img src="logo.svg" alt="IACore Logo" width="400"/>
|
||||
<br/>
|
||||
|
||||
<img src="https://img.shields.io/badge/license-GPLv3-blue.svg" alt="License"/>
|
||||
<img src="https://img.shields.io/badge/standard-C%2B%2B20-yellow.svg" alt="C++ Standard"/>
|
||||
<img src="https://img.shields.io/badge/platform-Windows%20%7C%20Linux-lightgrey.svg" alt="Platform"/>
|
||||
|
||||
<p>
|
||||
<b>The Battery-Included Foundation for High-Performance C++ Applications.</b>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## 📖 Description
|
||||
IACore is a high-performance, battery-included C++20 foundation library designed to eliminate "dependency hell." It bundles essential systems—IPC, Logging, Networking, Compression, and Async Scheduling—into a single, coherent API.
|
||||
|
||||
Originally developed as the internal core for IASoft (PVT) LTD., it is now open-source to provide a standardized bedrock for C++ applications.
|
||||
@ -35,17 +45,16 @@ target_link_libraries(MyApp PRIVATE IACore)
|
||||
## 📦 Dependencies
|
||||
IACore manages its own dependencies via CMake's FetchContent. You do not need to install these manually:
|
||||
|
||||
* nlohmann_json & glaze (JSON Parsing)
|
||||
* cpp-httplib (Networking)
|
||||
* zlib-ng & zstd (Compression)
|
||||
* tl-expected (Error Handling)
|
||||
* **JSON:** `nlohmann_json`, `glaze`, & `simdjson`
|
||||
* **Networking:** `cpp-httplib`
|
||||
* **Compression:** `zlib-ng` & `zstd`
|
||||
* **Utilities:** `tl-expected` & `unordered_dense`
|
||||
|
||||
## 💡 Usage Examples
|
||||
### 1. IPC (Manager & Node)
|
||||
IACore provides a manager/node architecture using shared memory.
|
||||
|
||||
Manager:
|
||||
|
||||
#### Manager:
|
||||
```C++
|
||||
#include <IACore/IPC.hpp>
|
||||
|
||||
@ -58,6 +67,36 @@ String msg = "Hello Node";
|
||||
manager.SendPacket(*nodeID, 100, {(PCUINT8)msg.data(), msg.size()});
|
||||
```
|
||||
|
||||
#### Node:
|
||||
```C++
|
||||
#include <IACore/IPC.hpp>
|
||||
|
||||
class Node : public IACore::IPC_Node {
|
||||
public:
|
||||
void OnSignal(uint8_t signal) override {
|
||||
// Handle signals
|
||||
}
|
||||
|
||||
void OnPacket(uint16_t packetID, std::span<const uint8_t> payload) override {
|
||||
// Handle packets
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
// The connection string is passed as the first argument by the Manager
|
||||
if (argc < 2) return -1;
|
||||
|
||||
Node node;
|
||||
// Connect back to the manager via Shared Memory
|
||||
if (!node.Connect(argv[1])) return -1;
|
||||
|
||||
while(true) {
|
||||
node.Update();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Async Jobs
|
||||
```C++
|
||||
|
||||
@ -81,7 +120,7 @@ IACore::AsyncOps::WaitForScheduleCompletion(mySchedule);
|
||||
```C++
|
||||
#include <IACore/HttpClient.hpp>
|
||||
|
||||
IACore::HttpClient client("[https://api.example.com](https://api.example.com)");
|
||||
IACore::HttpClient client("https://api.example.com");
|
||||
auto res = client.JsonGet<MyResponseStruct>("/data", {});
|
||||
|
||||
if (res) {
|
||||
|
||||
23
logo.svg
Normal file
23
logo.svg
Normal file
@ -0,0 +1,23 @@
|
||||
<svg width="400" height="120" viewBox="0 0 400 120" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<style>
|
||||
.text { font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-weight: bold; }
|
||||
.secondary { font-weight: 300; letter-spacing: 2px; }
|
||||
</style>
|
||||
|
||||
<g transform="translate(20, 10)">
|
||||
<path d="M50 5 L93.3 30 V80 L50 105 L6.7 80 V30 L50 5 Z" stroke="#3b82f6" stroke-width="4"
|
||||
fill="none" />
|
||||
|
||||
<rect x="42" y="25" width="16" height="60" rx="2" fill="#3b82f6" />
|
||||
|
||||
<circle cx="20" cy="55" r="4" fill="#60a5fa" />
|
||||
<circle cx="80" cy="55" r="4" fill="#60a5fa" />
|
||||
<path d="M24 55 H42" stroke="#60a5fa" stroke-width="2" />
|
||||
<path d="M58 55 H76" stroke="#60a5fa" stroke-width="2" />
|
||||
</g>
|
||||
|
||||
<text x="120" y="65" fill="#e2e8f0" font-size="52" class="text">IACore</text>
|
||||
|
||||
<text x="122" y="95" fill="#94a3b8" font-size="14" class="secondary">INDEPENDENT ARCHITECTURE</text>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 979 B |
Reference in New Issue
Block a user