API review
Proposer: Josh Faust
Present at review:
- List reviewers
Question / concerns / comments
Enter your thoughts on the API and any questions / concerns you have here. Please sign your name. Anything you want to address in the API review should be marked down here before the start of the meeting.
Meeting agenda
To be filled out by proposer based on comments gathered during API review period
Stu
I want to do this operation often:
NodeHandle parent; // ... NodeHandle nn(parent.getNamespace() + "/child_namespace");
Does making a shortcut for this make sense?
Does SubscriberHandle disconnect on destruction?
- When a node handle is destroyed, does it take down the services/subscriptions that it has created?
Tully
I was initially confused why ServiceHandle didn't have the call method.
Minutes
- Reliance on disconnection via Handle destructors is problematic because part of the containing object might already be destroyed before the Handle is destroyed, and a callback might get invoked in the meantime.
SubscriberHandle, ServiceHandle, and PublisherHandle all have this problem.
- One solution is to not do automatic disconnection on handle destruction, to avoid user expectation of this always working properly.
- Future work: export handle structure somehow so that it can be properly visualized by rxgraph. Will probably require creating a new ROS entity, which is a handle within a node.
Conclusion
Package status change mark change manifest)
Action items that need to be taken.
Major issues that need to be resolved
/!\ Add NodeHandle constructor that takes in "parent" NodeHandle
/!\ Add / write / enable class documentation for SubscriberHandle, PublisherHandle, ServiceHandle
/!\ Add NodeHandle::disconnect() method that calls disconnect() on all Handles that were created through that NodeHandle.
- /!\ ~ resolves to the node's namespace; should go to the handle's namespace
/!\ Pass remapping object to NodeHandle constructor.
/!\ Rename Handles to Subscriber, Publisher, ServiceServer, and ServiceClient.
- What do we do about the disconnect on destruction problem?
*API conditionally passed.