Add initial Blackboard support#7
Conversation
dkroenke
left a comment
There was a problem hiding this comment.
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.
|
Adding @FerdinandSpitzschnueffler for the review of the Backboard components |
FerdinandSpitzschnueffler
left a comment
There was a problem hiding this comment.
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.
…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
dkroenke
left a comment
There was a problem hiding this comment.
Looks good, thanks for the contribution!
FerdinandSpitzschnueffler
left a comment
There was a problem hiding this comment.
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 :) |
This pull request adds a new example demonstrating the Blackboard communication pattern in the C#/.NET bindings for iceoryx2. It introduces a complete
Blackboardexample 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
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]Iceoryx2.sln) to include the newBlackboardexample project and its build configurations. [1] [2] [3]Documentation and README updates
README.mdto 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]ARCHITECTURE.mdto list Blackboard as a supported pattern and makes minor table formatting improvements. [1] [2]CHANGELOG.mdto ensure consistent naming for Reactive Extensions.examples/ArrayOfStructs/README.md. [1] [2] [3] [4] [5]Notes for Reviewer
Pre-Review Checklist for the PR Author
Convert to draft)csharp-iox2-123-short-description)[#123] Add feature description)PR Reviewer Reminders
dotnet formathas been exectued before submittingReferences
Closes #4