Skip to content

Add initial Blackboard support#7

Merged
dkroenke merged 8 commits intoeclipse-iceoryx:mainfrom
patdhlk:csharp-iox2-4-blackboard-pattern-support
Jan 26, 2026
Merged

Add initial Blackboard support#7
dkroenke merged 8 commits intoeclipse-iceoryx:mainfrom
patdhlk:csharp-iox2-4-blackboard-pattern-support

Conversation

@patdhlk
Copy link
Copy Markdown
Contributor

@patdhlk patdhlk commented Dec 29, 2025

This pull request adds a new example demonstrating the Blackboard communication pattern in the C#/.NET bindings for iceoryx2. It introduces a complete Blackboard example project, updates documentation to include the new pattern, and makes minor improvements to formatting and naming for clarity and consistency.

Major new feature: Blackboard pattern support and example

  • Adds a full example project (examples/Blackboard) showcasing the Blackboard key-value store pattern, including both creator (writer) and opener (reader) roles, with sample code for sensor data sharing. [1] [2]
  • Updates the solution file (Iceoryx2.sln) to include the new Blackboard example project and its build configurations. [1] [2] [3]

Documentation and README updates

  • Updates README.md to document the Blackboard API as a supported communication pattern, describes its use case, and adds instructions for running the new example. Also updates the project directory structure to reflect the new pattern. [1] [2] [3] [4] [5]
  • Updates ARCHITECTURE.md to list Blackboard as a supported pattern and makes minor table formatting improvements. [1] [2]
  • Updates CHANGELOG.md to ensure consistent naming for Reactive Extensions.
  • Improves formatting and clarity in the examples/ArrayOfStructs/README.md. [1] [2] [3] [4] [5]

Notes for Reviewer

Pre-Review Checklist for the PR Author

  • Add sensible notes for the reviewer
  • PR title is short, expressive and meaningful
  • Consider switching the PR to a draft (Convert to draft)
    • as draft PR, the CI will be skipped for pushes
  • Relevant issues are linked in the References section
  • Branch follows the naming format (csharp-iox2-123-short-description)
  • Commits messages are according to this guideline
    • Commit messages have the issue ID ([#123] Add feature description)
  • Tests have been added/updated for new functionality
  • XML documentation comments added to public APIs
  • Changelog updated in the unreleased section including API breaking changes
  • Assign PR to reviewer
  • All checks have passed

PR Reviewer Reminders

  • Commits are properly organized and messages are according to the guideline
  • Unit tests have been written for new behavior
  • Public API is documented with XML comments
  • PR title describes the changes
  • Code follows C# conventions (PascalCase for public APIs)
    • dotnet format has been exectued before submitting

References

Closes #4

@dkroenke dkroenke self-requested a review January 6, 2026 09:30
Copy link
Copy Markdown
Contributor

@dkroenke dkroenke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An entry in the Changelog would be good.

To keep the git history a bit more clean you could update the feature branches to latest main via rebase instead of merge. That avoids the merge commits in the history. In iceoryx2 we do it the same way.

@dkroenke
Copy link
Copy Markdown
Contributor

Adding @FerdinandSpitzschnueffler for the review of the Backboard components

Copy link
Copy Markdown

@FerdinandSpitzschnueffler FerdinandSpitzschnueffler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar with C#, so I mainly focused on the blackboard API and not on the implementation. The PR looks good to me, but some function names have changed with the last release.

- Introduced `BlackboardHelpers` for alignment handling.
- Refactored key alignment logic across Blackboard classes.
- Added thread safety remarks to `Writer`, `Reader`, and `BlackboardServiceBuilder`.
- Enhanced `BlackboardServiceBuilder` with input validation.
- Optimized memory usage in key-value operations via stack allocation.
- Updated README with examples and documentation for Blackboard API.
- Incorporated detailed comments and ensured proper resource disposal.
- Added a new `SafeEntryValueHandle` to encapsulate native resource management safely.
- Improved `EntryValue` API for consistency and optimized memory handling.
- Reworked `Reader` and `Writer` logic to streamline key-value operations using `UpdateWithCopy`.
- Updated examples and documentation to reflect API changes and best practices.
- Refined markdown files with formatting fixes and clearer explanations.
@patdhlk patdhlk marked this pull request as ready for review January 21, 2026 17:05
…sistency

Address PR review findings by aligning naming with iceoryx2 FFI:
  - Rename EntryValue.cs to EntryValueUninit.cs
  - Rename SafeEntryValueHandle to SafeEntryValueUninitHandle
  - Update FFI method names to use _uninit suffix:
    - iox2_entry_value_mut -> iox2_entry_value_uninit_value_mut
    - iox2_entry_value_update -> iox2_entry_value_uninit_update
    - iox2_entry_value_drop -> iox2_entry_value_uninit_drop
Copy link
Copy Markdown
Contributor

@dkroenke dkroenke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks for the contribution!

Copy link
Copy Markdown

@FerdinandSpitzschnueffler FerdinandSpitzschnueffler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good and can be merged. Thank you for your contribution!
Out of curiosity: do you plan additional tests for the blackboard and the other messaging patterns?

@dkroenke dkroenke merged commit 2fb4f92 into eclipse-iceoryx:main Jan 26, 2026
6 checks passed
@patdhlk
Copy link
Copy Markdown
Contributor Author

patdhlk commented Jan 26, 2026

Looks good and can be merged. Thank you for your contribution! Out of curiosity: do you plan additional tests for the blackboard and the other messaging patterns?

@FerdinandSpitzschnueffler yes, already in progress :)

@patdhlk patdhlk deleted the csharp-iox2-4-blackboard-pattern-support branch January 26, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Blackboard Pattern Support

3 participants