A. First day
Peter started to present the 2.x functionality, state and (from its point of view), shortcomings. The following are the points that have been risen during the discussion.
- TimeService: what is it for, and is not there other solutions ?
- right now, SlaveActivity is different from Slave execution engine. Why ?
Properties and attributes
- RTT::Property[persistent] / RTT::Attribute[non persistent]
- RTT::Property is NOT thread safe
- know if a property has been written
- could we have not OldData for buffer ports => how difficult ?
- discussion on overruns, and default drop policy for buffers. In general, we need to discuss an interface to monitor transports
- data flow now has N data holder elements, where N is the number of total connections. 1.x needed at most one data holder element per output port.
Methods / Operations / Services
- operation execution policy: OwnThread vs.ClientThread. Agreed that OwnThread should be the default policy as it is safer from a thread-safety point of view.
- better naming for ServiceRequester / ServiceProvider -- Method / Operation
- rename ServiceRequester to Service to map Operation
- what about the caller side ?
- __OperationCaller__ for now, preferred as it says what it does
- OperationProxy (-- for Peter and Markus)
- OperationStub (-- for Peter and Markus)
- OperationInterface (no: Interface is used a lot in the code for base classes)
- chicken and egg problem with the deployer, especially with basic services like real-time logging
- possibility to do autoloading based on a PATH environment variable or to do loading per-plugin
- there is a cost to load a typekit that is not needed as the shared library has to be mapped in memory and typekits are quite big
- instanciating RTT::Operation for void()(void)
- 60kB for dispatching code
- 60kB for distributed C++ dispatching code
- 2.0 does not have events right now
- can (and will) be implemented on top of the ports
- one limitation: only one argument. Not a big issue if we have an automated wrapping like oroGen
- we're now getting into the details of event handling ;-)