Skip to content

Commit

Permalink
438 readme document of wiki (#440)
Browse files Browse the repository at this point in the history
* Update the readme document of wiki pages
* Added a document to describe preprocessor definitions used in AREG SDK.
* updated links and renamed the document files to simplify browsing.
  • Loading branch information
aregtech authored Nov 10, 2024
1 parent 36107d0 commit dfd3c6a
Show file tree
Hide file tree
Showing 37 changed files with 385 additions and 125 deletions.
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
## Table of contents[![](https://raw.githubusercontent.com/aregtech/areg-sdk/master/docs/img/pin.svg)](#table-of-contents)
- [Motivation](#motivation)
- [Interface-centricity](#interface-centricity)
- [More than embedded](#more-than-embedded)
- [More than Embedded](#more-than-embedded)
- [Composition of AREG SDK](#composition-of-areg-sdk)
- [Getting Started: Clone and Build the AREG SDK](#getting-started-clone-and-build-the-areg-sdk)
- [Cloning Sources](#cloning-sources)
Expand Down Expand Up @@ -85,15 +85,15 @@ As data is generated and collected at the edge of the network (**mist network**)

## Interface-centricity[![](https://raw.githubusercontent.com/aregtech/areg-sdk/master/docs/img/pin.svg)](#interface-centricity)

At the core of AREG is **ORPC** (_Object Remote Procedure Call_), which targets interfaces on objects. This allows AREG to establish a **service mesh** or **service grid** where applications expose reusable services. Clients, without knowledge of the servers network location, can request services seamlessly via method invocation.
At the core of AREG is **ORPC** (_Object Remote Procedure Call_), which targets interfaces on objects. This allows AREG to establish a **service mesh** or **service grid** where applications expose reusable services. Clients, without knowledge of the server's network location, can request services seamlessly via method invocation.

<div align="center"><a href="https://github.com/aregtech/areg-sdk/blob/master/docs/img/interface-centric.png"><img src="https://raw.githubusercontent.com/aregtech/areg-sdk/master/docs/img/interface-centric.png" alt="Diagram showing multiprocess communication" style="width:50%;height:50%"/></a></div>

This **interface-driven Object RPC** model mirrors object-oriented programming principles and is flexible in managing multiple object instances. It imposes no protocol limitations and supports bi-directional communication to ensure seamless messaging between connected software nodes. In this model:
* **Service Providers** (*micro-server objects*) offer reusable, accessible services.
* **Service Consumers** (*client objects*) invoke services without needing to know the network details.

AREGs design integrates **Client-Server (Request-Reply)** and **Publish-Subscribe (PubSub)** models, enabling it to support both action- and data-centric communication.
AREG's design integrates **Client-Server (Request-Reply)** and **Publish-Subscribe (PubSub)** models, enabling it to support both action- and data-centric communication.

<div align="right"><kbd><a href="#table-of-contents">↑ Back to top ↑</a></kbd></div>

Expand Down Expand Up @@ -160,7 +160,7 @@ The following build tools are supported:
| **CMake** | `CMakeLists.txt` | Linux, Windows, Cygwin | POSIX, Win32 | Build with CMake, VSCode, or MSVS. |
| **MSBuild** | `areg-sdk.sln` | Windows | Win32 | Build with MSBuild or MSVS. |

For detailed build instructions, check the **[Software Build](./docs/wiki/BUILD.md)** page.
For detailed build instructions, check the **[Building AREG SDK with CMake](./docs/wiki/01b-cmake-build.md)** or **[Building the AREG SDK with Microsoft Visual Studio and MSBuild](./docs/wiki/01c-msvc-build.md)** pages.


> [!NOTE]
Expand All @@ -175,7 +175,7 @@ cmake -B ./build
cmake --build ./build -j 20
```

For custom builds, pass the options via the command line or configure the options listed in **[user.cmake](./docs/wiki/USER-CMAKE.md)** in CMake script.
For custom builds, pass the options via the command line or configure the options listed in **[user.cmake](./docs/wiki/02a-cmake-config.md)** in CMake script.

#### Build with Microsoft Visual Studio

Expand All @@ -185,12 +185,12 @@ Open `areg-sdk.sln` file in Microsoft Visual Studio and build the solution, or n
MSBuild ./areg-sdk.sln
```

For further details on customizing builds, visit the **[Build with MSBuild](./docs/wiki/MSVS-BUILD.md)** document.
For further details on customizing builds, visit the **[Building the AREG SDK with Microsoft Visual Studio and MSBuild](./docs/wiki/01c-msvc-build.md)** document.

#### Additional Build Options

- **IDE Support:** Includes instructions for **[Microsoft Visual Studio](./docs/wiki/MSVS-BUILD.md)** and **[Visual Studio Code](./docs/wiki/VSCODE.md)**.
- **WSL Support:** Detailed steps for building under **[Windows Subsystem for Linux (WSL)](./docs/wiki/WSL.md)** are provided.
- **IDE Support:** Includes instructions for **[Microsoft Visual Studio](./docs/wiki/01c-msvc-build.md)** and **[Visual Studio Code](./docs/wiki/01b-cmake-build.md)**.
- **WSL Support:** Detailed steps for building under **[Windows Subsystem for Linux (WSL)](./docs/wiki/01d-wsl-build.md)** are provided.

> [!NOTE]
> This chapter focuses on building AREG and examples using **Microsoft Visual Studio** and **Visual Studio Code**. The other IDEs are currently not in the focus.
Expand Down Expand Up @@ -228,15 +228,15 @@ endif()
include("${AREG_SDK_ROOT}/areg.cmake")
```

This either finds or fetches the AREG SDK components from `master` branch. See the **[CMake Integration Guide](./docs/wiki/cmake-integrate.md)** for more details.
This either finds or fetches the AREG SDK components from `master` branch. See the **[Building AREG SDK with CMake](./docs/wiki/02c-cmake-integrate.md)** page for more details.

#### 2. Integrate as a project submodule

1. Add `areg-sdk` as a **Git submodule** in your project.
2. Include the `*.vcxproj` files from `<areg-sdk>/framework` in your solution.
3. Link your project with the `areg` library and set project dependencies.

For full details, see the **[Visual Studio Integration Guide](./docs/wiki/MSVS-INTEGRATE.md)**.
For full details, see the **[Building the AREG SDK with Microsoft Visual Studio and MSBuild](./docs/wiki/01c-msvc-build.md)**.

#### 3. Integrate the `areg` Package (vcpkg)

Expand Down Expand Up @@ -267,7 +267,7 @@ Before starting, visit the **[official vcpkg](https://github.com/microsoft/vcpkg
#pragma comment(lib, "areg")
```

For details of installing and using `areg` package, see the appropriate **[integrate `areg` package](./docs/wiki/AREG-PACKAGE.md)** document.
For details of installing and using `areg` package, see the appropriate **[integrate `areg` package](./docs/wiki/01a-areg-package.md)** document.

### Service Creation and Development

Expand Down Expand Up @@ -318,13 +318,13 @@ You can also set up multiprocess applications using same components and changing

Both **mcrouter** and **logger** are essential components for communication and log collection. Configuration templates for the multicast router and log collector services are provided in the `areg.init` file. Both processes are designed to run as console applications or as **Operating System managed** services.

For in-depth details of building and using these applications, review the descriptions in **[Multicast Router Service](./docs/wiki/MCROUTER.md)** and **[Log Collector Service](./docs/wiki/LOGGER.md)** pages. *Discover how the AREG SDKs Multicast Router and Log Collector streamline communication and logging in edge computing and real-time data transfer systems.*
For in-depth details of building and using these applications, review the descriptions in **[Multicast Router Service](./docs/wiki/05a-mcrouter.md)** and **[Log Collector Service](./docs/wiki/04d-logcollector.md)** pages. *Discover how the AREG SDK's Multicast Router and Log Collector streamline communication and logging in edge computing and real-time data transfer systems.*
<div align="right"><kbd><a href="#table-of-contents">↑ Back to top ↑</a></kbd></div>
---
This version is strong, but a few minor adjustments can improve flow, consistency, and readability. Heres a refined version:
This version is strong, but a few minor adjustments can improve flow, consistency, and readability. Here's a refined version:

---

Expand All @@ -333,11 +333,11 @@ This version is strong, but a few minor adjustments can improve flow, consistenc
The AREG SDK offers hands-on examples demonstrating **Multithreading** and **Multiprocessing** applications, **Client-Server** and **Publish-Subscribe** models, **Object Remote Procedure Call (Object RPC)** and **Inter-Process Communication (IPC)**, featured **Finite-State Machines (FSM)** creation, and more. Each project highlights key features that facilitate efficient development of distributed services.

**Some Featured Examples:**
1. **[00_helloservice](./examples/00_helloservice/)**: Master service creation across single-threaded, multi-threaded, and multi-process environments, showcasing AREGs intuitive, interface-driven approach.
1. **[00_helloservice](./examples/00_helloservice/)**: Master service creation across single-threaded, multi-threaded, and multi-process environments, showcasing AREG's intuitive, interface-driven approach.
2. **[04_trace](./examples/04_trace/)**: Configure and manage logging to track application behavior, aiding debugging, performance analysis, and log management.
3. **[16_pubfsm](./examples/16_pubfsm/)**: Build and control a *Finite-State Machine (FSM)* with AREGs *Timers* and *Events* for smooth state transitions.
3. **[16_pubfsm](./examples/16_pubfsm/)**: Build and control a *Finite-State Machine (FSM)* with AREG's *Timers* and *Events* for smooth state transitions.

4. **[19_pubwatchdog](./examples/19_pubwatchdog/)**: Implement a watchdog to monitor thread activity, restart unresponsive threads, and notify components as needed.

Expand Down Expand Up @@ -398,13 +398,13 @@ For more information on commercial licensing, commercial support, trainings, or

## Call to action[![](https://raw.githubusercontent.com/aregtech/areg-sdk/master/docs/img/pin.svg)](#call-to-action)

We encourage the developer community to get involved and contribute to the growth of the AREG SDK. Join AREG SDK community and collaborate with AREG developers. Heres how you can help:
We encourage the developer community to get involved and contribute to the growth of the AREG SDK. Join AREG SDK community and collaborate with AREG developers. Here's how you can help:
- Check out our list of [open issues](https://github.com/aregtech/areg-sdk/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) where assistance is needed.
- If you have suggestions or need new features, open a [new issue](https://github.com/aregtech/areg-sdk/issues) or start a [discussion](https://github.com/aregtech/areg-sdk/discussions).
- For pull requests, ensure that the code adheres to our coding style and allow time for review and testing.
Lastly, help us grow the AREG SDK community by **giving a star** on GitHub! Whether youre working on **embedded applications**, **multiprocessing and multithreading applications**, **real-time data transfer**, **IoT applications**, or **microservices architecture**, your support helps us continue to improve this cutting-edge communication framework.
Lastly, help us grow the AREG SDK community by **giving a star** on GitHub! Whether you're working on **embedded applications**, **multiprocessing and multithreading applications**, **real-time data transfer**, **IoT applications**, or **microservices architecture**, your support helps us continue to improve this cutting-edge communication framework.

<div align="right"><kbd><a href="#table-of-contents">↑ Back to top ↑</a></kbd></div>

Expand Down
33 changes: 16 additions & 17 deletions areg-sdk.sln
Original file line number Diff line number Diff line change
Expand Up @@ -689,24 +689,23 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "example", "example", "{31AB
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wiki", "wiki", "{C33D0DF1-A5DB-4F6E-A526-6AA2B3C31AD3}"
ProjectSection(SolutionItems) = preProject
docs\wiki\areg-package.md = docs\wiki\areg-package.md
docs\wiki\build.md = docs\wiki\build.md
docs\wiki\cmake-build.md = docs\wiki\cmake-build.md
docs\wiki\cmake-config.md = docs\wiki\cmake-config.md
docs\wiki\cmake-functions.md = docs\wiki\cmake-functions.md
docs\wiki\cmake-integrate.md = docs\wiki\cmake-integrate.md
docs\wiki\code-generator.md = docs\wiki\code-generator.md
docs\wiki\logcollector.md = docs\wiki\logcollector.md
docs\wiki\logging-config.md = docs\wiki\logging-config.md
docs\wiki\logging-develop.md = docs\wiki\logging-develop.md
docs\wiki\logobserver.md = docs\wiki\logobserver.md
docs\wiki\mcrouter.md = docs\wiki\mcrouter.md
docs\wiki\msvc-build.md = docs\wiki\msvc-build.md
docs\wiki\msvc-integrate.md = docs\wiki\msvc-integrate.md
docs\wiki\persistence-syntax.md = docs\wiki\persistence-syntax.md
docs\wiki\01a-areg-package.md = docs\wiki\01a-areg-package.md
docs\wiki\01b-cmake-build.md = docs\wiki\01b-cmake-build.md
docs\wiki\01c-msvc-build.md = docs\wiki\01c-msvc-build.md
docs\wiki\01d-wsl-build.md = docs\wiki\01d-wsl-build.md
docs\wiki\02a-cmake-config.md = docs\wiki\02a-cmake-config.md
docs\wiki\02b-cmake-functions.md = docs\wiki\02b-cmake-functions.md
docs\wiki\02c-cmake-integrate.md = docs\wiki\02c-cmake-integrate.md
docs\wiki\02d-msvc-integrate.md = docs\wiki\02d-msvc-integrate.md
docs\wiki\02e-preprocessor-definitions.md = docs\wiki\02e-preprocessor-definitions.md
docs\wiki\03a-code-generator.md = docs\wiki\03a-code-generator.md
docs\wiki\04a-logging-config.md = docs\wiki\04a-logging-config.md
docs\wiki\04b-logging-develop.md = docs\wiki\04b-logging-develop.md
docs\wiki\04c-logobserver.md = docs\wiki\04c-logobserver.md
docs\wiki\04d-logcollector.md = docs\wiki\04d-logcollector.md
docs\wiki\05a-mcrouter.md = docs\wiki\05a-mcrouter.md
docs\wiki\06a-persistence-syntax.md = docs\wiki\06a-persistence-syntax.md
docs\wiki\README.md = docs\wiki\README.md
docs\wiki\vscode.md = docs\wiki\vscode.md
docs\wiki\wsl-build.md = docs\wiki\wsl-build.md
EndProjectSection
EndProject
Global
Expand Down
3 changes: 0 additions & 3 deletions conf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,5 @@ This document is a short introduction of folder content and configuration for di
## CMakeLists
The folder [./cmake](./cmkae/) contains project common and developer specific settings. Normally, it is expected to make custom changes only in the [user.cmake](./cmake/user.cmake) file. The content of the folder has impact when build project with `cmake` tool.

## Makefiles
The folder [./make](./make/) contains projects common and developer specific settings to change. Normally, it is expected to make custom changes only in the [./make/user.mk](./make/user.mk) file. The content of the folder has impact when build project with `make` tool.

## Microsoft Visual Studio
The folder [./msvc](./msvc/) contains Microsoft Visual Studio specific property files that are included in projects. Normally, it is expected to make custom changes only in the [./msvc/user.props](./msvc/user.props) file. The content of the foler has impact with build project with `MSBuild` build.
2 changes: 1 addition & 1 deletion conf/cmake/functions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ endmacro(macro_add_service_interface)
# The generated files are placed within the ${AREG_GENERATE_DIR},
# with a subdirectory structure specified by ${generate_path}.
# Parameters .: ${lib_name} -- The name of the static library to be created for the generated Service Interface code.
# ${source_root} -- The root directory containing the projects source files.
# ${source_root} -- The root directory containing the project's source files.
# ${siml_path} -- Path to the Service Interface document file (.siml), relative to the specified ${source_root}.
# ${generate_path} -- Subdirectory path within ${AREG_GENERATE_DIR} where the generated files will be stored.
# Usage ......: addServiceInterfaceEx(<library-name> <source-root> <service-interface-relative-path> <relative-path-to-generate-codes>)
Expand Down
2 changes: 1 addition & 1 deletion docs/ServiceInterface.md
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ To generate source code, execute `codegen.jar` with the following parameters:
java -jar ~/projects/areg-sdk/codegen.jar --root=~/projects/my_project --target=src/generated/ --doc=interface/MyService.siml
```

For more details see [AREG SDK Code Generator (`codegen.jar`)](./wiki/code-generator.md) document.
For more details see [AREG SDK Code Generator (`codegen.jar`)](./wiki/03a-code-generator.md) document.

---

Expand Down
File renamed without changes.
11 changes: 8 additions & 3 deletions docs/wiki/cmake-build.md → docs/wiki/01b-cmake-build.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,15 @@ This guide provides step-by-step instructions for building the **AREG SDK** on L
- [Platform-Specific Requirements](#platform-specific-requirements)
- [Configuration and Build Steps](#configuration-and-build-steps)
- [Step 1: Installing Dependencies](#step-1-installing-dependencies)
- [Linux](#linux)
- [Windows](#windows)
- [Cygwin](#cygwin)
- [Step 2: Cloning the AREG SDK Repository](#step-2-cloning-the-areg-sdk-repository)
- [Step 3: Configuring the Build](#step-3-configuring-the-build)
- [Step 4: Building the Project](#step-4-building-the-project)
- [Step 5: Running Tests and Installing](#step-5-running-tests-and-installing)
- [Run Unit Tests:](#run-unit-tests)
- [Install AREG SDK:](#install-areg-sdk)
- [Additional IDE Configurations](#additional-ide-configurations)

---
Expand All @@ -31,7 +36,7 @@ Ensure your system includes the following:
- **Windows**: Requires Microsoft Visual C++, including packages **CMake** and **CLang compiler for Windows**, and **MFC** for GUI examples.
- **Optional Libraries**:
- **Google Test (GTest)** for unit tests (or build from sources).
- **SQLite3** (optional, or use the version in AREG SDKs `thirdparty` directory).
- **SQLite3** (optional, or use the version in AREG SDK's `thirdparty` directory).

If your system does not meet these requirements, proceed to [Step 1: Installing Dependencies](#step-1-installing-dependencies); otherwise, start from [Step 2: Cloning the AREG SDK Repository](#step-2-cloning-the-areg-sdk-repository).

Expand Down Expand Up @@ -88,7 +93,7 @@ To customize the build, modify options as needed:
```bash
cmake -B ./build -DAREG_BUILD_TYPE=Debug -DAREG_EXAMPLES=ON -DAREG_TESTS=ON
```
For additional configurations, refer to the [CMake Configuration Guide](./cmake-config.md).
For additional configurations, refer to the [CMake Configuration Guide](./02a-cmake-config.md).

---

Expand Down Expand Up @@ -134,7 +139,7 @@ Install AREG SDK binaries and headers to develop multithreaded and multiprocessi
For **Microsoft Visual Studio** or **Visual Studio Code**:
1. Open the `<areg-sdk>` directory in your IDE.
2. Right-click `CMakeLists.txt` and select *Configure*.
3. Adjust [AREG SDK settings](./cmake-config.md) in the CMake cache if necessary, then build the project directly in the IDE.
3. Adjust [AREG SDK settings](./02a-cmake-config.md) in the CMake cache if necessary, then build the project directly in the IDE.

**Further Resources**:
For additional setup information, refer to [Visual Studio CMake Projects](https://learn.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio) or [VS Code CMake Quickstart](https://code.visualstudio.com/docs/cpp/cmake-quickstart).
2 changes: 1 addition & 1 deletion docs/wiki/msvc-build.md → docs/wiki/01c-msvc-build.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,5 +93,5 @@ For additional examples, see the [MSBuild Workflow](./../../.github/workflow/msb
### Additional Resources

- For additional setup information, refer to [Visual Studio CMake Projects](https://learn.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio) or [VS Code CMake Quickstart](https://code.visualstudio.com/docs/cpp/cmake-quickstart).
- Additionally, read [Integrating AREG Framework with Microsoft Visual Studio](./msvc-integrate.md) document.
- Additionally, read [Integrating AREG Framework with Microsoft Visual Studio](./02d-msvc-integrate.md) document.
- For more information on building the AREG SDK, troubleshooting tips, or advanced setup options, see the **AREG SDK documentation** on [GitHub](https://github.com/aregtech/areg-sdk).
Loading

0 comments on commit dfd3c6a

Please sign in to comment.