SNode.C
Loading...
Searching...
No Matches
core::file::FileReader Class Reference

#include <FileReader.h>

Inheritance diagram for core::file::FileReader:
Collaboration diagram for core::file::FileReader:

Public Member Functions

bool isOpen () override
 
void start () final
 
void suspend () final
 
void resume () final
 
void stop () final
 
- 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
 
- Public Member Functions inherited from core::pipe::Source
 Source ()=default
 
 Source (Source &)=delete
 
 Source (Source &&) noexcept=default
 
Sourceoperator= (Source &)=delete
 
Sourceoperator= (Source &&) noexcept=default
 
virtual ~Source ()
 
void pipe (Sink *sink, const std::function< void(int)> &callback)
 
void pipe (const std::shared_ptr< Sink > &sink, const std::function< void(int)> &callback)
 
- Public Member Functions inherited from core::file::File
 File ()
 
 ~File () override
 
- Public Member Functions inherited from core::Descriptor
 Descriptor ()=delete
 
 Descriptor (const Descriptor &d)=delete
 
Descriptoroperator= (int fd)
 
Descriptoroperator= (const Descriptor &descriptor)=delete
 
Descriptoroperator= (Descriptor &&descriptor) noexcept
 
int getFd () const
 

Static Public Member Functions

static FileReaderopen (const std::string &path)
 
- Static Public Member Functions inherited from core::EventReceiver
static void atNextTick (const std::function< void(void)> &callBack)
 

Protected Attributes

int openErrno = 0
 
bool running = false
 

Private Member Functions

 FileReader (int fd, const std::string &name, std::size_t pufferSize, int openErrno)
 
void onEvent (const utils::Timeval &currentTime) override
 

Private Attributes

std::size_t pufferSize = 0
 
bool suspended = false
 

Additional Inherited Members

- Protected Member Functions inherited from core::EventReceiver
virtual ~EventReceiver ()=default
 
- Protected Member Functions inherited from core::pipe::Source
ssize_t send (const char *chunk, std::size_t chunkLen)
 
void eof ()
 
void error (int errnum)
 
- Protected Member Functions inherited from core::Descriptor
 Descriptor (int fd)
 
 Descriptor (Descriptor &&descriptor) noexcept
 
virtual ~Descriptor ()
 

Detailed Description

Definition at line 36 of file FileReader.h.

Constructor & Destructor Documentation

◆ FileReader()

core::file::FileReader::FileReader ( int fd,
const std::string & name,
std::size_t pufferSize,
int openErrno )
private

Definition at line 37 of file FileReader.cpp.

References FileReader(), and openErrno.

Referenced by FileReader().

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

Member Function Documentation

◆ isOpen()

bool core::file::FileReader::isOpen ( )
overridevirtual

Implements core::pipe::Source.

Definition at line 52 of file FileReader.cpp.

52 {
53 return getFd() >= 0;
54 }
int getFd() const

◆ onEvent()

void core::file::FileReader::onEvent ( const utils::Timeval & currentTime)
overrideprivatevirtual

Implements core::EventReceiver.

Definition at line 56 of file FileReader.cpp.

56 {
58 if (!suspended) {
59 std::vector<char> puffer(pufferSize);
60
61 const ssize_t ret = core::system::read(getFd(), puffer.data(), puffer.capacity());
62 if (ret > 0) {
63 if (this->send(puffer.data(), static_cast<std::size_t>(ret)) < 0) {
64 running = false;
65
66 this->error(errno);
67 }
68 } else {
69 running = false;
70
71 if (ret == 0) {
72 this->eof();
73 } else {
74 this->error(errno);
75 }
76 }
77
78 span();
79 }
80 } else {
81 delete this;
82 }
83 }
void error(int errnum)
Definition Source.cpp:87
ssize_t send(const char *chunk, std::size_t chunkLen)
Definition Source.cpp:68
ssize_t read(int fd, void *buf, std::size_t count)
Definition unistd.cpp:35
State eventLoopState()
Definition State.cpp:30

References core::pipe::Source::eof(), core::pipe::Source::error(), running, and suspended.

Here is the call graph for this function:

◆ open()

FileReader * core::file::FileReader::open ( const std::string & path)
static

Definition at line 44 of file FileReader.cpp.

44 {
45 errno = 0;
46
47 const int fd = core::system::open(path.c_str(), O_RDONLY);
48
49 return new FileReader(fd, "FileReader: " + path, MF_READSIZE, fd < 0 ? errno : 0);
50 }
constexpr int MF_READSIZE
FileReader(int fd, const std::string &name, std::size_t pufferSize, int openErrno)
int open(const char *pathname, int flags)
Definition unistd.cpp:30

◆ resume()

void core::file::FileReader::resume ( )
finalvirtual

Implements core::pipe::Source.

Definition at line 98 of file FileReader.cpp.

98 {
99 if (running) {
100 suspended = false;
101 span();
102 }
103 }

References running, and suspended.

◆ start()

void core::file::FileReader::start ( )
finalvirtual

Implements core::pipe::Source.

Definition at line 85 of file FileReader.cpp.

85 {
86 if (!running) {
87 running = true;
88 span();
89 }
90 }

References running.

◆ stop()

void core::file::FileReader::stop ( )
finalvirtual

Implements core::pipe::Source.

Definition at line 105 of file FileReader.cpp.

105 {
106 if (running) {
107 this->eof();
108
109 running = false;
110 span();
111 }
112 }

References core::pipe::Source::eof(), and running.

Here is the call graph for this function:

◆ suspend()

void core::file::FileReader::suspend ( )
finalvirtual

Implements core::pipe::Source.

Definition at line 92 of file FileReader.cpp.

92 {
93 if (running) {
94 suspended = true;
95 }
96 }

References running, and suspended.

Member Data Documentation

◆ openErrno

int core::file::FileReader::openErrno = 0
protected

Definition at line 61 of file FileReader.h.

Referenced by FileReader().

◆ pufferSize

std::size_t core::file::FileReader::pufferSize = 0
private

Definition at line 56 of file FileReader.h.

◆ running

bool core::file::FileReader::running = false
protected

Definition at line 62 of file FileReader.h.

Referenced by onEvent(), resume(), start(), stop(), and suspend().

◆ suspended

bool core::file::FileReader::suspended = false
private

Definition at line 58 of file FileReader.h.

Referenced by onEvent(), resume(), and suspend().


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