Anonymous - 2012-06-12

Originally posted by: nick.hau...@gmail.com

Comment by project member stephane.poirier@synchrotron-soleil.fr, Jun 6 (5 days ago)

SP (2012/06/06)

I agree on almost all your remarks. Namespaces

Ok for defining different names for each part of the project. But I don't see what is the added value of the intermediate names 'core' 'engines' and 'plugins'.

I propose: - to keep "cdma" as namespace for the core. - cdma::<enginename> for engines (ex: cdma::spec) should be sufficient. - plugins are always dynamically loaded through the yat plugin mechanism, so there is no chance to encounter any conflict. However in order to improve source code readability, we could use either cdma::<institute> (ex: cdma::soleil) or cdma::<enginename>::<pluginname> (ex: cdma::spec::desy). Full object designations remains long strings but client applications manipulates the core library interface only. Packaging

It's ok for me Documentation

Of course, we have to write the most exhaustive documentation we can. CDMA design Default implementations

I agree, default implementation will help engines and plugins developpers. However, from a client application developer point of view, the CDMA API should never throw a NotImplemented?? exception. Shared Pointer problem

The objects the CDMA exposes (especially IDataset, IDataItem, IDataGroup) are not themselves IO objects, but are high level interfaces. The real IO objects are internals (in engines). So I don't think it's a real issue. The motivation was to solve the memory management issue. I agree with you that streams should not be shared objects. However the cdma API is not stream-oriented. The current interface is intended to allow direct access to the data. Perhaps, for a next version, some stream-oriented objects/interfaces should be added, and the unique ptr concept may be used. Concerning thread safety: if the shared pointer implementation (yat::SharedPtr??) is thread safe it don't imply thread safety of referenced objects. I agree with you that a data source should always be accessed (through stream or not) from a unique thread. We may add this in the application programming guidelines.