Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

SerializableWrappers.cpp

00001 #include "SerializableWrappers.h"
00002 #include "Sct/ISSerializableWrapper.h"
00003 #include "Sct/IOManager.h"
00004 
00005 #include <sstream>
00006 
00007 namespace SctArchiving{
00008 
00009 void Sct::ISSerializableWrapper<TestData>::constructUniqueID() const{
00010   std::ostringstream uniqueid;
00011   uniqueid << getWrappedObject()->runNumber << "."
00012        << getWrappedObject()->startScanNumber << "."
00013        << getWrappedObject()->testName;
00014   m_uniqueID=uniqueid.str();
00015 }
00016 
00017 void Sct::ISSerializableWrapper<SequenceData>::constructUniqueID() const{
00018   std::ostringstream uniqueid;
00019   uniqueid << getWrappedObject()->runNumber << "."
00020        << getWrappedObject()->startScanNumber << "."
00021        << getWrappedObject()->sequenceName;
00022   m_uniqueID=uniqueid.str();
00023 }
00024 
00025 #ifdef IS_SERIALIZABLE_BUG
00026 #warning Here is a bug fix for online versions before 00-21-02
00027   void SequenceDataStreamer::read(Sct::IStream& in, Sct::Streamable& ob, const Sct::IOManager& manager) const{
00028     Sct::ISSerializableWrapper<SequenceData>& wrapper = dynamic_cast <Sct::ISSerializableWrapper<SequenceData>& > ( ob );
00029     SequenceData& seq = *wrapper.getWrappedObject();
00030     in >> seq.sequenceName >> seq.runNumber >> seq.startScanNumber >> seq.nTests;
00031     if ( seq.testNames_size != 0 ) delete[] seq.testNames;
00032     in.get( &seq.testNames, seq.testNames_size );
00033     in >> (int&)seq.status >> seq.startTime >> seq.endTime;
00034     if ( seq.modules_size != 0 ) delete[] seq.modules;
00035     in.get( &seq.modules, seq.modules_size );
00036     in >> seq.version;
00037     wrapper.constructUniqueID();
00038   }
00039  
00040   void TestDataStreamer::read(Sct::IStream& in, Sct::Streamable& ob, const Sct::IOManager& manager) const{
00041     Sct::ISSerializableWrapper<TestData>& wrapper = dynamic_cast <Sct::ISSerializableWrapper<TestData>& > ( ob );
00042     TestData& td = *wrapper.getWrappedObject();
00043     in >> td.testName >> td.runNumber >> td.nScans >> td.startScanNumber >> td.testVariable;
00044     if ( td.testPoints_size != 0 ) delete[] td.testPoints;
00045     in.get( &td.testPoints, td.testPoints_size );
00046     in >> (int&)td.status >> td.startTime >> td.endTime;
00047     if ( td.modules_size != 0 ) delete[] td.modules;
00048     in.get( &td.modules, td.modules_size );
00049     in >> td.version;
00050     wrapper.constructUniqueID();
00051   }
00052 
00053   static bool dummy1 = Sct::IOManager::addToMap("SequenceData" , std::auto_ptr<Sct::Streamer>(new SequenceDataStreamer() ) ) ;
00054   
00055   static bool dummy2 = Sct::IOManager::addToMap("TestData", std::auto_ptr<Sct::Streamer>(new TestDataStreamer() ) ) ;
00056 #else
00057 
00058   // If is bug in istream is fixed (after online00-21-02)
00059   static bool dummy1 = Sct::IOManager::addToMap("SequenceData" , std::auto_ptr<Sct::Streamer>(new Sct::ISStreamerWrapper<SequenceData>() ) ) ;
00060   static bool dummy2 = Sct::IOManager::addToMap("TestData", std::auto_ptr<Sct::Streamer>(new Sct::ISStreamerWrapper<TestData>() ) ) ;
00061   
00062 #endif
00063 
00064 }

Generated on Thu Jul 15 09:50:53 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5