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
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 }