TestDataStreamer_v2.cpp

00001 #include "TestDataStreamer_v2.h"
00002 #include "TestDataWrapper.h"
00003 #include <memory>
00004 #include "CalibrationController/IS/TestData.h"
00005 
00006 using namespace Sct;
00007 
00008 namespace SctCalibrationController {
00009 
00010 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00011 unsigned TestDataStreamer_v2::s_version=2;
00012     
00013 TestDataStreamer_v2::TestDataStreamer_v2() throw() {}
00014 
00015 bool TestDataStreamer_v2::inMap = IOManager::addToMap("TestData",  std::auto_ptr<Streamer>(new TestDataStreamer_v2()));
00016 
00017 shared_ptr<Streamable> TestDataStreamer_v2::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00018     shared_ptr<TestData> td (new TestData);
00019     shared_ptr<Streamable> wrapper (new TestDataWrapper(td));
00020     read(in, *wrapper, manager);
00021     return wrapper;
00022 }
00023 
00024 void TestDataStreamer_v2::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00025   const TestDataWrapper& wrapper = dynamic_cast<const TestDataWrapper&>(ob);
00026   boost::shared_ptr<const TestData> td = boost::dynamic_pointer_cast<const TestData>(wrapper.getWrapped());
00027   if (!td.get()) throw Sct::IllegalStateError("Null pointer or bad cast of TestData object", __FILE__, __LINE__);
00028   out << td->testName << td->runNumber << td->nScans << td->startScanNumber << td->testVariable;
00029   out.put( td->testPoints, td->testPoints_size );
00030   out << (int)td->status << td->startTime << td->endTime;
00031   out.put( td->modules, td->modules_size );
00032   out << td->fitAlgorithm;
00033   out << td->analysisAlgorithm;
00034   out << td->options;
00035   out << td->version;
00036 }
00037 
00038 void TestDataStreamer_v2::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00039   TestDataWrapper& wrapper = dynamic_cast<TestDataWrapper&>(ob);
00040   boost::shared_ptr<TestData> td = boost::dynamic_pointer_cast<TestData>(wrapper.getWrapped());
00041   if (!td.get()) throw Sct::IllegalStateError("Null pointer or bad cast of TestData object", __FILE__, __LINE__);
00042   in >> td->testName >> td->runNumber >> td->nScans >> td->startScanNumber >> td->testVariable;
00043   if ( td->testPoints_size != 0 ) delete[] td->testPoints;
00044   in.get( &td->testPoints, td->testPoints_size );
00045   in >> (int&)td->status >> td->startTime >> td->endTime;
00046   if ( td->modules_size != 0 ) delete[] td->modules;
00047   in.get( &td->modules, td->modules_size );
00048   in >> td->fitAlgorithm;
00049   in >> td->analysisAlgorithm;
00050   in >> td->options;
00051   in >> td->version;
00052 }
00053 }

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