00001 00008 #ifndef GROWINGMSEG_H 00009 #define GROWINGMSEG_H 00010 #include<unistd.h> 00011 #include<sys/mman.h> 00012 #include"mseg.h" 00013 #include"errorclass.h" 00014 00015 namespace RAMS 00016 { 00017 00026 class Growingmseg: public Mseg 00027 { 00028 public: 00029 class Error : public Systemerror 00030 { 00031 public: 00032 Error(int err,char *pcall,char *msg,...):Systemerror() 00033 { 00034 va_list args; 00035 va_start(args,msg); 00036 init(err,pcall,msg,args); 00037 va_end(args); 00038 } 00039 }; 00040 protected: 00041 00042 int fd; 00043 int gmflags; 00044 00047 virtual void grow_internal(int anzseiten) throw(Error); 00048 public: 00049 Growingmseg():Mseg() { fd=-1; gmflags=MAP_PRIVATE; } 00053 void grow(int anzseiten) throw(Error); 00054 00058 ~Growingmseg(); 00059 }; 00060 00061 }; 00062 #endif 00063 00064 00065