Skip to content

Improve NodeStrategy to use the right node seamlessly.#499

Merged
hidmic merged 2 commits intomasterfrom
hidmic/better-node-strategy
May 11, 2020
Merged

Improve NodeStrategy to use the right node seamlessly.#499
hidmic merged 2 commits intomasterfrom
hidmic/better-node-strategy

Conversation

@hidmic
Copy link
Copy Markdown

@hidmic hidmic commented Apr 28, 2020

No description provided.

Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
@hidmic hidmic marked this pull request as ready for review May 6, 2020 19:51
@hidmic hidmic requested a review from dirk-thomas May 6, 2020 19:51
Copy link
Copy Markdown
Member

@dirk-thomas dirk-thomas left a comment

Choose a reason for hiding this comment

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

I am not sure I see how this is supposed to be used / why the logic should be moved into the strategy. Is the goal here to address #488?

Atm the StrategyNode allows you to treat it as a node and behind the scene you get the speed of a daemon or a direct node (with potential discovery delays). For the referenced issue I think we want a node which uses daemon methods when available and otherwise use the methods on a direct node. Maybe that kind of functionality shouldn't go into StrategyNode but into a new class since it is a pretty different usage / expected API?

@hidmic
Copy link
Copy Markdown
Author

hidmic commented May 6, 2020

Atm the StrategyNode allows you to treat it as a node and behind the scene you get the speed of a daemon or a direct node (with potential discovery delays). For the referenced issue I think we want a node which uses daemon methods when available and otherwise use the methods on a direct node. Maybe that kind of functionality shouldn't go into StrategyNode but into a new class since it is a pretty different usage / expected API?

Such a new class would provide the exact same functionality that NodeStrategy provides for all existing use cases, plus

a node which uses daemon methods when available and otherwise use the methods on a direct node.

Considering that this patch is almost completely transparent[1] for all uses cases that rely on the current NodeStrategy behavior, I don't see the point in creating yet another class. I can imagine NodeStrategy being progressively replaced by it over time.

[1] There's one difference: if a direct node gets instantiated on method call, it'll have been alive for a shorter amount of time than with the current implementation. That, nonetheless, should not be a problem since most if not all discovery sensitive API is provided by the daemon.

@hidmic hidmic requested a review from dirk-thomas May 8, 2020 20:28
@dirk-thomas
Copy link
Copy Markdown
Member

Is the goal here to address #488?

Can you still answer this question?

@hidmic
Copy link
Copy Markdown
Author

hidmic commented May 11, 2020

Is the goal here to address #488?

This PR sets up the scene. I'll update #494 to make use of these features, which will ultimately address #488.

@hidmic
Copy link
Copy Markdown
Author

hidmic commented May 11, 2020

CI up to ros2cli:

  • Linux Build Status
  • Linux-aarch64 Build Status
  • macOS Build Status
  • Windows Build Status

@hidmic
Copy link
Copy Markdown
Author

hidmic commented May 11, 2020

Alright, this one's ready to go. How you feel about it @jacobperron ? It doesn't change API, but it affects most ros2 CLI verbs.

@jacobperron
Copy link
Copy Markdown
Member

IIUC, we're affecting most CLI verbs for the better, so I'm okay with this (and the connected PR) landing for the Foxy release candidate.

@hidmic
Copy link
Copy Markdown
Author

hidmic commented May 11, 2020

Alright, going in!

@hidmic hidmic merged commit 2a3e100 into master May 11, 2020
@delete-merged-branch delete-merged-branch bot deleted the hidmic/better-node-strategy branch May 11, 2020 19:05
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.

3 participants