-------------------------------------------------------------- The Data Acquisition Backbone Core DABC Release Notes ------------------------------------------------------------- Copyright (C) 2009 - GSI Helmholtzzentrum für Schwerionenforschung GmbH Planckstr. 1, 64291 Darmstadt, Germany Contact: http://dabc.gsi.de --------------------------------------------------------------- DISCLAIMER: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details (http://www.gnu.org). --------------------------------------------------------------- Changes in version 1.9.x (dabc2 beta) - spring 2012 1. Introduce new event building network. Implementation includes fast runnable, with consumes one thread and aims to execute send/recv operation at predefined time. Another code is less time-critical and purposed to fill operations queues of the runnable. Final aim is to achive synchron submission of data transfers (scheduling) on the bif cluster. Implementation status in very initial/tesing phase. 2. Change dabc::Buffer implementation. Now it is smart pointer on preallocated record, there all segments description are collected. Buffer still can use memory from only pool. Conceptual change - buffer MUST be used only in single thread. Copy constructor of buffer just copies pointer on segments list - means new object uses same structures as old one. This only can work in single thread. Of course, there is method to duplicate buffer - makes copy of segments list, but without copy of the buffer content. 3. Make use of new dabc::Buffer concept in dabc::Pointer class. Pointer manage internally own dabc::Buffer instance. This simplify all pointer methods - no need to provide additional reference to original buffer. 4. That ever else Changes in version 1.9.0 (dabc2 alpha) 0. If shortly - mostly everything was changed. Trying to list: 1. New dabc::Reference class is introduced, which provides a way to keep reference on other object with guarantee that object not disappear in between. As consequence, access to most components (Modules, Parameters, Application) will be provided via their reference class. 2. New dabc::Record class is introduced. It is base class for dabc::Command, dabc::Parameter and dabc::Config classes and provides generic record with arbitrary list of fields. First of all, it is designed to exchange information between dabc components via command or via parameter events or via config files. Second, it allows to introduce arbitrary additional fields to object content and thus, extend usage of derived classes (especially Parameter). 3. Fully redesign dabc::Parameter class. Now it is record and can deliver parameter events to any subscribed worker. 4. Worker and Thread classes instead of WoringProcessor and WorkingThread classes. 5. New udp-based command channel is implemented. It replaces previous implementation, based on dim or so-called simple control. It's main aim is to provide command interface between nodes and failure detection. Most probably, variation with normal tcp socket will be implemented too. 6. Control interface is separated from manager and can be implemented in form of plugin. As first example, DIM control implemented in form of such plugin. 97. DABC can be compiled without any variable set in advance. 98. Simplify dabclogin script, it is generated automatically with compilation of DABC. 99. To be continued... Changes in version 1.1 1. Reorganize command execution - now it is similar to event processing can be recursive. Means inside command execution another command can be called. proc->Execute(cmd) will not block neither caller nor receiver thread completely. Of course, one should avoid circular dependency of commands which is a normal situation. 2. Allow hexadecimal numbers in configuration file. 3. Modify mbs::CombinerModule - it can treat not only pure mbs inputs, but also pseudo events, where event id coded not in event header. Used for CBM ROC - MBS combination. 4. Bugfix in output pending number - was decreased after transport closed and became negative. Now will always remain 0 when no transport assigned. Changes in version 1.0.02 1. With run.sh one can distribute (copy) configuration file to target nodes. 2. Remove old SubmitLocal, SubmitRemote, LocalCmd, RemoteCmd - all these methods replaced by new function, called SetCmdReceiver. 3. Add application in net-test, one can control its execution from gui. 4. Fix problem with DIM server when host name was not specified 5. Make compilation of old mbs evapi optional - it is not used in real application. If necessary, one can compile it with "make MBSEVAPI=1" call. 6. ROC plugin is completely rewritten to replace KNUT library. ROClib makefile build so, that it can use directly DABC classes. 7. Tested on SuSE11.1 86_64 with InfiniBand OFED 1.4.1 - worked with minimum makefile changes. Changes in version 1.0.01 (10 March 2009) 1. Add IP multicast support in SocketTransport. 2. Add IB multicast support in verbs::Transport. 3. Possibility to add user-defined parameters directly in xml file - in Context/User section. 4. If Context/Run/copycfg = true, config file will be copied to working directory of specified node, useful for cluster without common file system. 5. Implement all-to-all and multicast tests in net-test application. 6. Bugfix: several minor errors in Verbs plugin. 7. Bugfix: suppress output of scripts running from ssh (caused problems with GUI). 8. Bugfix: GUI: Register DIM service after full instantiation of parameter object. 9. Bugfix: GUI: Histogram drawer had uninitialized field. Features of version 1.0.00 (26. February 2009): 1. A Data Acquisition framework in C++ language for linux platforms with modular components for dataflow on multiple nodes. 2. Runtime environment with basic services for: threads, event handling, memory management, command execution, configuration, logging, error handling 3. Plug-in mechanism for user defined DAQ applications 4. Plug-in mechanism for a control system. Features a finite state machine logic and parameters for monitoring and configuration. The default implementation is based on the DIM protocol (http://dim.web.cern.ch/dim) 5. Java GUI to operate the standard DIM control system of DABC/MBS. Fully generic evaluating DABC process variables, but extendable by user written components. 6. Contains a sub-framework to set-up distributed event builder networks (BNET) 7. Supports tcp/ip and InfiniBand/verbs networks for data transport 8. Supports formats and readout of GSI's standard DAQ system MBS (Multi Branch System). May also write data into MBS listmode format, and may emulate MBS socket data servers. Additionally, MBS systems can be controlled by the DABC GUI.