DcsDataStreamer_v2.cpp

00001 #include "DcsDataStreamer_v2.h"
00002 #include "../DcsData.h"
00003 #include "Sct/IOManager.h"
00004 #include "Sct/IStream.h"
00005 #include "Sct/OStream.h"
00006 #include "boost/shared_ptr.hpp"
00007 
00008 using namespace Sct;
00009 
00010 namespace SctData {
00011 namespace IO {
00012 
00013 unsigned DcsDataStreamer_v2::s_version=2;
00014 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00015 
00016 DcsDataStreamer_v2::DcsDataStreamer_v2() throw() {}
00017     
00018 bool DcsDataStreamer_v2::inMap = IOManager::addToMap("SctData::DcsData",  std::auto_ptr<Streamer>(new DcsDataStreamer_v2()));
00019 
00020 
00021 shared_ptr<Streamable> DcsDataStreamer_v2::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00022   boost::shared_ptr<Streamable> m (new DcsData());
00023   read(in, *m, manager);
00024   return m;
00025 }
00026 
00027 void DcsDataStreamer_v2::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00028     const DcsData& data = dynamic_cast<const DcsData&>(ob);
00029 
00030     std::list<std::string> names = data.getAllParameterNames();
00031 
00032     out << names.size();
00033     for (std::list<std::string>::const_iterator i=names.begin(); i!=names.end(); ++i){
00034       out << (*i) << data.getParameter(*i) << data.getTime(*i).c_time();
00035     }
00036 }
00037 
00038 void DcsDataStreamer_v2::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00039     DcsData& data = dynamic_cast<DcsData&>(ob);
00040 
00041     unsigned n;
00042     in >> n;
00043     string name; 
00044     float val;
00045     long seconds;
00046     for (unsigned i=0; i<n; ++i){
00047       in >> name >> val >> seconds;
00048       data.setParameter(name, val, OWLTime(seconds));
00049     }
00050 }
00051 
00052 }
00053 }

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