Jpp  18.5.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Attributes | Private Attributes | List of all members
JLANG::JFileDescriptorMask Class Reference

Auxiliary class for method select. More...

#include <JFileDescriptorMask.hh>

Inheritance diagram for JLANG::JFileDescriptorMask:

Public Member Functions

 JFileDescriptorMask ()
 Default constructor. More...
 
 JFileDescriptorMask (const JAbstractFile &file)
 Constructor. More...
 
 JFileDescriptorMask (const int file_descriptor)
 Constructor. More...
 
const fd_set * get () const
 Get pointer to mask. More...
 
fd_set * get ()
 Get pointer to mask. More...
 
const fd_set * operator& () const
 Address of operator. More...
 
fd_set * operator& ()
 Address of operator. More...
 
void reset (const bool option=true)
 Reset mask. More...
 
void set (const int file_descriptor)
 Set file descriptor. More...
 
void set (const JAbstractFile &file)
 Set file. More...
 
void reset (const int file_descriptor)
 Reset file descriptor. More...
 
void reset (const JAbstractFile &file)
 Reset file. More...
 
bool has (const int file_descriptor) const
 Has file descriptor. More...
 
bool has (const JAbstractFile &file) const
 Has file. More...
 
int getNumberOfFileDescriptors () const
 Get number of file descriptors. More...
 
bool empty () const
 Check setting of file descriptors. More...
 
bool in_avail (JTimeval timeout=JTimeval::min())
 Check availability of input. More...
 
bool out_avail (JTimeval timeout=JTimeval::min())
 Check availability of output. More...
 

Static Public Attributes

static const int MAXIMUM_FILE_DESCRIPTOR = FD_SETSIZE
 

Private Attributes

int maximum_file_descriptor
 
int number_of_file_descriptors
 

Detailed Description

Auxiliary class for method select.

This class encapsulates the fd_set data structure.

Definition at line 25 of file JFileDescriptorMask.hh.

Constructor & Destructor Documentation

JLANG::JFileDescriptorMask::JFileDescriptorMask ( )
inline

Default constructor.

Definition at line 37 of file JFileDescriptorMask.hh.

37  :
40  {
41  FD_ZERO(get());
42  }
JLANG::JFileDescriptorMask::JFileDescriptorMask ( const JAbstractFile file)
inline

Constructor.

Parameters
filefile descriptor

Definition at line 50 of file JFileDescriptorMask.hh.

50  :
53  {
54  FD_ZERO(get());
55 
56  set(file);
57  }
void set(const int file_descriptor)
Set file descriptor.
JLANG::JFileDescriptorMask::JFileDescriptorMask ( const int  file_descriptor)
inline

Constructor.

Parameters
file_descriptorfile descriptor

Definition at line 65 of file JFileDescriptorMask.hh.

65  :
68  {
69  FD_ZERO(get());
70 
71  set(file_descriptor);
72  }
void set(const int file_descriptor)
Set file descriptor.

Member Function Documentation

const fd_set* JLANG::JFileDescriptorMask::get ( ) const
inline

Get pointer to mask.

Returns
pointer to mask

Definition at line 80 of file JFileDescriptorMask.hh.

81  {
82  return static_cast<const fd_set*>(this);
83  }
fd_set* JLANG::JFileDescriptorMask::get ( )
inline

Get pointer to mask.

Returns
pointer to mask

Definition at line 91 of file JFileDescriptorMask.hh.

92  {
93  return static_cast<fd_set*>(this);
94  }
const fd_set* JLANG::JFileDescriptorMask::operator& ( ) const
inline

Address of operator.

Returns
pointer to mask

Definition at line 102 of file JFileDescriptorMask.hh.

103  {
104  return get();
105  }
fd_set* JLANG::JFileDescriptorMask::operator& ( )
inline

Address of operator.

Returns
pointer to mask

Definition at line 113 of file JFileDescriptorMask.hh.

114  {
115  return get();
116  }
void JLANG::JFileDescriptorMask::reset ( const bool  option = true)
inline

Reset mask.

A hard reset causes the reset of the complete mask whereas a soft reset causes the reset of the internal parameters only.

Parameters
optiontrue hard reset; else soft reset

Definition at line 126 of file JFileDescriptorMask.hh.

127  {
128  if (option) {
129 
130  switch (number_of_file_descriptors) {
131 
132  case 0:
133  break;
134 
135  case 1:
136  FD_CLR(maximum_file_descriptor, get());
137  break;
138 
139  default:
140  FD_ZERO(get());
141  break;
142  }
143  }
144 
147  }
void JLANG::JFileDescriptorMask::set ( const int  file_descriptor)
inline

Set file descriptor.

Parameters
file_descriptorfile descriptor

Definition at line 155 of file JFileDescriptorMask.hh.

156  {
157  if (!has(file_descriptor)) {
158 
159  FD_SET(file_descriptor, get());
160 
161  if (file_descriptor > maximum_file_descriptor) {
162  maximum_file_descriptor = file_descriptor;
163  }
164 
166  }
167  }
bool has(const int file_descriptor) const
Has file descriptor.
void JLANG::JFileDescriptorMask::set ( const JAbstractFile file)
inline

Set file.

Parameters
filefile

Definition at line 175 of file JFileDescriptorMask.hh.

176  {
177  set(file.getFileDescriptor());
178  }
void set(const int file_descriptor)
Set file descriptor.
int getFileDescriptor() const
Get file descriptor.
void JLANG::JFileDescriptorMask::reset ( const int  file_descriptor)
inline

Reset file descriptor.

Parameters
file_descriptorfile descriptor

Definition at line 186 of file JFileDescriptorMask.hh.

187  {
188  if (has(file_descriptor)) {
189 
190  FD_CLR(file_descriptor, get());
191 
194  }
195 
197  }
198  }
bool has(const int file_descriptor) const
Has file descriptor.
void JLANG::JFileDescriptorMask::reset ( const JAbstractFile file)
inline

Reset file.

Parameters
filefile

Definition at line 206 of file JFileDescriptorMask.hh.

207  {
208  reset(file.getFileDescriptor());
209  }
int getFileDescriptor() const
Get file descriptor.
void reset(const bool option=true)
Reset mask.
bool JLANG::JFileDescriptorMask::has ( const int  file_descriptor) const
inline

Has file descriptor.

Parameters
file_descriptorfile descriptor
Returns
true if file descriptor set; else false

Definition at line 218 of file JFileDescriptorMask.hh.

219  {
220  return FD_ISSET(file_descriptor, get());
221  }
bool JLANG::JFileDescriptorMask::has ( const JAbstractFile file) const
inline

Has file.

Parameters
filefile
Returns
true if file set; else false

Definition at line 230 of file JFileDescriptorMask.hh.

231  {
232  return has(file.getFileDescriptor());
233  }
bool has(const int file_descriptor) const
Has file descriptor.
int getFileDescriptor() const
Get file descriptor.
int JLANG::JFileDescriptorMask::getNumberOfFileDescriptors ( ) const
inline

Get number of file descriptors.

Returns
number of file descriptors

Definition at line 241 of file JFileDescriptorMask.hh.

242  {
244  }
bool JLANG::JFileDescriptorMask::empty ( ) const
inline

Check setting of file descriptors.

Returns
true if no file descriptors are set; else false

Definition at line 252 of file JFileDescriptorMask.hh.

253  {
254  return number_of_file_descriptors == 0;
255  }
bool JLANG::JFileDescriptorMask::in_avail ( JTimeval  timeout = JTimeval::min())
inline

Check availability of input.

This method returns true if at least one byte can be read without blocking. Following the select call, this method overwrites the internal mask!

Parameters
timeouttimeout
Returns
true if ready to read; else false

Definition at line 266 of file JFileDescriptorMask.hh.

267  {
268  const int nfds = ::select(getNumberOfFileDescriptors() + 1, get(), NULL, NULL, &timeout);
269 
270  if (nfds > 0)
271  return true;
272  else if (nfds == 0)
273  return false;
274  else
275  THROW(JSocketException, "select error " << errno);
276  }
bool select(const Trk &trk, const Evt &evt)
Event selection.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
int getNumberOfFileDescriptors() const
Get number of file descriptors.
Exception for socket.
Definition: JException.hh:466
bool JLANG::JFileDescriptorMask::out_avail ( JTimeval  timeout = JTimeval::min())
inline

Check availability of output.

This method returns true if at least one byte can be written without blocking. Following the select call, this method overwrites the internal mask!

Parameters
timeouttimeout
Returns
true if ready to write; else false

Definition at line 287 of file JFileDescriptorMask.hh.

288  {
289  const int nfds = ::select(getNumberOfFileDescriptors() + 1, NULL, get(), NULL, &timeout) > 0;
290 
291  if (nfds > 0)
292  return true;
293  else if (nfds == 0)
294  return false;
295  else
296  THROW(JSocketException, "select error " << errno);
297  }
bool select(const Trk &trk, const Evt &evt)
Event selection.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
int getNumberOfFileDescriptors() const
Get number of file descriptors.
Exception for socket.
Definition: JException.hh:466

Member Data Documentation

const int JLANG::JFileDescriptorMask::MAXIMUM_FILE_DESCRIPTOR = FD_SETSIZE
static

Definition at line 31 of file JFileDescriptorMask.hh.

int JLANG::JFileDescriptorMask::maximum_file_descriptor
private

Definition at line 301 of file JFileDescriptorMask.hh.

int JLANG::JFileDescriptorMask::number_of_file_descriptors
private

Definition at line 302 of file JFileDescriptorMask.hh.


The documentation for this class was generated from the following file: