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) |
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.