SNode.C
Loading...
Searching...
No Matches
apps::echo::model::EchoSocketContext Class Reference

#include <EchoSocketContext.h>

Inheritance diagram for apps::echo::model::EchoSocketContext:
Collaboration diagram for apps::echo::model::EchoSocketContext:

Public Types

enum class  Role { SERVER , CLIENT }

Public Member Functions

 EchoSocketContext (core::socket::stream::SocketConnection *socketConnection, Role role)
Public Member Functions inherited from core::socket::stream::SocketContext
 SocketContext (core::socket::stream::SocketConnection *socketConnection)
void sendToPeer (const char *chunk, std::size_t chunkLen) const final
bool streamToPeer (core::pipe::Source *source) const
void streamEof ()
std::size_t readFromPeer (char *chunk, std::size_t chunklen) const final
void setTimeout (const utils::Timeval &timeout) final
void shutdownRead ()
void shutdownWrite (bool forceClose=false)
void close () override
std::size_t getTotalSent () const override
std::size_t getTotalQueued () const override
std::size_t getTotalRead () const override
std::size_t getTotalProcessed () const override
std::string getOnlineSince () const override
std::string getOnlineDuration () const override
SocketConnectiongetSocketConnection () const
void sendToPeer (const std::string &data) const
Public Member Functions inherited from core::socket::SocketContext
 SocketContext (const SocketContext &)=delete
 SocketContext (SocketContext &&)=delete
SocketContextoperator= (const SocketContext &)=delete
SocketContextoperator= (SocketContext &&)=delete
void sendToPeer (const std::string &data) const

Private Member Functions

void onConnected () override
void onDisconnected () override
bool onSignal (int signum) override
std::size_t onReceivedFromPeer () override

Private Attributes

Role role

Additional Inherited Members

Protected Member Functions inherited from core::socket::stream::SocketContext
void onWriteError (int errnum) override
void onReadError (int errnum) override
std::size_t readFromPeer ()
Protected Member Functions inherited from core::socket::SocketContext
 SocketContext ()=default
virtual ~SocketContext ()

Detailed Description

Definition at line 60 of file EchoSocketContext.h.

Member Enumeration Documentation

◆ Role

Enumerator
SERVER 
CLIENT 

Definition at line 62 of file EchoSocketContext.h.

62{ SERVER, CLIENT };

Constructor & Destructor Documentation

◆ EchoSocketContext()

apps::echo::model::EchoSocketContext::EchoSocketContext ( core::socket::stream::SocketConnection * socketConnection,
Role role )
explicit

Definition at line 54 of file EchoSocketContext.cpp.

55 : core::socket::stream::SocketContext(socketConnection)
56 , role(role) {
57 }
core::socket::stream::SocketConnection * socketConnection

References role, and core::socket::stream::SocketContext::SocketContext().

Referenced by apps::echo::model::EchoClientSocketContextFactory::create(), and apps::echo::model::EchoServerSocketContextFactory::create().

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

Member Function Documentation

◆ onConnected()

void apps::echo::model::EchoSocketContext::onConnected ( )
overrideprivatevirtual

Implements core::socket::stream::SocketContext.

Definition at line 59 of file EchoSocketContext.cpp.

59 {
60 VLOG(1) << "Echo connected";
61
62 if (role == Role::CLIENT) {
63 sendToPeer("Hello peer! Nice to see you!!!");
64 }
65 }
void sendToPeer(const char *chunk, std::size_t chunkLen) const final

References CLIENT, role, and core::socket::SocketContext::sendToPeer().

Here is the call graph for this function:

◆ onDisconnected()

void apps::echo::model::EchoSocketContext::onDisconnected ( )
overrideprivatevirtual

Implements core::socket::stream::SocketContext.

Definition at line 67 of file EchoSocketContext.cpp.

67 {
68 VLOG(1) << "Echo disconnected";
69 }

◆ onReceivedFromPeer()

std::size_t apps::echo::model::EchoSocketContext::onReceivedFromPeer ( )
overrideprivatevirtual

Implements core::socket::SocketContext.

Definition at line 75 of file EchoSocketContext.cpp.

75 {
76 char chunk[4096];
77
78 const std::size_t chunklen = readFromPeer(chunk, 4096);
79
80 if (chunklen > 0) {
81 VLOG(1) << "Data to reflect: " << std::string(chunk, chunklen);
82 sendToPeer(chunk, chunklen);
83 }
84
85 return chunklen;
86 }

References core::socket::stream::SocketContext::readFromPeer(), and core::socket::stream::SocketContext::sendToPeer().

Here is the call graph for this function:

◆ onSignal()

bool apps::echo::model::EchoSocketContext::onSignal ( int signum)
overrideprivatevirtual

Implements core::socket::SocketContext.

Definition at line 71 of file EchoSocketContext.cpp.

71 {
72 return true;
73 }

Member Data Documentation

◆ role

Role apps::echo::model::EchoSocketContext::role
private

Definition at line 74 of file EchoSocketContext.h.

Referenced by EchoSocketContext(), and onConnected().


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