00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef _CDRIO_H_
00039 #define _CDRIO_H_
00040
00041
00042
00043
00044 #include <iosfwd>
00045 #include <vector>
00046 #include <memory>
00047
00048
00049
00050
00051
00052 namespace OSB_LIB {
00053 class Asn1Writer;
00054 class CdrList;
00055 class BsPage;
00056 template<typename T> class Id;
00057 }
00058
00059
00060
00061 namespace OSB_LIB {
00062
00063
00064
00065
00066
00067
00077 class CdrIo {
00078 public:
00080 virtual ~CdrIo();
00081
00083 virtual std::auto_ptr<CdrIo> clone() const = 0;
00084
00086 virtual const Id<BsPage>& pageId() const = 0;
00087
00095 virtual void read(
00096 CdrList& dest
00097 ) = 0;
00098
00104 virtual void prepareWrite() = 0;
00105
00115 virtual void write(
00116 const CdrList& cdrs,
00117 Asn1Writer& writer
00118 ) = 0;
00119
00127 virtual void replace(
00128 const CdrList& newCdrs,
00129 Asn1Writer& writer
00130 ) = 0;
00131
00143 virtual bool commitChanges() = 0;
00144
00155 virtual bool undoChanges() = 0;
00156
00170 virtual bool remove() = 0;
00171
00172 public:
00174 static void setBaseDir(const std::string& dir);
00176 static std::string baseDir_;
00177
00179 static long maxFileSize_;
00180 };
00181
00188 std::auto_ptr<CdrIo> makeCdrIo(const Id<BsPage>& pageId);
00189
00190 }
00191 #endif // #ifndef _CDRIO_H_
00192