8. 22/11/16 Igor Khokhriakov 8
Mavenization
● All Java projects are deployed to bintray
● ATKCore and ATKWidget may be added to
JCenter
– (if so others will be submitted as well)
● Promote bintray to be official tango-controls
repository
9. 22/11/16 Igor Khokhriakov 9
TODOs
● Pogo –
– requires non-trivial pom.xml to integrate xtext
● Documentation
– Done for Jive*, Starter**, cppTango**
● Readmes (Done for ATK)
● Migrate issues
● Setup Continuous testing (travis, appveyor)
● Move remaining: archiving; bindings etc
** – html hosted on github.io
* – sphinx hosted on readthedocs.io
11. 22/11/16 Igor Khokhriakov 11
Absorb CORBA is the way
● Add CORBA sources to cppTango as a module
● Wrap with API (plugin)
● Some proof-of-the-concept refactorings were done
– DevVarDouble,
– Isolate ORB,
– replace omni_thread with c++11 thread
● Tango::polling
– 83 commits, 116 files changed, codebase reduced by ~2K lines
12. 22/11/16 Igor Khokhriakov 12
Some thoughts
● Merge ApiUtil and Util
● Util is basically a DS, i.e. merge Util and server
● DeviceProxy (Database) has a connection (not inherit)
● Replace ifs with polymorphism (Db, FileDb; DeviceServer,
PyDeviceServer etc)
● Replace map<device,smth> with corresponding Device field
● Distinguish Heartbeat, StoreSubDevices
and Polling threads
● Implement event driven service bus
13. 22/11/16 Igor Khokhriakov 13
Event driven architecture
● ORB layer generates events for incoming requests (attr
read/write, cmd, pipe etc)
● Server generates events: new attribute value, state change etc
● AccessControl
● Logging
● Blackbox
● Polling (push new values)
● Attribute Read/Writter
● Command executor
● User defined services
Services
14. 22/11/16 Igor Khokhriakov 14
Conclusions
● Code base is huge
● hard to read and understand for new comers
● Extremely difficult to maintain (non-trivial bug
fixes) without Emmanuel
● If development is planned for another 10-15
years refactoring is required
● On the other hand it is very mature and
stable