Jpp  18.6.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JFile.hh
Go to the documentation of this file.
1 #ifndef __JLANG__JFILE__
2 #define __JLANG__JFILE__
3 
4 #include <fcntl.h>
5 
6 #include "JLang/JBinaryIO.hh"
7 #include "JLang/JAbstractFile.hh"
9 #include "JLang/JTimeval.hh"
10 #include <unistd.h>
11 
12 /**
13  * \author mdejong
14  */
15 
16 namespace JLANG {}
17 namespace JPP { using namespace JLANG; }
18 
19 namespace JLANG {
20 
21 
22  /**
23  * The JFile class extends the JAbstractFile class.
24  * This class implements the JBinaryInput and JBinaryOutput interfaces.
25  */
26  class JFile :
27  public JAbstractFile,
28  public JBinaryInput,
29  public JBinaryOutput
30  {
31  public:
32  /**
33  * Default constructor.
34  */
35  JFile() :
36  JAbstractFile(),
37  result(0)
38  {}
39 
40 
41  /**
42  * Constructor.
43  *
44  * \param file file descriptor
45  */
47  JAbstractFile(file),
48  result(1)
49  {}
50 
51 
52  /**
53  * Close file.
54  *
55  * \return return value
56  */
57  int close()
58  {
59  int value = -1;
60 
61  if (fileDescriptor != FILE_CLOSED) {
62 
63  value = ::close(fileDescriptor);
64 
66  result = 0;
67  }
68 
69  return value;
70  }
71 
72 
73  /**
74  * Read data from file.
75  *
76  * \param buffer buffer
77  * \param length number of bytes to read
78  * \return number of bytes read
79  */
80  virtual int read(char* buffer, const int length)
81  {
82  return (result = ::read(fileDescriptor, buffer, length));
83  }
84 
85 
86  /**
87  * Write data to file.
88  *
89  * \param buffer buffer
90  * \param length number of bytes to write
91  * \return number of bytes written
92  */
93  virtual int write(const char* buffer, const int length)
94  {
95  return (result = ::write(fileDescriptor, buffer, length));
96  }
97 
98 
99  /**
100  * Check availability of input.
101  * This method returns true if at least one byte can be read without blocking.
102  *
103  * \param timeout timeout
104  * \return true if ready to read; else false
105  */
106  bool in_avail(JTimeval timeout = JTimeval::min()) const
107  {
108  return JFileDescriptorMask(*this).in_avail(timeout);
109  }
110 
111 
112  /**
113  * Check availability of output.
114  * This method returns true if at least one byte can be written without blocking.
115  *
116  * \param timeout timeout
117  * \return true if ready to write; else false
118  */
119  bool out_avail(JTimeval timeout = JTimeval::min()) const
120  {
121  return JFileDescriptorMask(*this).out_avail(timeout);
122  }
123 
124 
125  /**
126  * Check status.
127  *
128  * \return true if last I/O operation successful; else false
129  */
130  virtual bool good() const
131  {
132  return is_open() && !eof() && !bad();
133  }
134 
135 
136  /**
137  * Check status.
138  *
139  * \return true if last I/O operation caused logical error; else false
140  */
141  virtual bool fail() const
142  {
143  return result == 0;
144  }
145 
146 
147  /**
148  * Check status.
149  *
150  * \return true if last I/O operation caused read/write error; else false
151  */
152  virtual bool bad() const
153  {
154  return fail();
155  }
156 
157 
158  /**
159  * Check end of file.
160  *
161  * \return true if end of file; else false
162  */
163  virtual bool eof() const
164  {
165  return result == EOF;
166  }
167 
168 
169  private:
170  int result;
171  };
172 }
173 
174 #endif
Interface for binary input.
Definition: JBinaryIO.hh:18
virtual bool eof() const
Check end of file.
Definition: JFile.hh:163
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
Definition: JDataQuality.sh:19
static JTimeval min()
Get minimal time value.
Definition: JTimeval.hh:119
int close()
Close file.
Definition: JFile.hh:57
virtual bool good() const
Check status.
Definition: JFile.hh:130
virtual int read(char *buffer, const int length)
Read data from file.
Definition: JFile.hh:80
virtual bool fail() const
Check status.
Definition: JFile.hh:141
Auxiliary class for time values.
Definition: JTimeval.hh:26
bool in_avail(JTimeval timeout=JTimeval::min()) const
Check availability of input.
Definition: JFile.hh:106
The JFile class extends the JAbstractFile class.
Definition: JFile.hh:26
static const int FILE_CLOSED
bool out_avail(JTimeval timeout=JTimeval::min())
Check availability of output.
bool is_open() const
Get open status.
Auxiliary class for method select.
The JAbstractFile class encapsulates the c-style file descriptor.
bool out_avail(JTimeval timeout=JTimeval::min()) const
Check availability of output.
Definition: JFile.hh:119
JFile(const JAbstractFile &file)
Constructor.
Definition: JFile.hh:46
int result
Definition: JFile.hh:170
virtual bool bad() const
Check status.
Definition: JFile.hh:152
virtual int write(const char *buffer, const int length)
Write data to file.
Definition: JFile.hh:93
Interface for binary output.
Definition: JBinaryIO.hh:41
JFile()
Default constructor.
Definition: JFile.hh:35
bool in_avail(JTimeval timeout=JTimeval::min())
Check availability of input.