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


Wiki: roscpp/Reviews/2008-09-04_Design_Review (last edited 2009-08-14 20:52:31 by localhost)