roscpp/2008-09-04 Design Review
Package Developer:
- Morgan
- Brian pushing through review proces
Reviewers:
- Stu
- Tully
- Ioan
- Ken
- Eric
- Josh
- Rob
Package Summary
Minutes
Init (and command-line remapping)
- Concerns with it being required, specifically in GUI programs where [argc, argv] access is difficult
- Want it to be safe to call multiple times
Fini
- Want to be able to call multiple times (as many times as init called?)
- Or want to associate with proxy object
Subscribe
- Want to allow multiple subscriptions
- Requires change to subscription bookkeeping, and change to prevent unsubscribe from being ambiguous
- Question of using handles vs. functors for unsubscribe?
- Use boost::function equality operator for unsubscribe lookup
- Question of function within object vs. just callback function handle
- Josh recommends boost::function and boost::bind to resolve this
- Other option is different types of functors (method functor and function functor)
- Question of replacing functor (replace with boost)
New threading model
- Run with only one server thread, or with startup option run with only one thread
- In single-threaded mode, you must call tcpros_server_update() call [needs renaming for transport indepedence]
- Also needs minimum time to wait (can be used as a sleep call)
- Either with default or 0 waittime argument it should never block
Unadvertise (topic and service)
- After unadvertise service, callback will never be called
Unsubscribe
- Modified to guarantee no more callbacks once it's been called
Conclusions
Command-line remapping needs to be resolved
Explore proxy object or remove singleton constraint
We will start depending on boost::function for all callbacks, and for unsubscribe lookups
Need to do another review to make it through full API and review changes