Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
02eb6b3
first version
ClausKlein Mar 9, 2025
ebeb90a
clang-format all files
ClausKlein Mar 9, 2025
b6691f2
add rrcp_client
ClausKlein Mar 9, 2025
5f7ad12
fix clang-tidy warnings
ClausKlein Mar 9, 2025
f54030f
sort includes
ClausKlein Mar 9, 2025
f5fb98a
Add timer example
ClausKlein Mar 9, 2025
186c3bc
Add GNUmakefile for test
ClausKlein Mar 11, 2025
d70909c
Trim comments and WS
ClausKlein Mar 11, 2025
c3c965e
Use msg length as hex
ClausKlein Mar 12, 2025
7f0f101
Add esc test
ClausKlein Mar 12, 2025
d7fc083
The final cut
ClausKlein Mar 12, 2025
e87ef0a
Cleanup
ClausKlein Mar 12, 2025
1520c96
Prevent more clang-tidy warnings
ClausKlein Mar 12, 2025
a88110a
Fix misc_include_cleaner warnings
ClausKlein Mar 12, 2025
4807b10
Finish the simplest rrcp client
ClausKlein Mar 12, 2025
939c09c
Add async_tcp_echo_client.cpp
ClausKlein Mar 13, 2025
b46c0e2
Prevent more clang-tidy warnings
ClausKlein Mar 13, 2025
6a2fa78
Now it works fine
ClausKlein Mar 13, 2025
678e99a
Modernize timer example
ClausKlein Mar 14, 2025
c2314c7
Modernize async_tcp_client example
ClausKlein Mar 14, 2025
a655022
Add gcovr config files
ClausKlein Mar 14, 2025
337a352
Fix more clang-tidy warnings
ClausKlein Mar 14, 2025
35addf6
Use a write message queue
ClausKlein Mar 14, 2025
d724ccd
Use enable_shared_from_this<>
ClausKlein Mar 15, 2025
2584f7c
Prevent more clang-tidy warnings
ClausKlein Mar 16, 2025
00f89a5
Try to fix heartbeat handling
ClausKlein Mar 16, 2025
4bc35b9
Add signal handler to async server
ClausKlein Mar 16, 2025
baa04bb
Add Signal and error handling
ClausKlein Mar 16, 2025
93f3383
Cleanup the code
ClausKlein Mar 16, 2025
4e30d6c
Modernize rrcp_helper
ClausKlein Mar 16, 2025
e4b1a82
Modernize and format the code again
ClausKlein Mar 16, 2025
a171a77
Add rrcp_async_tcp_client.cpp
ClausKlein Mar 16, 2025
ad0a22c
The final cut
ClausKlein Mar 17, 2025
f5b917c
Add more ctests
ClausKlein Mar 17, 2025
4fd771f
Prevent runtime_error exections
ClausKlein Mar 18, 2025
796d3d0
Use a write msg queue
ClausKlein Mar 18, 2025
bf8e59a
Reorder the test data set
ClausKlein Mar 18, 2025
0088fe6
Add Base64 encoding
ClausKlein Mar 18, 2025
2ed3e66
Add more base64 tests
ClausKlein Mar 19, 2025
78dc2c7
Add even more tests
ClausKlein Mar 19, 2025
889a54e
Change base64 tests according to RFC
ClausKlein Mar 20, 2025
03229b0
Add examples too
ClausKlein Mar 20, 2025
d67e4ad
Fix format in Readme
ClausKlein Mar 20, 2025
798db5b
Move base64 reference docu into tests
ClausKlein Mar 20, 2025
4bd1aa2
Changes after review
ClausKlein Mar 20, 2025
a34e2d3
Merge branch 'feature/tests-without-queue' into develop
ClausKlein Mar 21, 2025
0359352
Use Boost::beast::base64
ClausKlein Mar 21, 2025
2f477a0
Remove WS from base64 strings before decode
ClausKlein Mar 21, 2025
52309a9
Use std::ranges if available
ClausKlein Mar 21, 2025
09ed3e0
Prevent build errors on debian
ClausKlein Mar 25, 2025
5a38c2d
Increase test coverage
ClausKlein Mar 25, 2025
6a0aa7b
Merge branch 'feature/use-boost-beast-base64' into develop
ClausKlein Mar 30, 2025
4317190
Create RRCP::async_rrcp_client class
ClausKlein Mar 30, 2025
62ad716
Fix more clang-tidy warnings
ClausKlein Mar 30, 2025
6da233c
Build static lib rrcp_helper using c++17 only
ClausKlein Mar 30, 2025
36e7d28
Link only Boost::headers
ClausKlein Mar 30, 2025
159c780
Little more modernize
ClausKlein Mar 30, 2025
3f06b4a
Use read msg queue
ClausKlein Mar 31, 2025
5cfb621
Add message number handling
ClausKlein Apr 1, 2025
e85a7e4
Make it works for Get, Set, and Trap commands
ClausKlein Apr 1, 2025
3f72929
Fix typo
ClausKlein Apr 1, 2025
d19be7d
Fix more readability clang-tidy isssues
ClausKlein Apr 1, 2025
5a6c670
Merge pull request #4 from ClausKlein/feature/use-read-msg-queue
ClausKlein Apr 1, 2025
e2237d5
Cleanup and create log file
ClausKlein Apr 1, 2025
0eb25f7
Be less verbose
ClausKlein Apr 2, 2025
0e689d1
Add a missing note and fix a typo
ClausKlein Apr 2, 2025
1098071
Merge branch 'feature/create-rrcp-client-class' into develop
ClausKlein Apr 3, 2025
842b4f7
Separate examples, tests, and sources
ClausKlein Apr 3, 2025
f0a09b0
Prepare refactory
ClausKlein Apr 3, 2025
5133ad0
Finish refactory
ClausKlein Apr 3, 2025
badd255
Use Boost::ut framwork
ClausKlein Apr 4, 2025
e6e338f
Add more tests
ClausKlein Apr 4, 2025
35a8a72
Cleanup unit test
ClausKlein Apr 4, 2025
8ca2128
Add missing test
ClausKlein Apr 4, 2025
c61da3d
Use better test name
ClausKlein Apr 4, 2025
0a49b6f
Use std::quoted() and ut::log()
ClausKlein Apr 4, 2025
4406d59
Remove stupit sample
ClausKlein Apr 5, 2025
4d68eef
Start to refactory the rrcp_message class too
ClausKlein Apr 6, 2025
cc46ed6
Continue to refactory the rrcp_message class
ClausKlein Apr 6, 2025
0e47b1c
Add more tests
ClausKlein Apr 6, 2025
afb5662
Tested with docker and ubuntu-20.04
ClausKlein Apr 6, 2025
f06df4f
Add more tests
ClausKlein Apr 7, 2025
5db0064
Use boost::signals2
ClausKlein Apr 14, 2025
894e3d3
Fix typos
ClausKlein Apr 14, 2025
d4e04fc
Change readability-identifier-naming rules
ClausKlein Apr 15, 2025
bb35eca
Merge branch 'feature/refactory-and-increase-coverage' into develop
ClausKlein Apr 24, 2025
4564c6b
Add rrcp ANTLR4 grammer
ClausKlein May 13, 2025
40a1725
Add more rrcp test samples
ClausKlein May 13, 2025
142aad6
Make it works under ubuntu too
ClausKlein May 13, 2025
69e6b15
Add new rrcp command samples
ClausKlein May 13, 2025
a84a93b
Update fmt version to v11.2.0
ClausKlein May 13, 2025
fd1d913
Prevent more clang-tidy warnings
ClausKlein May 13, 2025
16994fd
Cleanup on OSX
ClausKlein May 13, 2025
cadb49f
Deregitster traps again in examples
ClausKlein May 28, 2025
ff76347
Upgrade most packages used
ClausKlein Oct 27, 2025
ff54775
Prepare thread save rrcp client
ClausKlein Oct 28, 2025
4be62f0
Add beman infra structur files
ClausKlein Oct 28, 2025
190f68f
Add async_rrcp_client_threadsafe.hpp
ClausKlein Oct 28, 2025
e9f4ab9
Update pre-commit config
ClausKlein Oct 28, 2025
f924137
Install libboost-dev in docker too
ClausKlein Oct 28, 2025
0bf2cc7
Use boost-cmake and CPM.cmake
ClausKlein Oct 28, 2025
1562381
Disable not threadsave tests for now
ClausKlein Oct 28, 2025
068d851
Use Boost::headers only
ClausKlein Oct 28, 2025
3cdfa37
Ignore CODEOWNERS
ClausKlein Oct 28, 2025
1cbeeef
Setup env in CI workflow file
ClausKlein Oct 29, 2025
27c8a80
Add more Boost find hacks
ClausKlein Oct 29, 2025
9ffa186
Use threadsave version
ClausKlein Oct 29, 2025
228c7dc
Add python test script
ClausKlein Oct 29, 2025
0fd075c
Test with corrupted respoce messages too
ClausKlein Oct 30, 2025
d0299d8
Make ctest more usable
ClausKlein Oct 30, 2025
0e90027
Cleanup test script
ClausKlein Oct 30, 2025
de5c4be
Add timout handling to simple rrcp client read
ClausKlein Oct 30, 2025
51fb658
Refactory py test script
ClausKlein Oct 30, 2025
2a711b4
Merge pull request #8 from ClausKlein/feature/upgrade_used_packages
ClausKlein Oct 31, 2025
f70ecba
Bump version: 0.2.0-rc1 → 0.2.0-rc2
ClausKlein Oct 31, 2025
2c4ae84
Change CI workflow files
ClausKlein Oct 31, 2025
2a4f008
Prevent deprecated cmake warning
ClausKlein Oct 31, 2025
8835d0a
Add cmake multi platform workflow file
ClausKlein Oct 31, 2025
821312c
Quickfixes for CI
ClausKlein Oct 31, 2025
7f5c2fb
Install libboost-all-dev with apt on Linux CI
ClausKlein Oct 31, 2025
e789e41
Workaround for missing killall
ClausKlein Oct 31, 2025
03c4dc5
The final cut
ClausKlein Oct 31, 2025
ca18a29
Test Debug and Release on CI
ClausKlein Oct 31, 2025
0e2c286
Connection Timout needs to be 9 sec
ClausKlein Oct 31, 2025
95aa221
Modernize .devcontainer
ClausKlein Oct 31, 2025
672324a
Optimize Dockerfile
ClausKlein Oct 31, 2025
523db7f
Merge pull request #9 from ClausKlein/feature/add_workflow
ClausKlein Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[bumpversion]
current_version = 0.2.0-rc2
commit = False
message = Bump version: {current_version} → {new_version}
tag_message = Release v{new_version}
tag_name = v{new_version}
tag = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)([-](?P<release>(dev|rc))(?P<build>\d+))?
serialize =
{major}.{minor}.{patch}-{release}{build}
{major}.{minor}.{patch}

[bumpversion:part:release]
first_value = dev
optional_value = ga
values =
dev
rc
ga

[bumpversion:part:build]
first_value = 0

[bumpversion:file:CMakeLists.txt]
search = {current_version}
replace = {new_version}
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<build>\d+))?
serialize =
{major}.{minor}.{patch}.{build}
{major}.{minor}.{patch}
21 changes: 21 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
BasedOnStyle: Google
IndentWidth: 2
UseTab: Never
---
Language: Cpp
Standard: c++17
# Standard: Auto
AlignAfterOpenBracket: false
AlignEscapedNewlinesLeft: true
AlwaysBreakAfterDefinitionReturnType: None
BreakBeforeBraces: Allman
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 123
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 0
IndentCaseLabels: false
SortIncludes: true
AlignTrailingComments: false

SpacesInAngles: true
56 changes: 56 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
Checks: "-*,\
bugprone-*,\
bugprone-reserved-identifier,\
-bugprone-exception-escape,\
-bugprone-unused-return-value,\
boost-*,\
-boost-use-ranges,\
cert-*,\
-cert-err33-c,\
-cert-err58-cpp,\
clang-analyzer-*,\
-clang-analyzer-unix.BlockInCriticalSection,\
cppcoreguidelines-*,\
-cppcoreguidelines-avoid-*,\
-cppcoreguidelines-init-variables,\
-cppcoreguidelines-macro-*,\
-cppcoreguidelines-narrowing-conversions,\
-cppcoreguidelines-owning-memory,\
-cppcoreguidelines-prefer-member-initializer,\
-cppcoreguidelines-pro-bounds-pointer-arithmetic,\
-cppcoreguidelines-pro-type-reinterpret-cast,\
hicpp-*,\
misc-*,\
-misc-const-correctness,\
-misc-include-cleaner,\
-misc-no-recursion,\
modernize-*,\
-modernize-macro-to-enum,\
-modernize-use-designated-initializers,\
performance-*,\
-performance-enum-size,\
portability-*,\
-portability-avoid-pragma-once,\
readability-*,\
readability-identifier-length,\
readability-identifier-naming,\
-*magic-numbers,\
-*avoid-c-arrays,\
"
WarningsAsErrors: 'clang-*'
HeaderFilterRegex: '.*'
FormatStyle: file
User: clausklein
# options: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals
CheckOptions:
- { key: readability-identifier-naming.NamespaceCase, value: lower_case }
- { key: readability-identifier-naming.ClassCase, value: lower_case }
- { key: readability-identifier-naming.MethodCase, value: lower_case }
- { key: readability-identifier-naming.MemberCase, value: lower_case }
- { key: readability-identifier-naming.MemberSuffix, value: _ }
- { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
- { key: readability-identifier-length.MinimumVariableNameLength, value: 2 }
- { key: readability-identifier-length.MinimumParameterNameLength, value: 1 }
- { key: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals, value: true }
...
12 changes: 12 additions & 0 deletions .codespellignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
QUE
UInt
WRONLY
WS
cancelled
cancelling
claus
copyable
deque
fo
pullrequest
statics
6 changes: 6 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[codespell]
builtin = clear,rare,en-GB_to_en-US,names,informal,code
check-hidden =
skip = ./.git,./.direnv,./build/*,./prefix/*,./coverage/*,./stagedir/*,*.html,*.xsd,*.xsl,*.pdf,*.log,.*.swp,*~,*.bak,./tags
quiet-level = 2
ignore-words = .codespellignore
31 changes: 31 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# We use ubuntu-24.04 (noble)
FROM mcr.microsoft.com/devcontainers/cpp:1-ubuntu-24.04

USER vscode

# -------------------------------
# Install latest CMake and Boost
# -------------------------------
RUN sudo apt-get update -qq \
&& sudo apt-get install -y -qq wget gpg software-properties-common \
&& wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
&& echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main" \
| sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null \
&& sudo apt-get update -qq \
&& sudo apt-get install -y -qq cmake libboost-all-dev python3-pip \
&& sudo rm -rf /var/lib/apt/lists/*

# -------------------------------
# Install pre-commit, gcovr, ninja
# -------------------------------
RUN pip3 install --no-cache-dir pre-commit gcovr ninja cmake

# -------------------------------
# Avoid ASAN stalling
# -------------------------------
# Reduces mmap randomization slightly so AddressSanitizer works reliably
RUN sudo sysctl -w vm.mmap_rnd_bits=28
15 changes: 15 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "Beman Project Generic Devcontainer",
"build": {
"dockerfile": "Dockerfile"
},
"postCreateCommand": "bash .devcontainer/postcreate.sh",
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.cmake-tools"
]
}
}
}
4 changes: 4 additions & 0 deletions .devcontainer/postcreate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Setup pre-commit
pre-commit
pre-commit install
48 changes: 48 additions & 0 deletions .github/workflows/clang.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Clang on Ubuntu

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ develop ]
workflow_dispatch:
schedule:
- cron: '30 15 * * 6'

jobs:
clang:
strategy:
fail-fast: false
matrix:
version: [20, 21]

runs-on: ubuntu-latest

container:
image: ghcr.io/mattkretz/cplusplus-ci/clang${{ matrix.version }}

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with: { python-version: "3.13" }

- name: Install Boost
run: apt-get update -qq && apt-get install -y -qq libboost-all-dev

- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
# compiler: llvm-${{ matrix.version }}
cmake: 4.1.2
ninja: 1.13.0
gcovr: true

- name: Run test suite
env:
CXX: clang++-${{ matrix.version }}
run: |
export PATH=$HOME/.local/bin:$PATH
cmake --workflow --preset llvm-release
gcovr
# PRESET_NAME=llvm-release make all
75 changes: 75 additions & 0 deletions .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: CMake on multiple platforms

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ develop ]
workflow_dispatch:
schedule:
- cron: '30 15 * * 6'

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
build_type: [debug, release]
c_compiler: [gcc, clang, cl]
include:
# Windows - MSVC
- os: windows-latest
c_compiler: cl
cpp_compiler: cl
preset: msvc

# Ubuntu - GCC
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++
preset: gcc

# Ubuntu - Clang
- os: ubuntu-latest
c_compiler: clang
cpp_compiler: clang++
preset: llvm

# macOS - Clang (default compiler)
- os: macos-latest
c_compiler: clang
cpp_compiler: clang++
preset: appleclang

exclude:
- os: windows-latest
c_compiler: gcc
- os: windows-latest
c_compiler: clang
- os: ubuntu-latest
c_compiler: cl
- os: macos-latest
c_compiler: gcc
- os: macos-latest
c_compiler: cl

steps:
- name: Checkout source
uses: actions/checkout@v4

# # see https://github.com/marketplace/actions/enable-developer-command-prompt
- uses: ilammy/msvc-dev-cmd@v1
if: matrix.os == 'windows-latest'
with:
vsversion: 2022
arch: x64

- name: Workflow preset ${{ matrix.preset }}-${{ matrix.build_type }}
env:
CC: ${{ matrix.c_compiler }}
CXX: ${{ matrix.cpp_compiler }}
run: |
cmake --workflow --preset ${{ matrix.preset }}-${{ matrix.build_type }}
48 changes: 48 additions & 0 deletions .github/workflows/gcc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: GCC on Ubuntu

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ develop ]
workflow_dispatch:
schedule:
- cron: '30 15 * * 6'

jobs:
gcc:
strategy:
fail-fast: false
matrix:
version: [15, 16]

runs-on: ubuntu-latest

container:
image: ghcr.io/mattkretz/cplusplus-ci/gcc${{ matrix.version }}

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with: { python-version: "3.13" }

- name: Install Boost
run: apt-get update -qq && apt-get install -y -qq libboost-all-dev

- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
# compiler: gnu-${{ matrix.version }}
cmake: 4.1.2
ninja: 1.13.0
gcovr: true

- name: Run test suite
env:
CXX: g++-${{ matrix.version }}
run: |
export PATH=$HOME/.local/bin:$PATH
cmake --workflow --preset gcc-release
gcovr
# PRESET_NAME=gcc-release make all
14 changes: 14 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Lint Check (pre-commit)

on:
# We have to use pull_request_target here as pull_request does not grant
# enough permission for reviewdog
pull_request_target:
push:
branches:
- main
- develop

jobs:
pre-commit:
uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-pre-commit.yml@1.1.0
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.log
.*swp
/CMakeUserPresets.json
CODEOWNERS
build/
coverage/*
tags
9 changes: 9 additions & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# MD033/no-inline-html : Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.35.0/doc/md033.md
# Disable inline html linter is needed for <details> <summary>
MD033: false

# MD013/line-length : Line length : https://github.com/DavidAnson/markdownlint/blob/v0.35.0/doc/md013.md
# Conforms to .clang-format ColumnLimit
# Update the comment in .clang-format if we no-longer tie these two column limits.
MD013:
line_length: 119
Loading
Loading