Skip to content

Rust::com Field APIs design and example of usage#700

Open
bharatGoswami8 wants to merge 11 commits into
eclipse-score:mainfrom
bharatGoswami8:Rust_Field_APIs_Desing_and_Example
Open

Rust::com Field APIs design and example of usage#700
bharatGoswami8 wants to merge 11 commits into
eclipse-score:mainfrom
bharatGoswami8:Rust_Field_APIs_Desing_and_Example

Conversation

@bharatGoswami8

Copy link
Copy Markdown
Contributor
  • Added field-based publish/subscribe with field get/set and asynchronous field subscriptions.
  • Extended interface macros to support field members and generated producer/consumer and compile-time offer API enable.
  • Added a new example demonstrating offered field producers and consumer field updates.

#579

* Created field interface APIs
* Updated SampleMut to use in field as well
* Added field related files on build target
* Created impl block in Lola Runtime for field Producer and Consumer trait
* Mock Runtime impl block added for field APIs
* Updated Interface macro to generate field related types and APIs
* Create proc macro for field init and set handler validation before offer call
* Updated Runtime GATs for field public types
* Updated Runtime implementation
* Updated example file with Field APIs usage
/// "left_tire" and "exhaust" events.
/// - `VehicleOfferedProducer<R>` struct that implements `OfferedProducer` trait for offering
/// "left_tire" and "exhaust" events.
// TODO: We need to enable the support for mixed types (Event, Method, Field) in the same interface definition.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

ticket for same - #701

* Updated the TODOs and documentation
@bharatGoswami8
bharatGoswami8 force-pushed the Rust_Field_APIs_Desing_and_Example branch 2 times, most recently from 6921668 to 6faaa6c Compare July 14, 2026 06:11
* Clone bound removed from fieldPublisher trait and impl block
@bharatGoswami8
bharatGoswami8 force-pushed the Rust_Field_APIs_Desing_and_Example branch from 6faaa6c to 21d958d Compare July 14, 2026 06:23
* Producer trait offer API limitation added to avoid direct use
@bharatGoswami8
bharatGoswami8 force-pushed the Rust_Field_APIs_Desing_and_Example branch from 30e0af1 to 8589c65 Compare July 19, 2026 08:53
@anmittag anmittag moved this from Backlog to In Progress in COM - Communication FT Jul 21, 2026
Comment on lines +191 to +195
// Below function just demonstrate the field APIs usage
// This build fine but it can not run because we have not implemented the field APIs in Lola runtime yet.

// Producer creation and intialization of fields with initial values and set handlers for the fields
// It will return the offered producer instance which can be used to update the fields.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
// Below function just demonstrate the field APIs usage
// This build fine but it can not run because we have not implemented the field APIs in Lola runtime yet.
// Producer creation and intialization of fields with initial values and set handlers for the fields
// It will return the offered producer instance which can be used to update the fields.
// Below function demonstrate the field APIs usage
// This builds fine, but it cannot run as the field APIs in Lola runtime are not implemented yet.
// Producer creation and intialization of fields with initial values and set handlers for the fields
// It will return the offered producer instance which can be used to update the fields.

// TODO: in working example add that logic to demonstrate the set handler usage.
// Note: I think producer may be need clone ?
})
.expect("Failed to register set handlers")

@rpreddyhv rpreddyhv Jul 20, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Why would register_* ever fail? As discussed for Method, it shouldn't return Result.

.register_set_handler_left_tire(move |val: &Tire| {
println!("Received tire pressure update: {:?}", val);
// Additional logic to handle the tire pressure update can be added here
// For example, we can increment value or conver unit and update the field again.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
// For example, we can increment value or conver unit and update the field again.
// For example, we can increment value or convert unit and update the field again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

3 participants