Jpp
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

◆ JFileDescriptorMask() [1/3]

JLANG::JFileDescriptorMask::JFileDescriptorMask ( )
inline

Default constructor.

Definition at line 36 of file JFileDescriptorMask.hh.

36  :
39  {
40  FD_ZERO(get());
41  }

◆ JFileDescriptorMask() [2/3]

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  }

◆ JFileDescriptorMask() [3/3]

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  }

Member Function Documentation

◆ get() [1/2]

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  }

◆ get() [2/2]

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  }

◆ operator&() [1/2]

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  }

◆ operator&() [2/2]

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  }

◆ reset() [1/3]

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  }

◆ set() [1/2]

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  }

◆ set() [2/2]

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  }

◆ reset() [2/3]

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  }

◆ reset() [3/3]

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  }

◆ has() [1/2]

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  }

◆ has() [2/2]

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  }

◆ getNumberOfFileDescriptors()

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  }

◆ empty()

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  }

◆ in_avail()

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  }

◆ out_avail()

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  }

Member Data Documentation

◆ MAXIMUM_FILE_DESCRIPTOR

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

Definition at line 30 of file JFileDescriptorMask.hh.

◆ maximum_file_descriptor

int JLANG::JFileDescriptorMask::maximum_file_descriptor
private

Definition at line 285 of file JFileDescriptorMask.hh.

◆ number_of_file_descriptors

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:
JLANG::JAbstractFile::getFileDescriptor
int getFileDescriptor() const
Get file descriptor.
Definition: JAbstractFile.hh:75
JLANG::JFileDescriptorMask::has
bool has(const int file_descriptor) const
Has file descriptor.
Definition: JFileDescriptorMask.hh:216
JLANG::JFileDescriptorMask::maximum_file_descriptor
int maximum_file_descriptor
Definition: JFileDescriptorMask.hh:285
JLANG::JFileDescriptorMask::number_of_file_descriptors
int number_of_file_descriptors
Definition: JFileDescriptorMask.hh:286
JLANG::JFileDescriptorMask::getNumberOfFileDescriptors
int getNumberOfFileDescriptors() const
Get number of file descriptors.
Definition: JFileDescriptorMask.hh:239
JLANG::JFileDescriptorMask::get
const fd_set * get() const
Get pointer to mask.
Definition: JFileDescriptorMask.hh:79
JLANG::JFileDescriptorMask::set
void set(const int file_descriptor)
Set file descriptor.
Definition: JFileDescriptorMask.hh:154
JLANG::JFileDescriptorMask::reset
void reset(const bool option=true)
Reset mask.
Definition: JFileDescriptorMask.hh:125