OpendTect  6.3
safefileio.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H. Bril
8  Date: Nov 2004
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "basicmod.h"
14 
15 #include "od_iostream.h"
16 #include "uistring.h"
17 
18 
46 public:
47 
48  SafeFileIO(const char*,bool locked=false);
49  ~SafeFileIO();
50 
51  bool open(bool forread,bool ignorelock=false);
52  uiString errMsg() const { return errmsg_; }
53  uiString warnMsg() const { return warnmsg_; }
54  od_istream& istrm();
55  od_ostream& ostrm();
56 
57  void closeFail( bool keeplock=false )
58  { doClose( keeplock, false ); }
59  bool closeSuccess( bool keeplock=false )
60  { return doClose( keeplock, true ); }
61 
62  const char* fileName() const { return filenm_.buf(); }
63 
64  // Some setup variables
68  double lockwaitincr_;
70 
74  bool remove();
75 
76 protected:
77 
78  const bool locked_;
84  mutable uiString errmsg_;
85  mutable uiString warnmsg_;
86 
87  bool openRead(bool);
88  bool openWrite(bool);
89  bool commitWrite();
90  bool doClose(bool, bool);
91 
92  bool haveLock() const;
93  bool waitForLock() const;
94  void mkLock(bool);
95  void rmLock();
96 };
97 
98 
99 
104 { mODTextTranslationClass(SafeWriteHelper);
105 public:
106 
107  SafeWriteHelper(const char*,bool keepbak=false);
108  ~SafeWriteHelper();
109 
110  od_ostream& stream() { return strm_; }
111 
112  bool commit();
113  void rollback();
114 
115 protected:
116 
118  bool closed_;
119  const bool keepbak_;
121 
122  void closeStream();
123 
124 };
#define mExpClass(module)
Definition: commondefs.h:157
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
bool removebakonsuccess_
default=false
Definition: safefileio.h:66
od_ostream & stream()
Definition: safefileio.h:110
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
const BufferString fnm_
Definition: safefileio.h:120
uiString warnmsg_
Definition: safefileio.h:85
const BufferString newfnm_
Definition: safefileio.h:82
od_stream * strm_
Definition: safefileio.h:83
Definition: uistring.h:88
OD base class for stream read/write.
Definition: od_stream.h:52
bool closeSuccess(bool keeplock=false)
Definition: safefileio.h:59
uiString warnMsg() const
Definition: safefileio.h:53
double lockwaitincr_
default=0.5 (seconds)
Definition: safefileio.h:68
OD class for stream read.
Definition: od_istream.h:23
const bool locked_
Definition: safefileio.h:78
bool usebakwhenmissing_
default=true
Definition: safefileio.h:65
bool allowlockremove_
Definition: safefileio.h:69
od_ostream strm_
Definition: safefileio.h:117
const char * fileName() const
Definition: safefileio.h:62
uiString errmsg_
Definition: safefileio.h:84
Helps to write a new version of a file. On write error rollback, otherwise commit.
Definition: safefileio.h:103
Protects file IO when you can't afford to have partly written things after write errors or have a fil...
Definition: safefileio.h:44
uiString errMsg() const
Definition: safefileio.h:52
const bool keepbak_
Definition: safefileio.h:119
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
const BufferString lockfnm_
Definition: safefileio.h:80
BufferString errmsg_
Definition: horizontracker.h:117
int lockretries_
default=10
Definition: safefileio.h:67
void closeFail(bool keeplock=false)
Definition: safefileio.h:57
const BufferString filenm_
Definition: safefileio.h:79
const BufferString bakfnm_
Definition: safefileio.h:81
bool closed_
Definition: safefileio.h:118

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017