IOManagerISProxy.cpp

00001 #include "IOManagerISProxy.h"
00002 #include "ISProxy.h"
00003 #include "../File/IOManagerFile.h"
00004 #include "../OStream.h"
00005 #include "../Streamer.h"
00006 
00007 using namespace Sct::File;
00008 
00009 namespace Sct {
00010 namespace ISProxy { 
00011 
00012 IOManagerISProxy::IOManagerISProxy() throw() {
00013 }
00014     
00015 IOManagerISProxy& IOManagerISProxy::instance() {
00016     static IOManagerISProxy theInstance;
00017     return theInstance;
00018 }
00019     
00020 void IOManagerISProxy::write(const Serializable& ob, const IOParams* params) const throw(LogicError, IoError) {
00021     const ISProxy* proxy = dynamic_cast<const ISProxy*>(&ob);
00022     if (!proxy) {
00023         ISProxy proxy(ob.getUniqueID(), ob.getClassName());
00024         IOManagerFile::instance().write(ob);    
00025         IOManagerIS::write(proxy, params);
00026     } else {
00027         IOManagerIS::write(*proxy, params);
00028     }
00029 }
00030 
00031 void IOManagerISProxy::writeImpl(OStream& out, const Streamable& ob, bool bWriteClassName) const throw(LogicError, IoError) {
00032     //cout << "IOManagerISProxy::writeImpl" << &ob << endl;
00033     const ISProxy* proxy = dynamic_cast<const ISProxy*>(&ob);
00034     if (proxy) {
00035     if (bWriteClassName) writeClassName(out, "Sct::ISProxy::ISProxy");
00036     Streamer& proxyStreamer = getStreamer("Sct::ISProxy::ISProxy");
00037     proxyStreamer.write(out, ob, *this);
00038     } else {
00039     IOManagerIS::writeImpl(out, ob, bWriteClassName);
00040     }
00041 }
00042     
00043 }
00044 }

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