Jpp
Public Member Functions | Protected Attributes | List of all members
JNET::JSelect Class Reference

Wrapper class for select call. More...

#include <JSelect.hh>

Inheritance diagram for JNET::JSelect:
JNET::JSelectReader JNET::JSelectWriter

Public Member Functions

 JSelect ()
 Default constructor. More...
 
void reset ()
 Reset. More...
 
bool operator() ()
 Infinite wait select call. More...
 
bool operator() (JTimeval timeout)
 Select call. More...
 
int operator() (JTimeval *timeout)
 Infinite wait select call. More...
 
JFileDescriptorMaskgetReaderMask ()
 Get reader mask. More...
 
void setReaderMask (const JAbstractFile &file)
 Set reader mask. More...
 
bool hasReaderMask (const JAbstractFile &file) const
 Has reader file. More...
 
int operator() (timeval *timeout=NULL)
 Select call. More...
 
JFileDescriptorMaskgetWriterMask ()
 Get writer mask. More...
 
void setWriterMask (const JAbstractFile &file)
 Set writer mask. More...
 
bool hasWriterMask (const JAbstractFile &file) const
 Has writer file. More...
 
int operator() (timeval *timeout=NULL)
 Select call. More...
 

Protected Attributes

JFileDescriptorMask readerMask
 
JFileDescriptorMask writerMask
 

Detailed Description

Wrapper class for select call.

Definition at line 34 of file JSelect.hh.

Constructor & Destructor Documentation

◆ JSelect()

JNET::JSelect::JSelect ( )
inline

Default constructor.

Definition at line 42 of file JSelect.hh.

42  :
43  JSelectReader(),
45  {}

Member Function Documentation

◆ reset()

void JNET::JSelect::reset ( )
inline

Reset.

Definition at line 51 of file JSelect.hh.

52  {
53  static_cast<JSelectReader&>(*this).reset();
54  static_cast<JSelectWriter&>(*this).reset();
55  }

◆ operator()() [1/5]

bool JNET::JSelect::operator() ( )
inline

Infinite wait select call.

Returns
true if data can be read or written; else false

Definition at line 64 of file JSelect.hh.

65  {
66  return this->operator ()(0);
67  }

◆ operator()() [2/5]

bool JNET::JSelect::operator() ( JTimeval  timeout)
inline

Select call.

Parameters
timeouttimeout
Returns
true if data can be read or written; else false

Definition at line 76 of file JSelect.hh.

77  {
78  return this->operator ()(static_cast<JTimeval*>(
79  static_cast<void*>(&timeout)));
80  }

◆ operator()() [3/5]

int JNET::JSelect::operator() ( JTimeval timeout)
inline

Infinite wait select call.

Returns
number of valid file descriptors

Definition at line 88 of file JSelect.hh.

89  {
90  int nfds = std::max(readerMask.getNumberOfFileDescriptors(),
92 
93  nfds += 1;
94  nfds = ::select(nfds, &readerMask, &writerMask, NULL, timeout->get());
95 
96  if (nfds != 0) {
97 
98  if (nfds < 0) {
99  if (errno != EINTR) {
100  THROW(JSelectException, "JSelect(..) failed.");
101  }
102  }
103 
104  } else {
105 
106  readerMask.reset(false); // soft reset
107  writerMask.reset(false); // soft reset
108  }
109 
110  return nfds;
111  }

◆ getReaderMask()

JFileDescriptorMask& JNET::JSelectReader::getReaderMask ( )
inlineinherited

Get reader mask.

Returns
mask

Definition at line 46 of file JSelectReader.hh.

47  {
48  return readerMask;
49  }

◆ setReaderMask()

void JNET::JSelectReader::setReaderMask ( const JAbstractFile file)
inlineinherited

Set reader mask.

Parameters
filefile

Definition at line 57 of file JSelectReader.hh.

58  {
59  readerMask.set(file);
60  }

◆ hasReaderMask()

bool JNET::JSelectReader::hasReaderMask ( const JAbstractFile file) const
inlineinherited

Has reader file.

Parameters
filefile
Returns
true if file set; else false

Definition at line 69 of file JSelectReader.hh.

70  {
71  return readerMask.has(file);
72  }

◆ operator()() [4/5]

int JNET::JSelectReader::operator() ( timeval *  timeout = NULL)
inlineinherited

Select call.

Parameters
timeouttimeout
Returns
number of valid file descriptors

Definition at line 102 of file JSelectReader.hh.

103  {
105 
106  nfds += 1;
107  nfds = ::select(nfds, &readerMask, NULL, NULL, timeout);
108 
109  if (nfds != 0) {
110 
111  if (nfds < 0) {
112  if (errno != EINTR) {
113  THROW(JSelectException, "JSelectReader(..) failed.");
114  }
115  }
116 
117  } else {
118 
119  readerMask.reset(false); // soft reset
120  }
121 
122  return nfds;
123  }

◆ getWriterMask()

JFileDescriptorMask& JNET::JSelectWriter::getWriterMask ( )
inlineinherited

Get writer mask.

Returns
mask

Definition at line 46 of file JSelectWriter.hh.

47  {
48  return writerMask;
49  }

◆ setWriterMask()

void JNET::JSelectWriter::setWriterMask ( const JAbstractFile file)
inlineinherited

Set writer mask.

Parameters
filefile

Definition at line 57 of file JSelectWriter.hh.

58  {
59  writerMask.set(file);
60  }

◆ hasWriterMask()

bool JNET::JSelectWriter::hasWriterMask ( const JAbstractFile file) const
inlineinherited

Has writer file.

Parameters
filefile
Returns
true if file set; else false

Definition at line 69 of file JSelectWriter.hh.

70  {
71  return writerMask.has(file);
72  }

◆ operator()() [5/5]

int JNET::JSelectWriter::operator() ( timeval *  timeout = NULL)
inlineinherited

Select call.

Parameters
timeouttimeout
Returns
number of valid file descriptors

Definition at line 102 of file JSelectWriter.hh.

103  {
105 
106  nfds += 1;
107  nfds = ::select(nfds, NULL, &writerMask, NULL, timeout);
108 
109  if (nfds != 0) {
110 
111  if (nfds < 0) {
112  if (errno != EINTR) {
113  THROW(JSelectException, "JSelectWriter(..) failed.");
114  }
115  }
116 
117  } else {
118 
119  writerMask.reset(false); // soft reset
120  }
121 
122  return nfds;
123  }

Member Data Documentation

◆ readerMask

JFileDescriptorMask JNET::JSelectReader::readerMask
protectedinherited

Definition at line 127 of file JSelectReader.hh.

◆ writerMask

JFileDescriptorMask JNET::JSelectWriter::writerMask
protectedinherited

Definition at line 127 of file JSelectWriter.hh.


The documentation for this class was generated from the following file:
JNET::JSelect::operator()
bool operator()()
Infinite wait select call.
Definition: JSelect.hh:64
JLANG::JFileDescriptorMask::has
bool has(const int file_descriptor) const
Has file descriptor.
Definition: JFileDescriptorMask.hh:216
JNET::JSelectReader::JSelectReader
JSelectReader()
Default constructor.
Definition: JSelectReader.hh:37
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
JNET::JSelectReader::readerMask
JFileDescriptorMask readerMask
Definition: JSelectReader.hh:127
THROW
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:669
JLANG::JFileDescriptorMask::set
void set(const int file_descriptor)
Set file descriptor.
Definition: JFileDescriptorMask.hh:154
JNET::JSelectWriter::JSelectWriter
JSelectWriter()
Default constructor.
Definition: JSelectWriter.hh:37
JNET::JSelectWriter::writerMask
JFileDescriptorMask writerMask
Definition: JSelectWriter.hh:127
JLANG::JFileDescriptorMask::reset
void reset(const bool option=true)
Reset mask.
Definition: JFileDescriptorMask.hh:125