DcsDataStreamer_v1.cpp

00001 #include "DcsDataStreamer_v1.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_v1::s_version=1;
00014 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00015 
00016 DcsDataStreamer_v1::DcsDataStreamer_v1() throw() {}
00017     
00018 bool DcsDataStreamer_v1::inMap = IOManager::addToMap("SctData::DcsData",  std::auto_ptr<Streamer>(new DcsDataStreamer_v1()));
00019 
00020 
00021 shared_ptr<Streamable> DcsDataStreamer_v1::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_v1::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);
00035     }
00036 }
00037 
00038 void DcsDataStreamer_v1::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; float val;
00044     for (unsigned i=0; i<n; ++i){
00045       in >> name >> val;
00046       data.setParameter(name, val, long(0));
00047     }
00048 }
00049 
00050 }
00051 }

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