SctArchiving Namespace Reference

Makes persistent representation of SctData objects, and control data objects so that they can be retrieved at a later date. More...


Data Structures

class  ArchiveGetCommand
 GetCommand to get an object from the archive, using the Sct::Archive::IOManagerArchive kept by the Archiver::instance(). More...
class  ArchivePutCommand
 PutCommand to put an object in the archive. More...
class  Archiver
 Class definition of the SCT archiving service. More...
class  ArchiverArguments
 Command line arguments available for fitting service. More...
class  ArchivingCommand
 Interface for a command. More...
class  ArchivingWorkerGroup
 Represents a group of worker threads which interpret and carry out ArchivingCommand s. More...
class  MysqlException
 exception thrown when queries go wrong More...
class  IOManagerDB
 This IOManager reads from and writes to a database. More...
class  IONameDB
class  MySqlException
 Thrown when an error occurs in mysql. More...
class  ZlibException
 Thrown when an error occurs in zlib. More...
class  ZlibStringCompressor
 Uses zlib to compress a string into another (hopefully shorter!) string. More...
class  GetCommand
 Command which retrieves an object from somewhere! After execute() getObject() should return the object. More...
class  IsGetCommand
 command to get an object from the archive More...
class  IsPutCommand
 PutCommand to put an object in the archive Uses the Sct::IS::IOManagerISProxy to publish. More...
class  PutCommand
 Command which puts an object somewhere! The object must be set either in the constructr or with the set() method, before the execute() method is called. More...
class  TransferCommand
 ArchivingCommand which retrieves an object with a GetCommand, and then places it with a PutCommand. More...

Functions

bool isControl (std::string name)


Detailed Description

Makes persistent representation of SctData objects, and control data objects so that they can be retrieved at a later date.

The SctData::TestResult and SctData::ScanResult classes are subscribed to (e.g. fits and raw data), as well as the ControlData objects e.g. TestData and SequenceData which are really an index of modules in a particular test.

The interface is via ipc. There is automatic saving by callback to some IS servers (currently EventData and RetrievedData, TestData and ControlData). Other objects can be saved by IPC request.

Retrieval is via IPC requests, where wildcards can be used to request many objects matching a particular pattern.

Examples of commands which work are :

retrieve("1010","2","SctData::RawScanResult","20220170100038")
RawScanResult for run 1010, scan 2, for module 20220170100038

retrieve("1010","*","SctData::RawScanResult","*")
all RawScanResults from run 1010

retrieve("1009","5","SctData::StrobeDelayTestResult","*")
StrobeDelayTestResult for run 1009, scan 5, all modules

retrieve("1009","5","SctData::StrobeDelayTestResult","202201*")
same but just for modules starting 202201

retrieve("1013","0","TestData","StrobeDelayTest")
StrobeDelay TestData object for run 1013

These commands retrieve the object from persistant storage back into IS - the default server is RetrievedData, but this can be changed over IPC.

The Sct::IOManager derrives from Sct::IOManagerStreamerVersioned, when means that as well as writing the name of the class it is streaming, it also writes the version. Historic versions of the streamers are kept in the SctData/src/IO directory, and are added to the streamer map, so that old data can continue to be read, even after thte data definition changes.

The current implimentation is via a gzipped file (Sct::Archive::IOManagerArchiveFile) to the $SCT_PERSISTENT_DIR directory. It is hoped that by release 4 of this software the persistant storage will be in the ATLAS conditions database.

See ArchivingServiceInterface.idl for full interface.

Subtleties: If retrieving to an IS server which normally has a callback, one should suspend the callbacks, otherwise it will try to be saved again.

The name of the retrieval IS server can be changed, but note that the retrieve command is asynchronous - so there may still be a queue of objects waiting to be retrieved to the previous server. One can check the previous operations have finished using the busy() method.

Author:
Alan Barr
Date:
10 Feb 2004


Generated on Mon Feb 6 14:04:53 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6