Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
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.
 
void reset ()
 Reset.
 
bool operator() ()
 Infinite wait select call.
 
bool operator() (JTimeval timeout)
 Select call.
 
int operator() (JTimeval *timeout)
 Select call.
 
JFileDescriptorMaskgetReaderMask ()
 Get reader mask.
 
void setReaderMask (const JAbstractFile &file)
 Set reader mask.
 
bool hasReaderMask (const JAbstractFile &file) const
 Has reader file.
 
int operator() (timeval *timeout=NULL)
 Select call.
 
JFileDescriptorMaskgetWriterMask ()
 Get writer mask.
 
void setWriterMask (const JAbstractFile &file)
 Set writer mask.
 
bool hasWriterMask (const JAbstractFile &file) const
 Has writer file.
 
int operator() (timeval *timeout=NULL)
 Select call.
 

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

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

◆ 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.
const fd_set * get() const
Get pointer to mask.
void reset(const bool option=true)
Reset mask.
int getNumberOfFileDescriptors() const
Get number of file descriptors.
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: