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