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#ifndef CORE_SOCKET_STREAM_SOCKETCONTEXT_H
43#define CORE_SOCKET_STREAM_SOCKETCONTEXT_H
45#include "core/socket/SocketContext.h"
51namespace core::socket::
stream {
56#ifndef DOXYGEN_SHOULD_SKIP_THIS
64namespace core::socket::
stream {
75 using Super::readFromPeer;
76 using Super::sendToPeer;
78 void sendToPeer(
const char* chunk, std::size_t chunkLen)
const final;
82 std::size_t
readFromPeer(
char* chunk, std::size_t chunklen)
const final;
88 void close()
override;
115 static std::string
timePointToString(
const std::chrono::time_point<std::chrono::system_clock>& timePoint);
117 durationToString(
const std::chrono::time_point<std::chrono::system_clock>& bevore,
118 const std::chrono::time_point<std::chrono::system_clock>& later = std::chrono::system_clock::now());
130 template <
typename PhysicalSocketT,
class SocketReaderT,
class SocketWriterT,
typename ConfigT>
core::socket::stream::SocketContext * create(core::socket::stream::SocketConnection *socketConnection) override
core::socket::stream::SocketContext * create(core::socket::stream::SocketConnection *socketConnection) override
bool onSignal(int signum) override
void onConnected() override
void onDisconnected() override
std::size_t onReceivedFromPeer() override
EchoSocketContext(core::socket::stream::SocketConnection *socketConnection, Role role)
void sendToPeer(const std::string &data) const
std::string getOnlineSince() const override
SocketConnection * getSocketConnection() const
virtual void switchSocketContext(SocketContext *newSocketContext)
std::size_t getTotalProcessed() const override
SocketContext(core::socket::stream::SocketConnection *socketConnection)
std::size_t alreadyTotalQueued
static std::string timePointToString(const std::chrono::time_point< std::chrono::system_clock > &timePoint)
std::size_t readFromPeer(char *chunk, std::size_t chunklen) const final
~SocketContext() override
void onReadError(int errnum) override
virtual void onConnected()=0
void sendToPeer(const char *chunk, std::size_t chunkLen) const final
static std::string durationToString(const std::chrono::time_point< std::chrono::system_clock > &bevore, const std::chrono::time_point< std::chrono::system_clock > &later=std::chrono::system_clock::now())
std::size_t getTotalSent() const override
void shutdownWrite(bool forceClose=false)
core::socket::stream::SocketContext * newSocketContext
std::size_t alreadyTotalProcessed
void onWriteError(int errnum) override
std::size_t getTotalQueued() const override
bool streamToPeer(core::pipe::Source *source) const
core::socket::stream::SocketConnection * socketConnection
std::string getOnlineDuration() const override
virtual void onDisconnected()=0
void readFromPeer(std::size_t available)
std::chrono::time_point< std::chrono::system_clock > onlineSinceTimePoint
void setTimeout(const utils::Timeval &timeout) final
std::size_t getTotalRead() const override