2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "core/socket/stream/SocketReader.h"
44#ifndef DOXYGEN_SHOULD_SKIP_THIS
46#include "core/system/socket.h"
53namespace core::socket::
stream {
56 const std::function<
void(
int)>& onStatus,
58 std::size_t blockSize,
59 const utils::
Timeval& terminateTimeout)
67 const std::size_t available =
doRead();
93 size +=
static_cast<std::size_t>(retRead);
99 }
else if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) {
119 const std::size_t maxReturn = std::min(chunkLen,
size);
int getRegisteredFd() const
void setTimeout(const utils::Timeval &timeout)
ReadEventReceiver(const std::string &name, const utils::Timeval &timeout)
void signalEvent(int sigNum) final
SocketReader(const std::string &instanceName, const std::function< void(int)> &onStatus, const utils::Timeval &timeout, std::size_t blockSize, const utils::Timeval &terminateTimeout)
std::vector< char > readBuffer
std::size_t readFromPeer(char *chunk, std::size_t chunkLen)
void setBlockSize(std::size_t readBlockSize)
utils::Timeval terminateTimeout
virtual void onReceivedFromPeer(std::size_t available)=0
virtual ssize_t read(char *chunk, std::size_t chunkLen)
std::function< void(int)> onStatus
Timeval(const Timeval &timeVal) noexcept=default
ssize_t recv(int sockfd, void *buf, std::size_t len, int flags)