DUNE-FEM (unstable)

iolock.hh
1// (c) Robert Kloefkorn
2#ifndef DUNE_FEM_INPUTOUPUTLOCK_HH
3#define DUNE_FEM_INPUTOUPUTLOCK_HH
4
5//- system includes
6#include <cstdio>
7#include <cstdlib>
8
9#include <iostream>
10#include <fstream>
11#include <string>
12
13namespace Dune
14{
15
16 namespace Fem
17 {
18
21 {
22 std::string filename_;
23 FileIOLock ( const FileIOLock & );
24 public :
26 FileIOLock(const std::string& fn);
28 ~FileIOLock() ;
29
31 static const char * suffix() { return "lock"; }
32 };
33
36 {
38 public :
40 FileIOCheckError(const std::string& fn)
41 {
42 std::string lockfile(fn);
43 lockfile += ".";
44 lockfile += FileIOLock::suffix();
45
46 std::ifstream file ( lockfile.c_str () );
47 if( file.is_open() )
48 {
49 std::cerr << "ERROR: data set `"<<fn<<"' not complete, lock file exists! " << std::endl;
50 abort();
51 }
52 }
53 };
54
56 //
57 // INLINE
58 //
60
61 // create lock file
62 inline FileIOLock :: FileIOLock (const std::string& fn)
63 : filename_(fn)
64 {
65 if( filename_ == "" )
66 {
67 filename_ = suffix();
68 }
69 else {
70 filename_ += ".";
71 filename_ += suffix();
72 }
73
74 std::ofstream file ( filename_.c_str() );
75 if( !file )
76 {
77 std::cerr << "WARNING: Couldn't open lock file `"<<filename_<<"' in: ";
78 std::cerr << __FILE__<< " line: "<< __LINE__ << std::endl;
79 }
80 else
81 {
82 file.close();
83 }
84 return ;
85 }
86
87 // remove lock file
89 {
90 if (filename_ != "")
91 {
92 int test = remove (filename_.c_str()) ;
93 if (test != 0)
94 {
95 std::cerr << "WARNING: Couldn't remove lock file `"<<filename_<<"' in: ";
96 std::cerr <<__FILE__<<" line: " <<__LINE__ << std::endl ;
97 }
98 }
99 return ;
100 }
101
102 } // namespace Fem
103
104} // namespace Dune
105#endif // #ifndef DUNE_FEM_INPUTOUPUTLOCK_HH
check if lock file exists and aborts if true
Definition: iolock.hh:36
FileIOCheckError(const std::string &fn)
creates lock file
Definition: iolock.hh:40
creates and removes lock file during backup process
Definition: iolock.hh:21
~FileIOLock()
removes lock file
Definition: iolock.hh:88
static const char * suffix()
suffix that is appended to lock files
Definition: iolock.hh:31
Dune namespace.
Definition: alignedallocator.hh:13
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 13, 23:29, 2024)