ResultHeaderStreamer_v1.cpp

00001 #include "ResultHeaderStreamer_v1.h"
00002 #include "../ResultHeader.h"
00003 #include "../ConfigurationVariable.h"
00004 #include "../mVThresholdVariable.h"
00005 
00006 #include <string>
00007 
00008 using std::string;
00009 using std::auto_ptr;
00010 using namespace Sct;
00011 
00012 namespace SctData {
00013 namespace IO {
00014 
00015 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00016 unsigned ResultHeaderStreamer_v1::s_version=1;
00017     
00018 ResultHeaderStreamer_v1::ResultHeaderStreamer_v1() throw() {}
00019 
00020 bool ResultHeaderStreamer_v1::inMap = IOManager::addToMap("SctData::ResultHeader",  auto_ptr<Streamer>(new ResultHeaderStreamer_v1()));
00021 
00022 shared_ptr<Streamable> ResultHeaderStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00023     shared_ptr<Streamable> ad (new ResultHeader(0, 0, "", mVThresholdVariable::instance()));
00024     read(in, *ad, manager);
00025     return ad;
00026 }
00027 
00028 void ResultHeaderStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00029     //Downcast should always work!
00030     const ResultHeader& header = dynamic_cast<const ResultHeader&>(ob);
00031 
00032     out << header.getRunNumber() << header.getScanNumber() << header.getModuleName();
00033     out << header.getStartTimeString() << header.getEndTimeString();
00034     manager.writeImpl(out, header.getVariable(), false);
00035 }
00036 
00037 void ResultHeaderStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00038     //Downcast should always work!
00039     ResultHeader& header = dynamic_cast<ResultHeader&>(ob);
00040 
00041     // cout << "ResultHeaderIS refresh" << endl;
00042     unsigned int runNumber = 0;
00043     unsigned int scanNumber = 0;
00044     string name, start, end;
00045     in >> runNumber >> scanNumber >> name >> start >> end;
00046     header.setRunNumber(runNumber);
00047     header.setScanNumber(scanNumber);
00048     header.setModuleName(name);
00049     header.setStartTimeString(start);
00050     header.setEndTimeString(end);
00051     shared_ptr<Streamable> ob2 = manager.readImpl(in, "SctData::ConfigurationVariable");
00052     header.setVariable(*boost::dynamic_pointer_cast<ConfigurationVariable>(ob2));   
00053 
00054     // cout << "Done" << endl;
00055 }
00056 
00057 }
00058 }

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