IOManagerStreamerVersioned.h

00001 #ifndef SCT_STREAMERVERSIONED_IOMANAGERSTREAMERVERSIONED_H
00002 #define SCT_STREAMERVERSIONED_IOMANAGERSTREAMERVERSIONED_H
00003 
00004 #include "../File/IOManagerFile.h"
00005 #include "../IoExceptions.h"
00006 #include "../LogicErrors.h"
00007 #include <iostream>
00008 #include <boost/thread.hpp>
00009 
00010 namespace Sct {
00011 namespace Archive {
00022 class IOManagerStreamerVersioned : public IOManager {
00023 public:
00028   virtual Streamer& getStreamer(const string& className) const;
00032   virtual void readImpl(IStream& in, Streamable& ob, bool bReadClassName) const;
00036    virtual  shared_ptr<Streamable> readImpl(IStream& in) const;
00040    virtual shared_ptr<Streamable> readImpl(IStream& in, const std::string& className) const;
00044   virtual void writeImpl(OStream& out, const Streamable& ob, bool bWriteClassName) const;
00045 
00049   virtual void readImpl(IStream& in, Streamable& ob, const std::string& className) const;
00053   virtual void writeImpl(OStream& out, const Streamable& ob, const std::string& className) const;
00054 
00055   
00056  protected:
00057   IOManagerStreamerVersioned(); 
00058 
00062   virtual void writeClassName(OStream&, const string& classname) const;
00067   virtual std::string readClassName(IStream&) const;
00072   boost::recursive_mutex& getMutex() const;
00076   void setReadMode(bool mode) const;
00080   bool readMode() const;
00081   typedef std::map<std::string, unsigned> VersionMap;
00082   static VersionMap& getReadVersionMap(); 
00083  private:
00084    mutable boost::recursive_mutex m_access;  
00085    mutable bool m_read_mode; 
00086 };
00087 }
00088 }
00089 #endif //SCT_STREAMERVERSIONED_IOMANAGERSTREAMERVERSIONED_H

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