Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
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"
9#include "JLang/JTimeval.hh"
10#include <unistd.h>
11
12/**
13 * \author mdejong
14 */
15
16namespace JLANG {}
17namespace JPP { using namespace JLANG; }
18
19namespace 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 */
37 result(0)
38 {}
39
40
41 /**
42 * Constructor.
43 *
44 * \param file file descriptor
45 */
46 JFile(const JAbstractFile& file) :
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
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:
171 };
172}
173
174#endif
The JAbstractFile class encapsulates the c-style file descriptor.
static const int FILE_CLOSED
bool is_open() const
Get open status.
Interface for binary input.
Definition JBinaryIO.hh:18
Interface for binary output.
Definition JBinaryIO.hh:41
Auxiliary class for method select.
bool out_avail(JTimeval timeout=JTimeval::min())
Check availability of output.
bool in_avail(JTimeval timeout=JTimeval::min())
Check availability of input.
The JFile class extends the JAbstractFile class.
Definition JFile.hh:30
virtual bool good() const
Check status.
Definition JFile.hh:130
virtual bool bad() const
Check status.
Definition JFile.hh:152
JFile(const JAbstractFile &file)
Constructor.
Definition JFile.hh:46
virtual bool fail() const
Check status.
Definition JFile.hh:141
bool out_avail(JTimeval timeout=JTimeval::min()) const
Check availability of output.
Definition JFile.hh:119
virtual int write(const char *buffer, const int length)
Write data to file.
Definition JFile.hh:93
JFile()
Default constructor.
Definition JFile.hh:35
virtual int read(char *buffer, const int length)
Read data from file.
Definition JFile.hh:80
bool in_avail(JTimeval timeout=JTimeval::min()) const
Check availability of input.
Definition JFile.hh:106
int close()
Close file.
Definition JFile.hh:57
virtual bool eof() const
Check end of file.
Definition JFile.hh:163
Auxiliary class for time values.
Definition JTimeval.hh:29
static JTimeval min()
Get minimal time value.
Definition JTimeval.hh:119
Auxiliary classes and methods for language specific functionality.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).