Jpp  master_rocky
the software that should make you happy
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)
 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  {}
JSelectReader()
Default constructor.
JSelectWriter()
Default constructor.

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  }
Wrapper class for select call.
void reset()
Reset.
Wrapper class for select call.
void reset()
Reset.

◆ 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  }
bool operator()()
Infinite wait select call.
Definition: JSelect.hh:64

◆ 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*>(static_cast<void*>(&timeout)));
79  }
Auxiliary class for time values.
Definition: JTimeval.hh:29

◆ operator()() [3/5]

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

Select call.

Returns
number of valid file descriptors

Definition at line 87 of file JSelect.hh.

88  {
89  int nfds = std::max(readerMask.getNumberOfFileDescriptors(),
91 
92  nfds += 1;
93  nfds = ::select(nfds, &readerMask, &writerMask, NULL, timeout->get());
94 
95  if (nfds != 0) {
96 
97  if (nfds < 0) {
98 
99  readerMask.reset(true); // hard reset
100  writerMask.reset(true); // hard reset
101 
102  if (errno != EINTR) {
103  THROW(JSelectException, "select(..) failed " << nfds << "; errno = " << errno);
104  }
105  }
106 
107  } else {
108 
109  readerMask.reset(false); // soft reset
110  writerMask.reset(false); // soft reset
111  }
112 
113  return nfds;
114  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
void reset(const bool option=true)
Reset mask.
int getNumberOfFileDescriptors() const
Get number of file descriptors.
Exception for select call.
Definition: JException.hh:450
const timeval * get() const
Get pointer to time value.
Definition: JTimeval.hh:143
JFileDescriptorMask readerMask
JFileDescriptorMask writerMask
bool select(const Trk &trk, const Evt &evt)
Event selection.

◆ 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  }
void set(const int file_descriptor)
Set file descriptor.

◆ 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  }
bool has(const int file_descriptor) const
Has file descriptor.

◆ 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: