SNode.C
Loading...
Searching...
No Matches
core::pipe::PipeSink Class Reference

#include <PipeSink.h>

Inheritance diagram for core::pipe::PipeSink:
Collaboration diagram for core::pipe::PipeSink:

Public Member Functions

 PipeSink (const PipeSink &)=delete
 
PipeSinkoperator= (const PipeSink &)=delete
 
 PipeSink (int fd)
 
 ~PipeSink () override
 
void setOnData (const std::function< void(const char *, std::size_t)> &onData)
 
void setOnEof (const std::function< void()> &onEof)
 
void setOnError (const std::function< void(int)> &onError)
 
- Public Member Functions inherited from core::DescriptorEventReceiver
 DescriptorEventReceiver (const std::string &name, DescriptorEventPublisher &descriptorEventPublisher, const utils::Timeval &timeout=TIMEOUT::DISABLE)
 
int getRegisteredFd () const
 
bool isEnabled () const
 
bool isSuspended () const
 
void setTimeout (const utils::Timeval &timeout)
 
utils::Timeval getTimeout (const utils::Timeval &currentTime) const
 
void checkTimeout (const utils::Timeval &currentTime)
 
- Public Member Functions inherited from core::EventReceiver
 EventReceiver (const std::string &name)
 
 EventReceiver (EventReceiver &)=delete
 
 EventReceiver (EventReceiver &&)=delete
 
EventReceiveroperator= (EventReceiver &)=delete
 
EventReceiveroperator= (EventReceiver &&)=delete
 
virtual void destruct ()
 
void span ()
 
void relax ()
 
const std::string & getName () const
 

Private Member Functions

void readEvent () override
 
void unobservedEvent () override
 

Private Attributes

std::function< void(const char *, std::size_t)> onData
 
std::function< void()> onEof
 
std::function< void(int errnum)> onError
 

Additional Inherited Members

- Static Public Member Functions inherited from core::EventReceiver
static void atNextTick (const std::function< void(void)> &callBack)
 
- Protected Member Functions inherited from core::eventreceiver::ReadEventReceiver
 ReadEventReceiver (const std::string &name, const utils::Timeval &timeout)
 
virtual void readTimeout ()
 
- Protected Member Functions inherited from core::DescriptorEventReceiver
bool enable (int fd)
 
void disable ()
 
void suspend ()
 
void resume ()
 
- Protected Member Functions inherited from core::Observer
void observed ()
 
void unObserved ()
 
 Observer ()=default
 
 Observer (Observer &)=delete
 
 Observer (Observer &&)=delete
 
virtual ~Observer ()
 
- Protected Member Functions inherited from core::EventReceiver
virtual ~EventReceiver ()=default
 
 EventReceiver (const std::string &name)
 
 EventReceiver (EventReceiver &)=delete
 
 EventReceiver (EventReceiver &&)=delete
 
EventReceiveroperator= (EventReceiver &)=delete
 
EventReceiveroperator= (EventReceiver &&)=delete
 
virtual void destruct ()
 
void span ()
 
void relax ()
 
const std::string & getName () const
 
- Static Protected Member Functions inherited from core::EventReceiver
static void atNextTick (const std::function< void(void)> &callBack)
 

Detailed Description

Definition at line 34 of file PipeSink.h.

Constructor & Destructor Documentation

◆ PipeSink() [1/2]

core::pipe::PipeSink::PipeSink ( const PipeSink & )
delete

◆ PipeSink() [2/2]

core::pipe::PipeSink::PipeSink ( int fd)
explicit

Definition at line 38 of file PipeSink.cpp.

39 : core::eventreceiver::ReadEventReceiver("PipeSink fd = " + std::to_string(fd), 60) {
40 if (!ReadEventReceiver::enable(fd)) {
41 delete this;
42 }
43 }

References core::DescriptorEventReceiver::enable(), and PipeSink().

Referenced by core::pipe::Pipe::Pipe(), and PipeSink().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~PipeSink()

core::pipe::PipeSink::~PipeSink ( )
override

Definition at line 45 of file PipeSink.cpp.

45 {
47 }
int close(int fd)
Definition unistd.cpp:45

References core::DescriptorEventReceiver::getRegisteredFd().

Here is the call graph for this function:

Member Function Documentation

◆ operator=()

PipeSink & core::pipe::PipeSink::operator= ( const PipeSink & )
delete

◆ readEvent()

void core::pipe::PipeSink::readEvent ( )
overrideprivatevirtual

Implements core::eventreceiver::ReadEventReceiver.

Definition at line 49 of file PipeSink.cpp.

49 {
50 // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays, hicpp-avoid-c-arrays, modernize-avoid-c-arrays)
51 static char chunk[MAX_READ_JUNKSIZE];
52
53 const ssize_t ret = core::system::read(getRegisteredFd(), chunk, MAX_READ_JUNKSIZE);
54
55 if (ret > 0) {
56 if (onData) {
57 onData(chunk, static_cast<std::size_t>(ret));
58 }
59 } else {
60 ReadEventReceiver::disable();
61
62 if (ret == 0) {
63 if (onEof) {
64 onEof();
65 }
66 } else {
67 if (onError) {
68 onError(errno);
69 }
70 }
71 }
72 }
#define MAX_READ_JUNKSIZE
Definition PipeSink.cpp:33
std::function< void(const char *, std::size_t)> onData
Definition PipeSink.h:51
std::function< void()> onEof
Definition PipeSink.h:52
std::function< void(int errnum)> onError
Definition PipeSink.h:53
ssize_t read(int fd, void *buf, std::size_t count)
Definition unistd.cpp:35

References core::DescriptorEventReceiver::disable(), core::DescriptorEventReceiver::getRegisteredFd(), and core::system::read().

Here is the call graph for this function:

◆ setOnData()

void core::pipe::PipeSink::setOnData ( const std::function< void(const char *, std::size_t)> & onData)

Definition at line 74 of file PipeSink.cpp.

74 {
75 this->onData = onData;
76 }

◆ setOnEof()

void core::pipe::PipeSink::setOnEof ( const std::function< void()> & onEof)

Definition at line 78 of file PipeSink.cpp.

78 {
79 this->onEof = onEof;
80 }

◆ setOnError()

void core::pipe::PipeSink::setOnError ( const std::function< void(int)> & onError)

Definition at line 82 of file PipeSink.cpp.

82 {
83 this->onError = onError;
84 }

◆ unobservedEvent()

void core::pipe::PipeSink::unobservedEvent ( )
overrideprivatevirtual

Implements core::Observer.

Definition at line 86 of file PipeSink.cpp.

86 {
87 delete this;
88 }

Member Data Documentation

◆ onData

std::function<void(const char*, std::size_t)> core::pipe::PipeSink::onData
private

Definition at line 51 of file PipeSink.h.

◆ onEof

std::function<void()> core::pipe::PipeSink::onEof
private

Definition at line 52 of file PipeSink.h.

◆ onError

std::function<void(int errnum)> core::pipe::PipeSink::onError
private

Definition at line 53 of file PipeSink.h.


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