Jpp  18.0.1-rc.2
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 24 of file JFileDescriptorMask.hh.

Constructor & Destructor Documentation

JLANG::JFileDescriptorMask::JFileDescriptorMask ( )
inline

Default constructor.

Definition at line 36 of file JFileDescriptorMask.hh.

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

Constructor.

Parameters
filefile descriptor

Definition at line 49 of file JFileDescriptorMask.hh.

49  :
52  {
53  FD_ZERO(get());
54 
55  set(file);
56  }
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 64 of file JFileDescriptorMask.hh.

64  :
67  {
68  FD_ZERO(get());
69 
70  set(file_descriptor);
71  }
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 79 of file JFileDescriptorMask.hh.

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

Get pointer to mask.

Returns
pointer to mask

Definition at line 90 of file JFileDescriptorMask.hh.

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

Address of operator.

Returns
pointer to mask

Definition at line 101 of file JFileDescriptorMask.hh.

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

Address of operator.

Returns
pointer to mask

Definition at line 112 of file JFileDescriptorMask.hh.

113  {
114  return get();
115  }
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 125 of file JFileDescriptorMask.hh.

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

Set file descriptor.

Parameters
file_descriptorfile descriptor

Definition at line 154 of file JFileDescriptorMask.hh.

155  {
156  if (!has(file_descriptor)) {
157 
158  FD_SET(file_descriptor, get());
159 
160  if (file_descriptor > maximum_file_descriptor) {
161  maximum_file_descriptor = file_descriptor;
162  }
163 
165  }
166  }
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 174 of file JFileDescriptorMask.hh.

175  {
176  set(file.getFileDescriptor());
177  }
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 185 of file JFileDescriptorMask.hh.

186  {
187  if (has(file_descriptor)) {
188 
189  FD_CLR(file_descriptor, get());
190 
193 
195  }
196  }
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 204 of file JFileDescriptorMask.hh.

205  {
206  reset(file.getFileDescriptor());
207  }
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 216 of file JFileDescriptorMask.hh.

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

Has file.

Parameters
filefile
Returns
true if file set; else false

Definition at line 228 of file JFileDescriptorMask.hh.

229  {
230  return has(file.getFileDescriptor());
231  }
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 239 of file JFileDescriptorMask.hh.

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

Check setting of file descriptors.

Returns
true if no file descriptors are set; else false

Definition at line 250 of file JFileDescriptorMask.hh.

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

Check availability of input.

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

Parameters
timeouttimeout
Returns
true if ready to read; else false

Definition at line 264 of file JFileDescriptorMask.hh.

265  {
266  return ::select(getNumberOfFileDescriptors() + 1, get(), NULL, NULL, &timeout) > 0;
267  }
int getNumberOfFileDescriptors() const
Get number of file descriptors.
bool JLANG::JFileDescriptorMask::out_avail ( JTimeval  timeout = JTimeval::min())
inline

Check availability of output.

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

Parameters
timeouttimeout
Returns
true if ready to write; else false

Definition at line 278 of file JFileDescriptorMask.hh.

279  {
280  return ::select(getNumberOfFileDescriptors() + 1, NULL, get(), NULL, &timeout) > 0;
281  }
int getNumberOfFileDescriptors() const
Get number of file descriptors.

Member Data Documentation

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

Definition at line 30 of file JFileDescriptorMask.hh.

int JLANG::JFileDescriptorMask::maximum_file_descriptor
private

Definition at line 285 of file JFileDescriptorMask.hh.

int JLANG::JFileDescriptorMask::number_of_file_descriptors
private

Definition at line 286 of file JFileDescriptorMask.hh.


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