message: Add documentating for RTTSimpleActionServer.
diff: @@ -138,6 +138,80 @@ some_component_name.actionlib.connectSub(
  ```
  +### RTTSimpleActionServer
  +
  +`RTTSimpleActionServer` is simple version of action server which able to pursue only one goal at one time.
  +It depends on EventPort callbacks so unable to function if component is not Running or callbacks behavior is changed by redefining `dataOnPortHook()`.
  +
  +`RTTSimpleActionServer` implements following goal policy:
  +* New goals gets PENDING status and stored in buffer. It cancels old pending goal if it presents.
  + After receiving new goal `newGoalHook` callback is called, also `isPending()` and `getPendingGoal()` methods can be used to poll pending goal.
  +* Pending goal can be accepted (`acceptPending()`) or rejected (`rejectPending()`). If accepted pending goal preempts current active goal if it presents. So only one goal can be active at time.
  +* State of active goal can be checked with `isActive()`, `getActiveGoal()` and `isPreemting()` calls.
  +* If CancelRequest is received corresponding goal is canceled. Before active goal is canceled `cancelGoalHook` is called.
  +* State of active goal can be changed by `succeedActive()`, `cancelActive()`, `abortActive()` calls.
  +
  +```cpp
  +class Component : public TaskContext
  +{
  + protected:
  + // Goal, Feedback, Result typedefs
  + ACTION_DEFINITION(ActionSpec);
  +
  + protected:
  + OrocosSimpleActionServer<ActionSpec> action_server;
  + // Current goal cache
  + Goal goal;
  +
  + // new pending goal is received
  + void newGoalHook(const Goal& pending_goal) {
  + // check if goal is valid
  + if (!isOk(pending_goal)) action_server.rejectPending(result);
  + else {
  + goal = pending_goal;
  + action_server.acceptPending(result);
  + }
  + }
  +
  + public:
  + Component(std::string const& name) :
  + action_server(this->provides())
  + {
  + // action server hook registration
  + action_server.setGoalHook(boost::bind(&AnimJointTrajectory::newGoalHook, this, _1));
  + }
  +
  + bool updateHook() {
  + if (action_server.isActive()) {
  + // pursue goal
  + }
  + }
  +
  + void stopHook() {
  + action_server.abortActive(result);
  + action_server.rejectPending(result);
  + }
  +};
  +```
  +
  +Alternatively presence of pending goal can be monitored in `updateHook()`:
  +
  +```cpp
  + bool updateHook() {
  + if (action_server.isPending()) {
  + if (! isOk(getPendingGoal())) rejectPending(Result());
  + else {
  + // make preparation
  + acceptPending(Result());
  + }
  +
  + }
  + if (action_server.isActive()) {
  + // pursue goal
  + }
  + }
  +```
  +
  Future Work
  -----------
  @@ -145,7 +219,6 @@ Future Work
  given RTT operations so that any RTT component with operations with the right
  types can be bound to an actionlib service
  * Add action client support.
  -* Add a "simple" mode which implememnts a policy like SimpleActionServer
  